// File: jswaff[P]prophet3/test/bitboards__test.cpp
// Function: test_rays()
void test_rays() {
    assert(bb_rays[D5][NORTH] == (bb_squares[D6] | bb_squares[D7] | bb_squares[D8]));
    assert(bb_rays[D5][SOUTH] == (bb_squares[D4] | bb_squares[D3] | bb_squares[D2] | bb_squares[D1]));
    assert(bb_rays[D5][WEST] == (bb_squares[C5] | bb_squares[B5] | bb_squares[A5]));
    assert(bb_rays[D5][EAST] == (bb_squares[E5] | bb_squares[F5] | bb_squares[G5] | bb_squares[H5]));
    assert(bb_rays[D5][NORTHEAST] == (bb_squares[E6] | bb_squares[F7] | bb_squares[G8]));
    assert(bb_rays[D5][SOUTHEAST] == (bb_squares[E4] | bb_squares[F3] | bb_squares[G2] | bb_squares[H1]));
    assert(bb_rays[D5][SOUTHWEST] == (bb_squares[C4] | bb_squares[B3] | bb_squares[A2]));
    assert(bb_rays[D5][NORTHWEST] == (bb_squares[C6] | bb_squares[B7] | bb_squares[A8]));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0xed805(%rip), %rax     # 0x106070
movq 0x6c0(%rax), %rax
leaq 0xecdf7(%rip), %rcx     # 0x105670
movq 0x98(%rcx), %rcx
leaq 0xecde9(%rip), %rdx     # 0x105670
orq 0x58(%rdx), %rcx
leaq 0xecdde(%rip), %rdx     # 0x105670
orq 0x18(%rdx), %rcx
cmpq %rcx, %rax
jne 0x1889d
jmp 0x188bc
leaq 0x2209b(%rip), %rdi     # 0x3a93f
leaq 0x21b39(%rip), %rsi     # 0x3a3e4
movl $0x86, %edx
leaq 0x220d1(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed7ad(%rip), %rax     # 0x106070
movq 0x6e0(%rax), %rax
leaq 0xecd9f(%rip), %rcx     # 0x105670
movq 0x118(%rcx), %rcx
leaq 0xecd91(%rip), %rdx     # 0x105670
orq 0x158(%rdx), %rcx
leaq 0xecd83(%rip), %rdx     # 0x105670
orq 0x198(%rdx), %rcx
leaq 0xecd75(%rip), %rdx     # 0x105670
orq 0x1d8(%rdx), %rcx
cmpq %rcx, %rax
jne 0x18909
jmp 0x18928
leaq 0x22089(%rip), %rdi     # 0x3a999
leaq 0x21acd(%rip), %rsi     # 0x3a3e4
movl $0x87, %edx
leaq 0x22065(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed741(%rip), %rax     # 0x106070
movq 0x6f0(%rax), %rax
leaq 0xecd33(%rip), %rcx     # 0x105670
movq 0xd0(%rcx), %rcx
leaq 0xecd25(%rip), %rdx     # 0x105670
orq 0xc8(%rdx), %rcx
leaq 0xecd17(%rip), %rdx     # 0x105670
orq 0xc0(%rdx), %rcx
cmpq %rcx, %rax
jne 0x18967
jmp 0x18986
leaq 0x22085(%rip), %rdi     # 0x3a9f3
leaq 0x21a6f(%rip), %rsi     # 0x3a3e4
movl $0x88, %edx
leaq 0x22007(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed6e3(%rip), %rax     # 0x106070
movq 0x6d0(%rax), %rax
leaq 0xeccd5(%rip), %rcx     # 0x105670
movq 0xe0(%rcx), %rcx
leaq 0xeccc7(%rip), %rdx     # 0x105670
orq 0xe8(%rdx), %rcx
leaq 0xeccb9(%rip), %rdx     # 0x105670
orq 0xf0(%rdx), %rcx
leaq 0xeccab(%rip), %rdx     # 0x105670
orq 0xf8(%rdx), %rcx
cmpq %rcx, %rax
jne 0x189d3
jmp 0x189f2
leaq 0x22061(%rip), %rdi     # 0x3aa3b
leaq 0x21a03(%rip), %rsi     # 0x3a3e4
movl $0x89, %edx
leaq 0x21f9b(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed677(%rip), %rax     # 0x106070
movq 0x6c8(%rax), %rax
leaq 0xecc69(%rip), %rcx     # 0x105670
movq 0xa0(%rcx), %rcx
leaq 0xecc5b(%rip), %rdx     # 0x105670
orq 0x68(%rdx), %rcx
leaq 0xecc50(%rip), %rdx     # 0x105670
orq 0x30(%rdx), %rcx
cmpq %rcx, %rax
jne 0x18a2b
jmp 0x18a4a
leaq 0x22062(%rip), %rdi     # 0x3aa94
leaq 0x219ab(%rip), %rsi     # 0x3a3e4
movl $0x8a, %edx
leaq 0x21f43(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed61f(%rip), %rax     # 0x106070
movq 0x6d8(%rax), %rax
leaq 0xecc11(%rip), %rcx     # 0x105670
movq 0x120(%rcx), %rcx
leaq 0xecc03(%rip), %rdx     # 0x105670
orq 0x168(%rdx), %rcx
leaq 0xecbf5(%rip), %rdx     # 0x105670
orq 0x1b0(%rdx), %rcx
leaq 0xecbe7(%rip), %rdx     # 0x105670
orq 0x1f8(%rdx), %rcx
cmpq %rcx, %rax
jne 0x18a97
jmp 0x18ab6
leaq 0x22043(%rip), %rdi     # 0x3aae1
leaq 0x2193f(%rip), %rsi     # 0x3a3e4
movl $0x8b, %edx
leaq 0x21ed7(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed5b3(%rip), %rax     # 0x106070
movq 0x6e8(%rax), %rax
leaq 0xecba5(%rip), %rcx     # 0x105670
movq 0x110(%rcx), %rcx
leaq 0xecb97(%rip), %rdx     # 0x105670
orq 0x148(%rdx), %rcx
leaq 0xecb89(%rip), %rdx     # 0x105670
orq 0x180(%rdx), %rcx
cmpq %rcx, %rax
jne 0x18af5
jmp 0x18b14
leaq 0x22043(%rip), %rdi     # 0x3ab3f
leaq 0x218e1(%rip), %rsi     # 0x3a3e4
movl $0x8c, %edx
leaq 0x21e79(%rip), %rcx     # 0x3a988
callq 0x20c0
leaq 0xed555(%rip), %rax     # 0x106070
movq 0x6f8(%rax), %rax
leaq 0xecb47(%rip), %rcx     # 0x105670
movq 0x90(%rcx), %rcx
leaq 0xecb39(%rip), %rdx     # 0x105670
orq 0x48(%rdx), %rcx
leaq 0xecb2e(%rip), %rdx     # 0x105670
orq (%rdx), %rcx
cmpq %rcx, %rax
jne 0x18b4c
jmp 0x18b6b
leaq 0x22039(%rip), %rdi     # 0x3ab8c
leaq 0x2188a(%rip), %rsi     # 0x3a3e4
movl $0x8d, %edx
leaq 0x21e22(%rip), %rcx     # 0x3a988
callq 0x20c0
popq %rbp
retq
nopl (%rax)