	.text
	.intel_syntax noprefix
	.file	"bitmap_ops.c"
	.globl	bitmap_aligned_and_sse4         # -- Begin function bitmap_aligned_and_sse4
	.p2align	4, 0x90
	.type	bitmap_aligned_and_sse4,@function
bitmap_aligned_and_sse4:                # @bitmap_aligned_and_sse4
# %bb.0:
	push	rbp
	mov	rbp, rsp
	push	rbx
	and	rsp, -8
	test	rcx, rcx
	jle	.LBB0_16
# %bb.1:
	cmp	rcx, 31
	ja	.LBB0_7
# %bb.2:
	xor	r11d, r11d
.LBB0_3:
	mov	r8, r11
	not	r8
	add	r8, rcx
	mov	r9, rcx
	and	r9, 3
	je	.LBB0_5
	.p2align	4, 0x90
.LBB0_4:                                # =>This Inner Loop Header: Depth=1
	movzx	eax, byte ptr [rsi + r11]
	and	al, byte ptr [rdi + r11]
	mov	byte ptr [rdx + r11], al
	add	r11, 1
	add	r9, -1
	jne	.LBB0_4
.LBB0_5:
	cmp	r8, 3
	jb	.LBB0_16
	.p2align	4, 0x90
.LBB0_6:                                # =>This Inner Loop Header: Depth=1
	movzx	eax, byte ptr [rsi + r11]
	and	al, byte ptr [rdi + r11]
	mov	byte ptr [rdx + r11], al
	movzx	eax, byte ptr [rsi + r11 + 1]
	and	al, byte ptr [rdi + r11 + 1]
	mov	byte ptr [rdx + r11 + 1], al
	movzx	eax, byte ptr [rsi + r11 + 2]
	and	al, byte ptr [rdi + r11 + 2]
	mov	byte ptr [rdx + r11 + 2], al
	movzx	eax, byte ptr [rsi + r11 + 3]
	and	al, byte ptr [rdi + r11 + 3]
	mov	byte ptr [rdx + r11 + 3], al
	add	r11, 4
	cmp	rcx, r11
	jne	.LBB0_6
	jmp	.LBB0_16
.LBB0_7:
	lea	r9, [rdx + rcx]
	lea	rax, [rdi + rcx]
	cmp	rax, rdx
	seta	r10b
	lea	rax, [rsi + rcx]
	cmp	r9, rdi
	seta	bl
	cmp	rax, rdx
	seta	r8b
	cmp	r9, rsi
	seta	r9b
	xor	r11d, r11d
	test	r10b, bl
	jne	.LBB0_3
# %bb.8:
	and	r8b, r9b
	jne	.LBB0_3
# %bb.9:
	mov	r11, rcx
	and	r11, -32
	lea	rax, [r11 - 32]
	mov	r9, rax
	shr	r9, 5
	add	r9, 1
	test	rax, rax
	je	.LBB0_10
# %bb.11:
	mov	r10, r9
	and	r10, -2
	neg	r10
	xor	r8d, r8d
	.p2align	4, 0x90
.LBB0_12:                               # =>This Inner Loop Header: Depth=1
	movups	xmm0, xmmword ptr [rdi + r8]
	movups	xmm1, xmmword ptr [rdi + r8 + 16]
	movups	xmm2, xmmword ptr [rsi + r8]
	andps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 16]
	andps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8], xmm2
	movups	xmmword ptr [rdx + r8 + 16], xmm0
	movups	xmm0, xmmword ptr [rdi + r8 + 32]
	movups	xmm1, xmmword ptr [rdi + r8 + 48]
	movups	xmm2, xmmword ptr [rsi + r8 + 32]
	andps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 48]
	andps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8 + 32], xmm2
	movups	xmmword ptr [rdx + r8 + 48], xmm0
	add	r8, 64
	add	r10, 2
	jne	.LBB0_12
# %bb.13:
	test	r9b, 1
	je	.LBB0_15
.LBB0_14:
	movups	xmm0, xmmword ptr [rdi + r8]
	movups	xmm1, xmmword ptr [rdi + r8 + 16]
	movups	xmm2, xmmword ptr [rsi + r8]
	andps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 16]
	andps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8], xmm2
	movups	xmmword ptr [rdx + r8 + 16], xmm0
.LBB0_15:
	cmp	r11, rcx
	jne	.LBB0_3
.LBB0_16:
	lea	rsp, [rbp - 8]
	pop	rbx
	pop	rbp
	ret
.LBB0_10:
	xor	r8d, r8d
	test	r9b, 1
	jne	.LBB0_14
	jmp	.LBB0_15
.Lfunc_end0:
	.size	bitmap_aligned_and_sse4, .Lfunc_end0-bitmap_aligned_and_sse4
                                        # -- End function
	.globl	bitmap_aligned_or_sse4          # -- Begin function bitmap_aligned_or_sse4
	.p2align	4, 0x90
	.type	bitmap_aligned_or_sse4,@function
bitmap_aligned_or_sse4:                 # @bitmap_aligned_or_sse4
# %bb.0:
	push	rbp
	mov	rbp, rsp
	push	rbx
	and	rsp, -8
	test	rcx, rcx
	jle	.LBB1_16
# %bb.1:
	cmp	rcx, 31
	ja	.LBB1_7
# %bb.2:
	xor	r11d, r11d
.LBB1_3:
	mov	r8, r11
	not	r8
	add	r8, rcx
	mov	r9, rcx
	and	r9, 3
	je	.LBB1_5
	.p2align	4, 0x90
.LBB1_4:                                # =>This Inner Loop Header: Depth=1
	movzx	eax, byte ptr [rsi + r11]
	or	al, byte ptr [rdi + r11]
	mov	byte ptr [rdx + r11], al
	add	r11, 1
	add	r9, -1
	jne	.LBB1_4
.LBB1_5:
	cmp	r8, 3
	jb	.LBB1_16
	.p2align	4, 0x90
.LBB1_6:                                # =>This Inner Loop Header: Depth=1
	movzx	eax, byte ptr [rsi + r11]
	or	al, byte ptr [rdi + r11]
	mov	byte ptr [rdx + r11], al
	movzx	eax, byte ptr [rsi + r11 + 1]
	or	al, byte ptr [rdi + r11 + 1]
	mov	byte ptr [rdx + r11 + 1], al
	movzx	eax, byte ptr [rsi + r11 + 2]
	or	al, byte ptr [rdi + r11 + 2]
	mov	byte ptr [rdx + r11 + 2], al
	movzx	eax, byte ptr [rsi + r11 + 3]
	or	al, byte ptr [rdi + r11 + 3]
	mov	byte ptr [rdx + r11 + 3], al
	add	r11, 4
	cmp	rcx, r11
	jne	.LBB1_6
	jmp	.LBB1_16
.LBB1_7:
	lea	r9, [rdx + rcx]
	lea	rax, [rdi + rcx]
	cmp	rax, rdx
	seta	r10b
	lea	rax, [rsi + rcx]
	cmp	r9, rdi
	seta	bl
	cmp	rax, rdx
	seta	r8b
	cmp	r9, rsi
	seta	r9b
	xor	r11d, r11d
	test	r10b, bl
	jne	.LBB1_3
# %bb.8:
	and	r8b, r9b
	jne	.LBB1_3
# %bb.9:
	mov	r11, rcx
	and	r11, -32
	lea	rax, [r11 - 32]
	mov	r9, rax
	shr	r9, 5
	add	r9, 1
	test	rax, rax
	je	.LBB1_10
# %bb.11:
	mov	r10, r9
	and	r10, -2
	neg	r10
	xor	r8d, r8d
	.p2align	4, 0x90
.LBB1_12:                               # =>This Inner Loop Header: Depth=1
	movups	xmm0, xmmword ptr [rdi + r8]
	movups	xmm1, xmmword ptr [rdi + r8 + 16]
	movups	xmm2, xmmword ptr [rsi + r8]
	orps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 16]
	orps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8], xmm2
	movups	xmmword ptr [rdx + r8 + 16], xmm0
	movups	xmm0, xmmword ptr [rdi + r8 + 32]
	movups	xmm1, xmmword ptr [rdi + r8 + 48]
	movups	xmm2, xmmword ptr [rsi + r8 + 32]
	orps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 48]
	orps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8 + 32], xmm2
	movups	xmmword ptr [rdx + r8 + 48], xmm0
	add	r8, 64
	add	r10, 2
	jne	.LBB1_12
# %bb.13:
	test	r9b, 1
	je	.LBB1_15
.LBB1_14:
	movups	xmm0, xmmword ptr [rdi + r8]
	movups	xmm1, xmmword ptr [rdi + r8 + 16]
	movups	xmm2, xmmword ptr [rsi + r8]
	orps	xmm2, xmm0
	movups	xmm0, xmmword ptr [rsi + r8 + 16]
	orps	xmm0, xmm1
	movups	xmmword ptr [rdx + r8], xmm2
	movups	xmmword ptr [rdx + r8 + 16], xmm0
.LBB1_15:
	cmp	r11, rcx
	jne	.LBB1_3
.LBB1_16:
	lea	rsp, [rbp - 8]
	pop	rbx
	pop	rbp
	ret
.LBB1_10:
	xor	r8d, r8d
	test	r9b, 1
	jne	.LBB1_14
	jmp	.LBB1_15
.Lfunc_end1:
	.size	bitmap_aligned_or_sse4, .Lfunc_end1-bitmap_aligned_or_sse4
                                        # -- End function
	.ident	"Ubuntu clang version 11.1.0-6"
	.section	".note.GNU-stack","",@progbits
	.addrsig
