	.file	"extr_mlx4_port.c___mlx4_register_vlan.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"with"
.LC1:
	.string	"without"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC2:
	.string	"Registering VLAN: %d for port %d %s duplicate\n"
	.align 8
.LC3:
	.string	"vlan %u is already registered.\n"
	.align 8
.LC4:
	.string	"register vlan: expected duplicate vlan %u on port %d index %d\n"
	.align 8
.LC5:
	.string	"Fail to allocate duplicate VLAN table entry\n"
	.align 8
.LC6:
	.string	"High Availability for virtual functions may not work as expected\n"
	.section	.rodata.str1.1
.LC7:
	.string	"Failed adding vlan: %u\n"
	.section	.rodata.str1.8
	.align 8
.LC8:
	.string	"Failed adding duplicate vlan: %u\n"
	.text
	.p2align 4
	.globl	__mlx4_register_vlan
	.type	__mlx4_register_vlan, @function
__mlx4_register_vlan:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	mov	r15, rsi
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13d, 96
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12d, edx
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rdi
	sub	rsp, 88
	.cfi_def_cfa_offset 144
	mov	QWORD PTR 40[rsp], rsi
	mov	QWORD PTR 64[rsp], rcx
	mov	QWORD PTR 48[rsp], rdi
	call	mlx4_priv@PLT
	lea	r9, [r15+r15*2]
	mov	rdi, rbx
	sal	r9, 4
	add	r9, QWORD PTR [rax]
	mov	r14, r9
	call	mlx4_is_mf_bonded@PLT
	cmp	r15, 1
	mov	rdi, rbx
	sete	dl
	mov	DWORD PTR 60[rsp], eax
	mov	ebp, eax
	mov	eax, 48
	movzx	edx, dl
	cmovne	r13, rax
	add	rdx, 1
	mov	QWORD PTR 72[rsp], rdx
	call	mlx4_priv@PLT
	mov	rdi, rbx
	add	r13, QWORD PTR [rax]
	call	mlx4_need_mf_bond@PLT
	test	ebp, ebp
	mov	rcx, r15
	mov	rdi, rbx
	mov	DWORD PTR 4[rsp], eax
	lea	r8, .LC0[rip]
	lea	rax, .LC1[rip]
	mov	edx, r12d
	cmove	r8, rax
	lea	rsi, .LC2[rip]
	xor	eax, eax
	call	mlx4_dbg@PLT
	mov	edi, DWORD PTR 4[rsp]
	lea	rcx, 32[r14]
	mov	QWORD PTR 32[rsp], rcx
	test	edi, edi
	je	.L4
	lea	rbp, 32[r13]
	cmp	r15, 1
	je	.L75
	mov	rdi, rbp
	call	mutex_lock@PLT
	mov	esi, DWORD PTR SINGLE_DEPTH_NESTING[rip]
	lea	rdi, 32[r14]
	call	mutex_lock_nested@PLT
	mov	rax, QWORD PTR 8[r14]
	cmp	QWORD PTR [r14], rax
	je	.L37
.L71:
	mov	r15d, DWORD PTR MLX4_VLAN_REGULAR[rip]
	cmp	DWORD PTR MLX4_MAX_VLAN_NUM[rip], r15d
	jle	.L9
	mov	ebx, -1
	mov	DWORD PTR 8[rsp], -1
	movsx	rbp, r15d
	mov	eax, ebx
	sal	rbp, 3
	mov	rbx, r14
	mov	r14d, eax
	.p2align 4,,10
	.p2align 3
.L12:
	mov	rax, QWORD PTR 40[rbx]
	mov	rdi, QWORD PTR [rax+rbp]
	call	be32_to_cpu@PLT
	and	eax, DWORD PTR MLX4_VLAN_MASK[rip]
	cmp	eax, r12d
	mov	eax, DWORD PTR 8[rsp]
	cmove	eax, r15d
	mov	DWORD PTR 8[rsp], eax
	mov	rax, QWORD PTR 40[r13]
	mov	rdi, QWORD PTR [rax+rbp]
	call	be32_to_cpu@PLT
	and	eax, DWORD PTR MLX4_VLAN_MASK[rip]
	cmp	eax, r12d
	mov	eax, DWORD PTR MLX4_MAX_VLAN_NUM[rip]
	cmove	r14d, r15d
	add	r15d, 1
	add	rbp, 8
	cmp	eax, r15d
	jg	.L12
	mov	edi, DWORD PTR 8[rsp]
	mov	ecx, r14d
	mov	r14, rbx
	mov	ebx, ecx
	mov	ecx, edi
	mov	esi, ebx
	not	ecx
	not	esi
	shr	ecx, 31
	cmp	edi, ebx
	setne	dl
	shr	esi, 31
	and	edx, ecx
	and	edx, esi
	xor	edx, 1
	movzx	r10d, dl
	mov	edx, ebx
	shr	edx, 31
	mov	DWORD PTR 56[rsp], r10d
	mov	esi, edx
	test	cl, cl
	je	.L13
	test	dl, dl
	je	.L13
	mov	rdx, QWORD PTR 16[r13]
	movsx	r15, edi
	mov	esi, DWORD PTR [rdx+r15*4]
	mov	edx, 0
	test	esi, esi
	cmove	edx, r10d
	mov	DWORD PTR 56[rsp], edx
.L15:
	mov	r15d, DWORD PTR MLX4_VLAN_REGULAR[rip]
	cmp	r15d, eax
	jge	.L9
	mov	ebx, -1
	jmp	.L39
	.p2align 4,,10
	.p2align 3
.L75:
	mov	rdi, rcx
	call	mutex_lock@PLT
	mov	esi, DWORD PTR SINGLE_DEPTH_NESTING[rip]
	mov	rdi, rbp
	call	mutex_lock_nested@PLT
	mov	rax, QWORD PTR 8[r14]
	cmp	QWORD PTR [r14], rax
	jne	.L71
.L37:
	mov	r15d, DWORD PTR ENOSPC[rip]
	mov	ecx, DWORD PTR 4[rsp]
	neg	r15d
	test	ecx, ecx
	jne	.L76
.L34:
	mov	rdi, QWORD PTR 32[rsp]
	call	mutex_unlock@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L13:
	test	ebx, ebx
	js	.L15
	mov	rcx, QWORD PTR 16[r14]
	movsx	rdx, ebx
	mov	ecx, DWORD PTR [rcx+rdx*4]
	test	ecx, ecx
	jne	.L77
.L16:
	mov	r15d, DWORD PTR MLX4_VLAN_REGULAR[rip]
	cmp	r15d, eax
	jge	.L78
.L39:
	movzx	eax, BYTE PTR 56[rsp]
	movsx	rcx, r15d
	mov	ebp, -1
	mov	QWORD PTR 24[rsp], r13
	sal	rcx, 2
	mov	r13d, ebp
	mov	rbp, r14
	mov	r14d, r15d
	and	eax, 1
	mov	r15, rcx
	mov	BYTE PTR 16[rsp], al
	.p2align 4,,10
	.p2align 3
.L26:
	mov	rax, QWORD PTR 16[rbp]
	mov	eax, DWORD PTR [rax+r15]
	test	eax, eax
	jne	.L19
	mov	eax, DWORD PTR 4[rsp]
	test	r13d, r13d
	cmovs	r13d, r14d
	test	eax, eax
	setne	al
	test	BYTE PTR 16[rsp], al
	je	.L21
	test	ebx, ebx
	jns	.L21
	mov	rax, QWORD PTR 24[rsp]
	mov	rax, QWORD PTR 16[rax]
	mov	eax, DWORD PTR [rax+r15]
	test	eax, eax
	cmove	ebx, r14d
.L21:
	mov	rax, QWORD PTR 24[rbp]
	mov	edx, DWORD PTR [rax+r15]
	test	edx, edx
	je	.L22
.L19:
	lea	rax, [r15+r15]
	mov	QWORD PTR 8[rsp], rax
	mov	rax, QWORD PTR 40[rbp]
	mov	rdi, QWORD PTR [rax+r15*2]
	call	be32_to_cpu@PLT
	and	eax, DWORD PTR MLX4_VLAN_MASK[rip]
	cmp	eax, r12d
	je	.L79
.L22:
	add	r14d, 1
	add	r15, 4
	cmp	DWORD PTR MLX4_MAX_VLAN_NUM[rip], r14d
	jg	.L26
	mov	eax, ebx
	mov	r14, rbp
	mov	ebp, r13d
	mov	r13, QWORD PTR 24[rsp]
	shr	eax, 31
	mov	esi, eax
.L18:
	mov	r9d, DWORD PTR 4[rsp]
	test	r9d, r9d
	setne	al
	je	.L27
	test	sil, sil
	je	.L27
	mov	r8d, DWORD PTR 60[rsp]
	test	r8d, r8d
	jne	.L80
.L28:
	test	ebp, ebp
	jns	.L45
.L40:
	mov	r15d, DWORD PTR ENOMEM[rip]
	neg	r15d
.L8:
	mov	ecx, DWORD PTR 4[rsp]
	test	ecx, ecx
	je	.L34
.L76:
	add	r13, 32
	cmp	QWORD PTR 40[rsp], 2
	je	.L81
	mov	rdi, r13
	call	mutex_unlock@PLT
	mov	rdi, QWORD PTR 32[rsp]
	call	mutex_unlock@PLT
.L1:
	add	rsp, 88
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	mov	eax, r15d
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L4:
	.cfi_restore_state
	lea	rdi, 32[r14]
	call	mutex_lock@PLT
	mov	rax, QWORD PTR 8[r14]
	cmp	QWORD PTR [r14], rax
	je	.L37
	mov	r15d, DWORD PTR MLX4_VLAN_REGULAR[rip]
	cmp	DWORD PTR MLX4_MAX_VLAN_NUM[rip], r15d
	mov	ebx, -1
	mov	DWORD PTR 56[rsp], 1
	jg	.L39
	jmp	.L40
	.p2align 4,,10
	.p2align 3
.L79:
	mov	rdi, QWORD PTR 48[rsp]
	mov	edx, r12d
	xor	eax, eax
	mov	QWORD PTR 16[rsp], r15
	lea	rsi, .LC3[rip]
	mov	r13, QWORD PTR 24[rsp]
	mov	r15d, r14d
	call	mlx4_dbg@PLT
	mov	rax, QWORD PTR 64[rsp]
	mov	rcx, QWORD PTR 16[rsp]
	mov	r11d, DWORD PTR 60[rsp]
	mov	DWORD PTR [rax], r14d
	mov	rax, QWORD PTR 16[rbp]
	add	rax, rcx
	add	DWORD PTR [rax], 1
	test	r11d, r11d
	jne	.L23
.L73:
	xor	r15d, r15d
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L81:
	mov	rdi, QWORD PTR 32[rsp]
	call	mutex_unlock@PLT
	mov	rdi, r13
	call	mutex_unlock@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L27:
	mov	edi, DWORD PTR 56[rsp]
	test	edi, edi
	je	.L28
	test	al, al
	je	.L28
.L29:
	mov	rax, QWORD PTR 16[r14]
	movsx	rbp, ebx
	lea	rcx, 0[0+rbp*8]
	mov	DWORD PTR [rax+rbp*4], 1
	mov	rax, QWORD PTR 24[r14]
	mov	r15, rcx
	mov	QWORD PTR 8[rsp], rcx
	add	r15, QWORD PTR 40[r14]
	mov	DWORD PTR [rax+rbp*4], 0
	mov	edi, DWORD PTR MLX4_VLAN_VALID[rip]
	or	edi, r12d
	call	cpu_to_be32@PLT
	mov	rsi, QWORD PTR 40[rsp]
	mov	rdi, QWORD PTR 48[rsp]
	mov	QWORD PTR [r15], rax
	mov	rdx, QWORD PTR 40[r14]
	call	mlx4_set_port_vlan_table@PLT
	mov	edi, eax
	mov	r15d, eax
	call	unlikely@PLT
	mov	rcx, QWORD PTR 8[rsp]
	test	rax, rax
	jne	.L82
	mov	esi, DWORD PTR 60[rsp]
	add	QWORD PTR [r14], 1
	test	esi, esi
	jne	.L83
.L32:
	mov	rax, QWORD PTR 64[rsp]
	mov	DWORD PTR [rax], ebx
	jmp	.L8
.L77:
	mov	rax, QWORD PTR 40[r13]
	mov	BYTE PTR 8[rsp], sil
	mov	rdi, QWORD PTR [rax+rdx*8]
	call	be32_to_cpu@PLT
	and	eax, DWORD PTR MLX4_VLAN_MASK[rip]
	movzx	esi, BYTE PTR 8[rsp]
	cmp	eax, r12d
	mov	eax, DWORD PTR MLX4_MAX_VLAN_NUM[rip]
	je	.L16
	mov	DWORD PTR 56[rsp], 0
	jmp	.L15
.L80:
	mov	rbx, QWORD PTR 48[rsp]
	lea	rsi, .LC5[rip]
	xor	eax, eax
	mov	rdi, rbx
	call	mlx4_warn@PLT
	lea	rsi, .LC6[rip]
	mov	rdi, rbx
	xor	eax, eax
	call	mlx4_warn@PLT
	mov	DWORD PTR 60[rsp], 0
	jmp	.L28
.L83:
	mov	rax, QWORD PTR 16[r13]
	add	rcx, QWORD PTR 40[r13]
	mov	r15, rcx
	mov	DWORD PTR [rax+rbp*4], 0
	mov	rax, QWORD PTR 24[r13]
	mov	DWORD PTR [rax+rbp*4], 1
	mov	edi, DWORD PTR MLX4_VLAN_VALID[rip]
	or	edi, r12d
	call	cpu_to_be32@PLT
	mov	rdi, QWORD PTR 48[rsp]
	mov	rsi, QWORD PTR 72[rsp]
	mov	QWORD PTR [r15], rax
	mov	rdx, QWORD PTR 40[r13]
	call	mlx4_set_port_vlan_table@PLT
	mov	edi, eax
	mov	r15d, eax
	call	unlikely@PLT
	test	rax, rax
	jne	.L84
	add	QWORD PTR 0[r13], 1
	jmp	.L32
	.p2align 4,,10
	.p2align 3
.L23:
	mov	QWORD PTR 16[rsp], rcx
	mov	rax, QWORD PTR 40[r13]
	mov	rcx, QWORD PTR 8[rsp]
	mov	rdi, QWORD PTR [rax+rcx]
	call	be32_to_cpu@PLT
	and	eax, DWORD PTR MLX4_VLAN_MASK[rip]
	cmp	r12d, eax
	jne	.L24
	mov	rax, QWORD PTR 24[r13]
	mov	rcx, QWORD PTR 16[rsp]
	mov	r10d, DWORD PTR [rax+rcx]
	test	r10d, r10d
	jne	.L73
.L24:
	mov	rcx, QWORD PTR 72[rsp]
	mov	rdi, QWORD PTR 48[rsp]
	mov	r8d, r15d
	mov	edx, r12d
	lea	rsi, .LC4[rip]
	xor	eax, eax
	call	mlx4_warn@PLT
	jmp	.L73
.L82:
	mov	rdi, QWORD PTR 48[rsp]
	mov	edx, r12d
	lea	rsi, .LC7[rip]
	xor	eax, eax
	call	mlx4_warn@PLT
	mov	rax, QWORD PTR 16[r14]
	mov	DWORD PTR [rax+rbp*4], 0
	mov	rax, QWORD PTR 40[r14]
	mov	QWORD PTR [rax+rbp*8], 0
	jmp	.L8
.L45:
	mov	ebx, ebp
	jmp	.L29
.L84:
	mov	rdi, QWORD PTR 48[rsp]
	mov	edx, r12d
	lea	rsi, .LC8[rip]
	xor	eax, eax
	call	mlx4_warn@PLT
	mov	rax, QWORD PTR 24[r13]
	mov	DWORD PTR [rax+rbp*4], 0
	mov	rax, QWORD PTR 40[r13]
	mov	QWORD PTR [rax+rbp*8], 0
	jmp	.L8
.L9:
	mov	eax, DWORD PTR 60[rsp]
	test	eax, eax
	je	.L40
	mov	rbx, QWORD PTR 48[rsp]
	lea	rsi, .LC5[rip]
	xor	eax, eax
	mov	rdi, rbx
	call	mlx4_warn@PLT
	lea	rsi, .LC6[rip]
	mov	rdi, rbx
	xor	eax, eax
	call	mlx4_warn@PLT
	jmp	.L40
.L78:
	mov	ebp, -1
	jmp	.L18
	.cfi_endproc
.LFE0:
	.size	__mlx4_register_vlan, .-__mlx4_register_vlan
	.comm	SINGLE_DEPTH_NESTING,4,4
	.comm	MLX4_VLAN_VALID,4,4
	.comm	MLX4_VLAN_REGULAR,4,4
	.comm	MLX4_VLAN_MASK,4,4
	.comm	MLX4_MAX_VLAN_NUM,4,4
	.comm	ENOSPC,4,4
	.comm	ENOMEM,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_mlx4_port.c___mlx4_register_vlan.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"with\000"
	.align	2
.LC1:
	.ascii	"without\000"
	.align	2
.LC2:
	.ascii	"Registering VLAN: %d for port %d %s duplicate\012\000"
	.align	2
.LC3:
	.ascii	"vlan %u is already registered.\012\000"
	.align	2
.LC4:
	.ascii	"register vlan: expected duplicate vlan %u on port %"
	.ascii	"d index %d\012\000"
	.align	2
.LC5:
	.ascii	"Fail to allocate duplicate VLAN table entry\012\000"
	.align	2
.LC6:
	.ascii	"High Availability for virtual functions may not wor"
	.ascii	"k as expected\012\000"
	.align	2
.LC7:
	.ascii	"Failed adding vlan: %u\012\000"
	.align	2
.LC8:
	.ascii	"Failed adding duplicate vlan: %u\012\000"
	.text
	.align	2
	.global	__mlx4_register_vlan
	.syntax unified
	.arm
	.fpu softvfp
	.type	__mlx4_register_vlan, %function
__mlx4_register_vlan:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	sub	sp, sp, #60
	mov	r7, r1
	mov	r6, r0
	str	r1, [sp, #32]
	mov	r8, r2
	str	r3, [sp, #48]
	str	r0, [sp, #40]
	bl	mlx4_priv
	add	r5, r7, r7, lsl #1
	ldr	r3, [r0]
	lsl	r2, r5, #3
	mov	r0, r6
	str	r2, [sp, #20]
	add	r5, r3, r5, lsl #3
	str	r3, [sp, #24]
	bl	mlx4_is_mf_bonded
	mov	r3, r0
	cmp	r7, #1
	mov	r10, r3
	str	r3, [sp, #44]
	moveq	r3, #2
	movne	r3, #1
	mov	r0, r6
	moveq	r4, #48
	movne	r4, #24
	str	r3, [sp, #52]
	bl	mlx4_priv
	ldr	r9, [r0]
	mov	r0, r6
	bl	mlx4_need_mf_bond
	ldr	r3, .L80
	cmp	r10, #0
	ldr	r2, .L80+4
	moveq	r2, r3
	add	r9, r9, r4
	mov	r4, r0
	mov	r3, r7
	str	r0, [sp, #12]
	str	r2, [sp]
	mov	r0, r6
	mov	r2, r8
	ldr	r1, .L80+8
	bl	mlx4_dbg
	add	r3, r5, #16
	cmp	r4, #0
	str	r3, [sp, #28]
	beq	.L4
	cmp	r7, #1
	add	r4, r9, #16
	beq	.L69
	mov	r0, r4
	bl	mutex_lock
	ldr	r3, .L80+12
	add	r0, r5, #16
	ldr	r1, [r3]
	bl	mutex_lock_nested
.L6:
	ldr	r3, [sp, #24]
	ldr	r2, [sp, #20]
	ldr	r2, [r3, r2]
	ldr	r3, [r5, #4]
	cmp	r2, r3
	beq	.L36
	ldr	r3, .L80+16
	ldr	fp, .L80+20
	ldr	r6, [r3]
	ldr	r3, [fp]
	cmp	r3, r6
	ble	.L9
	mvn	r7, #0
	mov	r4, r7
	ldr	r10, .L80+24
.L12:
	ldr	r3, [r5, #20]
	ldr	r0, [r3, r6, lsl #2]
	bl	be32_to_cpu
	ldr	r3, [r10]
	ldr	r2, [r9, #20]
	and	r3, r3, r0
	cmp	r3, r8
	ldr	r0, [r2, r6, lsl #2]
	moveq	r4, r6
	bl	be32_to_cpu
	ldr	r3, [r10]
	ldr	ip, [fp]
	and	r0, r0, r3
	cmp	r0, r8
	moveq	r7, r6
	add	r6, r6, #1
	cmp	ip, r6
	bgt	.L12
	mvn	r2, r4
	lsr	r2, r2, #31
	cmp	r4, r7
	moveq	r0, #0
	andne	r0, r2, #1
	cmp	r7, #0
	movlt	r0, #0
	andge	r0, r0, #1
	ands	r2, r2, r7, lsr #31
	eor	r1, r0, #1
	str	r1, [sp, #36]
	lsr	r6, r7, #31
	bne	.L70
	cmp	r7, #0
	blt	.L15
	ldr	r0, [r5, #8]
	ldr	r0, [r0, r7, lsl #2]
	cmp	r0, #0
	bne	.L71
.L16:
	ldr	r3, .L80+16
	ldr	r4, [r3]
	cmp	r4, ip
	bge	.L72
.L38:
	ldr	r2, [sp, #36]
	mvn	r10, #0
	and	r2, r2, #1
	str	r2, [sp, #16]
	mov	r2, fp
	mov	fp, r10
	mov	r10, r2
	b	.L26
.L21:
	ldr	r0, [r5, #12]
	ldr	r0, [r0, r6]
	cmp	r0, #0
	beq	.L22
.L19:
	ldr	r0, [r5, #20]
	ldr	r0, [r0, r6]
	bl	be32_to_cpu
	ldr	r3, .L80+24
	ldr	ip, [r3]
	and	r0, r0, ip
	cmp	r0, r8
	beq	.L73
.L22:
	ldr	r0, [r10]
	add	r4, r4, #1
	cmp	r0, r4
	ble	.L74
.L26:
	ldr	r0, [r5, #8]
	lsl	r6, r4, #2
	ldr	r0, [r0, r4, lsl #2]
	cmp	r0, #0
	bne	.L19
	ldr	r2, [sp, #12]
	ldr	r0, [sp, #16]
	cmp	r2, #0
	moveq	r0, #0
	cmp	fp, #0
	movlt	fp, r4
	ands	r2, r0, r7, lsr #31
	beq	.L21
	ldr	r0, [r9, #8]
	ldr	r0, [r0, r6]
	cmp	r0, #0
	moveq	r7, r4
	b	.L21
.L69:
	mov	r0, r3
	bl	mutex_lock
	ldr	r3, .L80+12
	mov	r0, r4
	ldr	r1, [r3]
	bl	mutex_lock_nested
	b	.L6
.L74:
	mov	r10, fp
	lsr	r6, r7, #31
.L18:
	ldr	r3, [sp, #12]
	subs	r3, r3, #0
	movne	r3, #1
	tst	r3, r6
	beq	.L27
	ldr	r3, [sp, #44]
	cmp	r3, #0
	bne	.L75
.L28:
	cmp	r10, #0
	bge	.L44
.L39:
	ldr	r3, .L80+28
	ldr	r4, [r3]
	rsb	r4, r4, #0
.L8:
	ldr	r3, [sp, #12]
	cmp	r3, #0
	beq	.L33
	ldr	r3, [sp, #32]
	add	r9, r9, #16
	cmp	r3, #2
	beq	.L76
	mov	r0, r9
	bl	mutex_unlock
	ldr	r0, [sp, #28]
	bl	mutex_unlock
	mov	r0, r4
	add	sp, sp, #60
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L4:
	add	r0, r5, #16
	bl	mutex_lock
	ldr	r3, [sp, #24]
	ldr	r2, [sp, #20]
	ldr	r2, [r3, r2]
	ldr	r3, [r5, #4]
	cmp	r2, r3
	beq	.L36
	ldr	r3, .L80+16
	ldr	fp, .L80+20
	ldr	r4, [r3]
	ldr	r3, [fp]
	cmp	r4, r3
	movlt	r3, #1
	strlt	r3, [sp, #36]
	bge	.L39
.L66:
	mvn	r7, #0
	b	.L38
.L33:
	ldr	r0, [sp, #28]
	bl	mutex_unlock
	mov	r0, r4
	add	sp, sp, #60
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L73:
	mov	r2, r8
	ldr	r1, .L80+32
	ldr	r0, [sp, #40]
	bl	mlx4_dbg
	ldr	r3, [sp, #48]
	ldr	r1, [r5, #8]
	str	r4, [r3]
	ldr	r2, [r1, r6]
	ldr	r3, [sp, #44]
	add	r2, r2, #1
	cmp	r3, #0
	str	r2, [r1, r6]
	bne	.L23
.L67:
	mov	r4, #0
	b	.L8
.L36:
	ldr	r3, .L80+36
	ldr	r4, [r3]
	rsb	r4, r4, #0
	b	.L8
.L71:
	ldr	r0, [r9, #20]
	str	r2, [sp, #16]
	ldr	r0, [r0, r7, lsl #2]
	bl	be32_to_cpu
	ldr	r3, [r10]
	and	r3, r3, r0
	cmp	r3, r8
	beq	.L17
	ldr	r2, [sp, #16]
	ldr	ip, [fp]
	str	r2, [sp, #36]
.L15:
	ldr	r3, .L80+16
	ldr	r4, [r3]
	cmp	r4, ip
	blt	.L66
.L9:
	ldr	r3, [sp, #44]
	cmp	r3, #0
	beq	.L39
	ldr	r4, [sp, #40]
	ldr	r1, .L80+40
	mov	r0, r4
	bl	mlx4_warn
	mov	r0, r4
	ldr	r1, .L80+44
	bl	mlx4_warn
	b	.L39
.L76:
	ldr	r0, [sp, #28]
	bl	mutex_unlock
	mov	r0, r9
	bl	mutex_unlock
	mov	r0, r4
	add	sp, sp, #60
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L27:
	ldr	r2, [sp, #36]
	tst	r3, r2
	beq	.L28
.L29:
	mov	r3, #1
	mov	r6, #0
	ldr	r1, [r5, #8]
	ldr	r2, [r5, #12]
	ldr	fp, .L80+48
	str	r3, [r1, r7, lsl #2]
	str	r6, [r2, r7, lsl #2]
	ldr	r0, [fp]
	ldr	r4, [r5, #20]
	orr	r0, r8, r0
	bl	cpu_to_be32
	str	r0, [r4, r7, lsl #2]
	ldr	r2, [r5, #20]
	ldr	r1, [sp, #32]
	ldr	r0, [sp, #40]
	bl	mlx4_set_port_vlan_table
	mov	r4, r0
	bl	unlikely
	lsl	r3, r7, #2
	subs	r10, r0, #0
	str	r3, [sp, #16]
	mov	r3, #1
	bne	.L77
	ldr	r1, [sp, #24]
	ldr	r0, [sp, #20]
	ldr	ip, [sp, #44]
	ldr	r2, [r1, r0]
	cmp	ip, #0
	add	r2, r2, #1
	str	r2, [r1, r0]
	bne	.L78
.L31:
	ldr	r3, [sp, #48]
	str	r7, [r3]
	b	.L8
.L70:
	ldr	r3, [r9, #8]
	ldr	r3, [r3, r4, lsl #2]
	cmp	r3, #0
	movne	r1, #0
	ldr	r3, .L80+16
	str	r1, [sp, #36]
	ldr	r4, [r3]
	cmp	r4, ip
	blt	.L66
	b	.L9
.L75:
	ldr	r4, [sp, #40]
	ldr	r1, .L80+40
	mov	r0, r4
	bl	mlx4_warn
	mov	r0, r4
	ldr	r1, .L80+44
	bl	mlx4_warn
	mov	r3, #0
	str	r3, [sp, #44]
	b	.L28
.L78:
	ldr	r1, [r9, #8]
	ldr	r2, [r9, #12]
	lsl	r5, r7, #2
	str	r10, [r1, r5]
	str	r3, [r2, r5]
	ldr	r0, [fp]
	ldr	r4, [r9, #20]
	orr	r0, r8, r0
	bl	cpu_to_be32
	str	r0, [r4, r5]
	ldr	r1, [sp, #52]
	ldr	r2, [r9, #20]
	ldr	r0, [sp, #40]
	bl	mlx4_set_port_vlan_table
	mov	r4, r0
	bl	unlikely
	cmp	r0, #0
	bne	.L79
	ldr	r3, [r9]
	add	r3, r3, #1
	str	r3, [r9]
	b	.L31
.L23:
	ldr	r2, [r9, #20]
	ldr	r0, [r2, r6]
	bl	be32_to_cpu
	ldr	r3, .L80+24
	ldr	r3, [r3]
	and	r3, r3, r0
	cmp	r8, r3
	bne	.L24
	ldr	r3, [r9, #12]
	ldr	r3, [r3, r6]
	cmp	r3, #0
	bne	.L67
.L24:
	mov	r2, r8
	ldr	r3, [sp, #52]
	ldr	r0, [sp, #40]
	ldr	r1, .L80+52
	str	r4, [sp]
	bl	mlx4_warn
	b	.L67
.L77:
	mov	r2, r8
	ldr	r0, [sp, #40]
	ldr	r1, .L80+56
	bl	mlx4_warn
	ldr	r2, [r5, #8]
	ldr	r3, [r5, #20]
	str	r6, [r2, r7, lsl #2]
	str	r6, [r3, r7, lsl #2]
	b	.L8
.L44:
	mov	r7, r10
	b	.L29
.L17:
	ldr	ip, [fp]
	b	.L16
.L79:
	mov	r2, r8
	ldr	r1, .L80+60
	ldr	r0, [sp, #40]
	bl	mlx4_warn
	ldr	r2, [r9, #12]
	ldr	r3, [r9, #20]
	ldr	r1, [sp, #16]
	str	r10, [r2, r1]
	str	r10, [r3, r1]
	b	.L8
.L72:
	mvn	r10, #0
	b	.L18
.L81:
	.align	2
.L80:
	.word	.LC1
	.word	.LC0
	.word	.LC2
	.word	SINGLE_DEPTH_NESTING
	.word	MLX4_VLAN_REGULAR
	.word	MLX4_MAX_VLAN_NUM
	.word	MLX4_VLAN_MASK
	.word	ENOMEM
	.word	.LC3
	.word	ENOSPC
	.word	.LC5
	.word	.LC6
	.word	MLX4_VLAN_VALID
	.word	.LC4
	.word	.LC7
	.word	.LC8
	.size	__mlx4_register_vlan, .-__mlx4_register_vlan
	.comm	SINGLE_DEPTH_NESTING,4,4
	.comm	MLX4_VLAN_VALID,4,4
	.comm	MLX4_VLAN_REGULAR,4,4
	.comm	MLX4_VLAN_MASK,4,4
	.comm	MLX4_MAX_VLAN_NUM,4,4
	.comm	ENOSPC,4,4
	.comm	ENOMEM,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
