#// Copyright 2010 The Code Cavern

#//	bda_and_n(bda_ptr,bda_srcptr,bda_srcptr,bda_len)

.global bda_and_n
bda_and_n:
sub $4,%rcx
jc skiplp
.align 16
lp:
	mov (%rdx),%r8
	mov 8(%rdx),%r9
	and (%rsi),%r8
	and 8(%rsi),%r9
	lea 32(%rsi),%rsi
	mov 16(%rdx),%r10
	mov 24(%rdx),%r11
	lea 32(%rdi),%rdi
	and 16-32(%rsi),%r10
	and 24-32(%rsi),%r11
	sub $4,%rcx
	mov %r8,-32(%rdi)
	mov %r9,8-32(%rdi)
	mov %r10,16-32(%rdi)
	lea 32(%rdx),%rdx
	mov %r11,24-32(%rdi)
	jnc lp
skiplp:
cmp $-2,%rcx
je case2
jp case1
jl case0
case3:	mov 8(%rdx,%rcx,8),%rax
	and 8(%rsi,%rcx,8),%rax
	mov %rax,8(%rdi,%rcx,8)
case2:	mov 16(%rdx,%rcx,8),%rax
	and 16(%rsi,%rcx,8),%rax
	mov %rax,16(%rdi,%rcx,8)
case1:	mov 24(%rdx,%rcx,8),%rax
	and 24(%rsi,%rcx,8),%rax
	mov %rax,24(%rdi,%rcx,8)
case0:	ret
