	.file	"extr_mthca_cq.c_handle_error_cqe.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC0:
	.string	"local QP operation err (QPN %06x, WQE @ %08x, CQN %06x, index %d)\n"
	.text
	.p2align 4
	.type	handle_error_cqe, @function
handle_error_cqe:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	mov	r15, rdi
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13d, ecx
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12d, r8d
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	rbp, rdx
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, r9
	sub	rsp, 56
	.cfi_def_cfa_offset 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 40[rsp], rax
	xor	eax, eax
	mov	eax, DWORD PTR [r9]
	mov	r10, QWORD PTR 112[rsp]
	mov	r14, QWORD PTR 120[rsp]
	cmp	eax, 138
	je	.L33
.L2:
	add	eax, -128
	cmp	eax, 17
	ja	.L3
	lea	rdx, .L5[rip]
	movsx	rax, DWORD PTR [rdx+rax*4]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L5:
	.long	.L22-.L5
	.long	.L21-.L5
	.long	.L20-.L5
	.long	.L19-.L5
	.long	.L18-.L5
	.long	.L17-.L5
	.long	.L16-.L5
	.long	.L15-.L5
	.long	.L14-.L5
	.long	.L13-.L5
	.long	.L12-.L5
	.long	.L11-.L5
	.long	.L10-.L5
	.long	.L9-.L5
	.long	.L8-.L5
	.long	.L7-.L5
	.long	.L6-.L5
	.long	.L4-.L5
	.text
	.p2align 4,,10
	.p2align 3
.L33:
	mov	r9d, DWORD PTR [rsi]
	mov	r8d, DWORD PTR 4[rsi]
	mov	QWORD PTR 24[rsp], r10
	mov	edi, DWORD PTR 8[rbx]
	mov	DWORD PTR 20[rsp], r9d
	mov	DWORD PTR 16[rsp], r8d
	call	be32_to_cpu@PLT
	mov	edi, DWORD PTR 4[rbx]
	mov	DWORD PTR 12[rsp], eax
	call	be32_to_cpu@PLT
	mov	r9d, DWORD PTR 20[rsp]
	mov	ecx, DWORD PTR 12[rsp]
	lea	rsi, .LC0[rip]
	mov	r8d, DWORD PTR 16[rsp]
	mov	edx, eax
	mov	rdi, r15
	call	mthca_dbg@PLT
	mov	rsi, rbx
	mov	rdi, r15
	call	dump_cqe@PLT
	mov	eax, DWORD PTR [rbx]
	mov	r10, QWORD PTR 24[rsp]
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L6:
	mov	eax, DWORD PTR IB_WC_INV_EECN_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	.p2align 4,,10
	.p2align 3
.L23:
	mov	eax, DWORD PTR 16[rbx]
	mov	rdi, r15
	mov	DWORD PTR [r10], eax
	call	mthca_is_memfree@PLT
	test	rax, rax
	jne	.L1
	mov	rdi, r15
	lea	r9, 36[rsp]
	lea	r8, 32[rsp]
	mov	ecx, r13d
	mov	edx, r12d
	mov	rsi, rbp
	call	mthca_free_err_wqe@PLT
	mov	edi, 63
	call	cpu_to_be32@PLT
	test	DWORD PTR 36[rsp], eax
	je	.L1
	mov	eax, DWORD PTR 12[rbx]
	mov	esi, DWORD PTR 32[rsp]
	test	eax, eax
	jne	.L25
	test	esi, esi
	jne	.L1
.L25:
	neg	esi
	lea	rdi, 12[rbx]
	call	be16_add_cpu@PLT
	mov	eax, DWORD PTR 36[rsp]
	mov	DWORD PTR [rbx], 128
	mov	DWORD PTR 8[rbx], eax
	mov	DWORD PTR [r14], 0
.L1:
	mov	rax, QWORD PTR 40[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L34
	add	rsp, 56
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	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
	mov	eax, DWORD PTR IB_WC_BAD_RESP_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L22:
	mov	eax, DWORD PTR IB_WC_WR_FLUSH_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L21:
	mov	eax, DWORD PTR IB_WC_RNR_RETRY_EXC_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L20:
	mov	eax, DWORD PTR IB_WC_RETRY_EXC_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L19:
	mov	eax, DWORD PTR IB_WC_REM_OP_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L18:
	mov	eax, DWORD PTR IB_WC_REM_INV_REQ_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L17:
	mov	eax, DWORD PTR IB_WC_REM_INV_RD_REQ_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L16:
	mov	eax, DWORD PTR IB_WC_REM_ACCESS_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L15:
	mov	eax, DWORD PTR IB_WC_REM_ABORT_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L14:
	mov	eax, DWORD PTR IB_WC_MW_BIND_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L13:
	mov	eax, DWORD PTR IB_WC_LOC_RDD_VIOL_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L12:
	mov	eax, DWORD PTR IB_WC_LOC_QP_OP_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L11:
	mov	eax, DWORD PTR IB_WC_LOC_PROT_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L10:
	mov	eax, DWORD PTR IB_WC_LOC_LEN_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L9:
	mov	eax, DWORD PTR IB_WC_LOC_EEC_OP_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L8:
	mov	eax, DWORD PTR IB_WC_LOC_ACCESS_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L7:
	mov	eax, DWORD PTR IB_WC_INV_EEC_STATE_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
.L3:
	mov	eax, DWORD PTR IB_WC_GENERAL_ERR[rip]
	mov	DWORD PTR 4[r10], eax
	jmp	.L23
.L34:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	handle_error_cqe, .-handle_error_cqe
	.comm	IB_WC_WR_FLUSH_ERR,4,4
	.comm	IB_WC_RNR_RETRY_EXC_ERR,4,4
	.comm	IB_WC_RETRY_EXC_ERR,4,4
	.comm	IB_WC_REM_OP_ERR,4,4
	.comm	IB_WC_REM_INV_REQ_ERR,4,4
	.comm	IB_WC_REM_INV_RD_REQ_ERR,4,4
	.comm	IB_WC_REM_ACCESS_ERR,4,4
	.comm	IB_WC_REM_ABORT_ERR,4,4
	.comm	IB_WC_MW_BIND_ERR,4,4
	.comm	IB_WC_LOC_RDD_VIOL_ERR,4,4
	.comm	IB_WC_LOC_QP_OP_ERR,4,4
	.comm	IB_WC_LOC_PROT_ERR,4,4
	.comm	IB_WC_LOC_LEN_ERR,4,4
	.comm	IB_WC_LOC_EEC_OP_ERR,4,4
	.comm	IB_WC_LOC_ACCESS_ERR,4,4
	.comm	IB_WC_INV_EEC_STATE_ERR,4,4
	.comm	IB_WC_INV_EECN_ERR,4,4
	.comm	IB_WC_GENERAL_ERR,4,4
	.comm	IB_WC_BAD_RESP_ERR,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_mthca_cq.c_handle_error_cqe.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"local QP operation err (QPN %06x, WQE @ %08x, CQN %"
	.ascii	"06x, index %d)\012\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	handle_error_cqe, %function
handle_error_cqe:
	@ args = 16, pretend = 0, frame = 16
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	sub	sp, sp, #28
	ldr	r5, [sp, #68]
	mov	r6, r3
	ldr	ip, [r5]
	ldr	r3, .L35
	cmp	ip, #138
	mov	r4, r0
	mov	r7, r2
	ldr	r3, [r3]
	str	r3, [sp, #20]
	mov	r3,#0
	ldr	r8, [sp, #72]
	ldr	r9, [sp, #76]
	beq	.L33
.L2:
	sub	ip, ip, #128
	cmp	ip, #17
	ldrls	pc, [pc, ip, asl #2]
	b	.L3
.L5:
	.word	.L22
	.word	.L21
	.word	.L20
	.word	.L19
	.word	.L18
	.word	.L17
	.word	.L16
	.word	.L15
	.word	.L14
	.word	.L13
	.word	.L12
	.word	.L11
	.word	.L10
	.word	.L9
	.word	.L8
	.word	.L7
	.word	.L6
	.word	.L4
.L33:
	ldr	r0, [r5, #4]
	mov	r10, r1
	bl	be32_to_cpu
	mov	fp, r0
	ldr	r0, [r5, #8]
	bl	be32_to_cpu
	ldr	ip, [r10]
	ldr	r1, [r10, #4]
	mov	r3, r0
	stm	sp, {r1, ip}
	mov	r2, fp
	ldr	r1, .L35+4
	mov	r0, r4
	bl	mthca_dbg
	mov	r1, r5
	mov	r0, r4
	bl	dump_cqe
	ldr	ip, [r5]
	b	.L2
.L4:
	ldr	r3, .L35+8
	ldr	r3, [r3]
	str	r3, [r8, #4]
.L23:
	ldr	r3, [r5, #16]
	mov	r0, r4
	str	r3, [r8]
	bl	mthca_is_memfree
	cmp	r0, #0
	bne	.L1
	add	ip, sp, #16
	add	r2, sp, #12
	mov	r3, r6
	stm	sp, {r2, ip}
	mov	r1, r7
	ldr	r2, [sp, #64]
	mov	r0, r4
	bl	mthca_free_err_wqe
	mov	r0, #63
	bl	cpu_to_be32
	ldr	r3, [sp, #16]
	tst	r0, r3
	beq	.L1
	ldr	r3, [r5, #12]
	ldr	r1, [sp, #12]
	cmp	r3, #0
	bne	.L25
	cmp	r1, #0
	bne	.L1
.L25:
	rsb	r1, r1, #0
	add	r0, r5, #12
	bl	be16_add_cpu
	mov	r1, #128
	mov	r3, #0
	ldr	r2, [sp, #16]
	str	r1, [r5]
	str	r2, [r5, #8]
	str	r3, [r9]
.L1:
	ldr	r3, .L35
	ldr	r2, [r3]
	ldr	r3, [sp, #20]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L34
	add	sp, sp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L22:
	ldr	r3, .L35+12
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L21:
	ldr	r3, .L35+16
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L20:
	ldr	r3, .L35+20
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L19:
	ldr	r3, .L35+24
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L18:
	ldr	r3, .L35+28
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L17:
	ldr	r3, .L35+32
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L16:
	ldr	r3, .L35+36
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L15:
	ldr	r3, .L35+40
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L14:
	ldr	r3, .L35+44
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L13:
	ldr	r3, .L35+48
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L12:
	ldr	r3, .L35+52
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L11:
	ldr	r3, .L35+56
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L10:
	ldr	r3, .L35+60
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L9:
	ldr	r3, .L35+64
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L8:
	ldr	r3, .L35+68
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L7:
	ldr	r3, .L35+72
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L6:
	ldr	r3, .L35+76
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L34:
	bl	__stack_chk_fail
.L3:
	ldr	r3, .L35+80
	ldr	r3, [r3]
	str	r3, [r8, #4]
	b	.L23
.L36:
	.align	2
.L35:
	.word	.LC1
	.word	.LC0
	.word	IB_WC_BAD_RESP_ERR
	.word	IB_WC_WR_FLUSH_ERR
	.word	IB_WC_RNR_RETRY_EXC_ERR
	.word	IB_WC_RETRY_EXC_ERR
	.word	IB_WC_REM_OP_ERR
	.word	IB_WC_REM_INV_REQ_ERR
	.word	IB_WC_REM_INV_RD_REQ_ERR
	.word	IB_WC_REM_ACCESS_ERR
	.word	IB_WC_REM_ABORT_ERR
	.word	IB_WC_MW_BIND_ERR
	.word	IB_WC_LOC_RDD_VIOL_ERR
	.word	IB_WC_LOC_QP_OP_ERR
	.word	IB_WC_LOC_PROT_ERR
	.word	IB_WC_LOC_LEN_ERR
	.word	IB_WC_LOC_EEC_OP_ERR
	.word	IB_WC_LOC_ACCESS_ERR
	.word	IB_WC_INV_EEC_STATE_ERR
	.word	IB_WC_INV_EECN_ERR
	.word	IB_WC_GENERAL_ERR
	.size	handle_error_cqe, .-handle_error_cqe
	.comm	IB_WC_WR_FLUSH_ERR,4,4
	.comm	IB_WC_RNR_RETRY_EXC_ERR,4,4
	.comm	IB_WC_RETRY_EXC_ERR,4,4
	.comm	IB_WC_REM_OP_ERR,4,4
	.comm	IB_WC_REM_INV_REQ_ERR,4,4
	.comm	IB_WC_REM_INV_RD_REQ_ERR,4,4
	.comm	IB_WC_REM_ACCESS_ERR,4,4
	.comm	IB_WC_REM_ABORT_ERR,4,4
	.comm	IB_WC_MW_BIND_ERR,4,4
	.comm	IB_WC_LOC_RDD_VIOL_ERR,4,4
	.comm	IB_WC_LOC_QP_OP_ERR,4,4
	.comm	IB_WC_LOC_PROT_ERR,4,4
	.comm	IB_WC_LOC_LEN_ERR,4,4
	.comm	IB_WC_LOC_EEC_OP_ERR,4,4
	.comm	IB_WC_LOC_ACCESS_ERR,4,4
	.comm	IB_WC_INV_EEC_STATE_ERR,4,4
	.comm	IB_WC_INV_EECN_ERR,4,4
	.comm	IB_WC_GENERAL_ERR,4,4
	.comm	IB_WC_BAD_RESP_ERR,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
