	.file	"extr_qib_ud.c_qib_ud_loopback.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	qib_ud_loopback, @function
qib_ud_loopback:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rdi
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rsi
	sub	rsp, 200
	.cfi_def_cfa_offset 256
	mov	QWORD PTR 8[rsp], rsi
	mov	esi, DWORD PTR 72[rdi]
	mov	edi, DWORD PTR 64[rdi]
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 184[rsp], rax
	xor	eax, eax
	call	to_iport@PLT
	mov	esi, DWORD PTR 40[rbx]
	mov	rdi, rax
	mov	rbp, rax
	call	qib_lookup_qpn@PLT
	test	rax, rax
	je	.L56
	mov	rbx, rax
	mov	rax, QWORD PTR 48[r12]
	cmp	QWORD PTR 48[rbx], rax
	je	.L57
.L4:
	add	DWORD PTR 4[rbp], 1
.L6:
	lea	rdi, 36[rbx]
	call	atomic_dec_and_test@PLT
	test	rax, rax
	jne	.L58
.L1:
	mov	rax, QWORD PTR 184[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L59
	add	rsp, 200
	.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
.L57:
	.cfi_restore_state
	mov	rdx, QWORD PTR [rbx]
	mov	rax, QWORD PTR ib_qib_state_ops[rip]
	mov	eax, DWORD PTR [rax+rdx*4]
	test	DWORD PTR QIB_PROCESS_RECV_OK[rip], eax
	je	.L4
	mov	rax, QWORD PTR 8[rsp]
	mov	edi, DWORD PTR 36[rax]
	call	to_iah@PLT
	mov	rdi, rbp
	mov	QWORD PTR 56[rsp], rax
	call	ppd_from_ibp@PLT
	mov	QWORD PTR 72[rsp], rax
	mov	eax, DWORD PTR 56[rbx]
	cmp	eax, 1
	jg	.L60
.L7:
	test	eax, eax
	je	.L9
	mov	rax, QWORD PTR 8[rsp]
	mov	r14, QWORD PTR 24[rax]
	test	r14d, r14d
	jns	.L10
	mov	r14, QWORD PTR 8[r12]
.L10:
	xor	edi, edi
	cmp	QWORD PTR 8[rbx], r14
	setne	dil
	call	unlikely@PLT
	test	rax, rax
	jne	.L61
.L9:
	mov	r15, QWORD PTR 8[rsp]
	lea	rdi, 112[rsp]
	mov	edx, 64
	xor	esi, esi
	mov	QWORD PTR 80[rsp], rdi
	mov	r14, QWORD PTR [r15]
	call	memset@PLT
	lea	rax, 4[r14]
	mov	QWORD PTR 112[rsp], rax
	mov	rax, QWORD PTR IB_WR_SEND_WITH_IMM[rip]
	cmp	QWORD PTR 8[r15], rax
	jne	.L11
	mov	eax, DWORD PTR IB_WC_WITH_IMM[rip]
	mov	DWORD PTR 164[rsp], eax
	mov	rax, QWORD PTR 8[rsp]
	mov	eax, DWORD PTR 56[rax]
	mov	DWORD PTR 168[rsp], eax
.L11:
	lea	rax, 40[rbx]
	xor	esi, esi
	mov	rdi, rax
	mov	QWORD PTR 64[rsp], rax
	call	spin_lock_irqsave@PLT
	mov	edx, DWORD PTR 16[rbx]
	mov	eax, DWORD PTR QIB_R_REUSE_SGE[rip]
	test	edx, eax
	je	.L12
	not	eax
	and	eax, edx
	mov	DWORD PTR 16[rbx], eax
.L13:
	xor	edi, edi
	mov	rax, QWORD PTR 24[rbx]
	cmp	QWORD PTR 112[rsp], rax
	setg	dil
	call	unlikely@PLT
	test	rax, rax
	jne	.L62
	mov	rcx, QWORD PTR 56[rsp]
	lea	rdi, 84[rbx]
	mov	QWORD PTR 16[rsp], rdi
	mov	eax, DWORD PTR 16[rcx]
	test	DWORD PTR IB_AH_GRH[rip], eax
	jne	.L63
	mov	rdi, QWORD PTR 16[rsp]
	mov	edx, 1
	mov	esi, 4
	call	qib_skip_sge@PLT
.L19:
	mov	rcx, QWORD PTR 8[rsp]
	mov	rax, QWORD PTR 64[rcx]
	mov	rsi, QWORD PTR 16[rax]
	mov	r10, QWORD PTR [rax]
	lea	r11, 48[rax]
	mov	r8, QWORD PTR 8[rax]
	mov	r15, QWORD PTR 40[rax]
	mov	QWORD PTR 24[rsp], rsi
	mov	rsi, QWORD PTR 24[rax]
	mov	QWORD PTR 40[rsp], rsi
	mov	rsi, QWORD PTR 32[rax]
	mov	rax, QWORD PTR 48[rcx]
	mov	QWORD PTR 32[rsp], rsi
	mov	QWORD PTR 48[rsp], rax
	test	r14, r14
	je	.L27
	mov	QWORD PTR 96[rsp], rbx
	mov	r13, r10
	mov	rbx, r15
	mov	r15, r14
	mov	QWORD PTR 104[rsp], r12
	mov	r14, r8
	mov	r12, r11
	mov	QWORD PTR 88[rsp], rbp
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L64:
	sub	QWORD PTR 48[rsp], 1
	je	.L24
	mov	rax, QWORD PTR 16[r12]
	mov	r13, QWORD PTR [r12]
	add	r12, 48
	mov	r14, QWORD PTR -40[r12]
	mov	rbx, QWORD PTR -8[r12]
	mov	QWORD PTR 24[rsp], rax
	mov	rax, QWORD PTR -24[r12]
	mov	QWORD PTR 40[rsp], rax
	mov	rax, QWORD PTR -16[r12]
	mov	QWORD PTR 32[rsp], rax
.L24:
	sub	r15, rbp
	je	.L53
.L20:
	cmp	r15, r13
	mov	rdx, r13
	cmovle	rdx, r15
	cmp	rdx, r14
	cmovg	rdx, r14
	xor	edi, edi
	test	rdx, rdx
	mov	rbp, rdx
	sete	dil
	sub	r13, rbp
	call	BUG_ON@PLT
	mov	rdi, QWORD PTR 16[rsp]
	mov	rsi, rbx
	mov	rdx, rbp
	mov	ecx, 1
	lea	rbx, [rbx+rbp*4]
	call	qib_copy_sge@PLT
	sub	r14, rbp
	je	.L64
	test	r13, r13
	jne	.L24
	mov	rax, QWORD PTR 32[rsp]
	cmp	QWORD PTR 16[rax], 0
	je	.L24
	add	QWORD PTR 24[rsp], 1
	mov	rax, QWORD PTR 24[rsp]
	cmp	rax, QWORD PTR QIB_SEGSZ[rip]
	jge	.L25
	sal	rax, 4
.L26:
	mov	rcx, QWORD PTR 32[rsp]
	mov	rsi, QWORD PTR 40[rsp]
	mov	rcx, QWORD PTR 8[rcx]
	mov	rcx, QWORD PTR [rcx+rsi*8]
	add	rax, QWORD PTR [rcx]
	mov	rbx, QWORD PTR 8[rax]
	mov	r13, QWORD PTR [rax]
	jmp	.L24
	.p2align 4,,10
	.p2align 3
.L58:
	lea	rdi, 32[rbx]
	call	wake_up@PLT
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L60:
	mov	esi, DWORD PTR 88[r12]
	mov	rdi, rbp
	call	qib_get_pkey@PLT
	mov	esi, DWORD PTR 88[rbx]
	mov	rdi, rbp
	mov	r14, rax
	call	qib_get_pkey@PLT
	mov	rdi, r14
	mov	rsi, rax
	call	qib_pkey_ok@PLT
	xor	edi, edi
	test	eax, eax
	sete	dil
	call	unlikely@PLT
	test	rax, rax
	jne	.L8
	mov	eax, DWORD PTR 56[rbx]
	jmp	.L7
	.p2align 4,,10
	.p2align 3
.L56:
	add	DWORD PTR 4[rbp], 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L12:
	xor	esi, esi
	mov	rdi, rbx
	call	qib_get_rwqe@PLT
	test	eax, eax
	js	.L65
	jne	.L13
	mov	eax, DWORD PTR 56[rbx]
	test	eax, eax
	jne	.L15
	add	DWORD PTR 8[rbp], 1
	.p2align 4,,10
	.p2align 3
.L15:
	mov	rdi, QWORD PTR 64[rsp]
	xor	esi, esi
	call	spin_unlock_irqrestore@PLT
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L63:
	lea	rsi, 24[rcx]
	mov	edx, 4
	mov	ecx, 1
	call	qib_copy_sge@PLT
	mov	eax, DWORD PTR IB_WC_GRH[rip]
	or	DWORD PTR 164[rsp], eax
	jmp	.L19
.L65:
	mov	esi, DWORD PTR IB_WC_LOC_QP_OP_ERR[rip]
	mov	rdi, rbx
	call	qib_rc_error@PLT
	jmp	.L15
	.p2align 4,,10
	.p2align 3
.L25:
	mov	rcx, QWORD PTR 32[rsp]
	add	QWORD PTR 40[rsp], 1
	mov	rax, QWORD PTR 40[rsp]
	cmp	rax, QWORD PTR [rcx]
	jge	.L53
	mov	QWORD PTR 24[rsp], 0
	xor	eax, eax
	jmp	.L26
	.p2align 4,,10
	.p2align 3
.L53:
	mov	rbp, QWORD PTR 88[rsp]
	mov	rbx, QWORD PTR 96[rsp]
	mov	r12, QWORD PTR 104[rsp]
.L27:
	mov	rdi, QWORD PTR 16[rsp]
	call	qib_put_ss@PLT
	mov	edi, DWORD PTR QIB_R_WRID_VALID[rip]
	lea	rsi, 80[rbx]
	call	test_and_clear_bit@PLT
	test	eax, eax
	je	.L15
	mov	eax, DWORD PTR 76[rbx]
	mov	rcx, QWORD PTR IB_QPT_GSI[rip]
	mov	DWORD PTR 160[rsp], eax
	mov	eax, DWORD PTR IB_WC_SUCCESS[rip]
	mov	DWORD PTR 156[rsp], eax
	mov	eax, DWORD PTR IB_WC_RECV[rip]
	mov	DWORD PTR 152[rsp], eax
	lea	rax, 48[rbx]
	mov	QWORD PTR 144[rsp], rax
	mov	eax, DWORD PTR 56[r12]
	mov	DWORD PTR 120[rsp], eax
	xor	eax, eax
	cmp	QWORD PTR 48[rbx], rcx
	jne	.L28
	mov	rax, QWORD PTR 8[rsp]
	mov	eax, DWORD PTR 32[rax]
.L28:
	mov	rsi, QWORD PTR 72[rsp]
	mov	edi, DWORD PTR 60[rbx]
	mov	DWORD PTR 140[rsp], eax
	mov	eax, 1
	mov	ecx, DWORD PTR 4[rsi]
	sal	eax, cl
	mov	rcx, QWORD PTR 56[rsp]
	sub	eax, 1
	mov	edx, DWORD PTR [rcx]
	and	edx, eax
	and	eax, DWORD PTR 8[rcx]
	or	edx, DWORD PTR [rsi]
	mov	DWORD PTR 128[rsp], eax
	mov	eax, DWORD PTR 72[rbx]
	mov	DWORD PTR 124[rsp], edx
	mov	edx, DWORD PTR 20[rcx]
	mov	DWORD PTR 132[rsp], eax
	mov	rax, QWORD PTR 8[rsp]
	mov	DWORD PTR 136[rsp], edx
	mov	r12d, DWORD PTR 16[rax]
	and	r12d, DWORD PTR IB_SEND_SOLICITED[rip]
	call	to_icq@PLT
	mov	rsi, QWORD PTR 80[rsp]
	mov	edx, r12d
	mov	edi, eax
	call	qib_cq_enter@PLT
	add	DWORD PTR 0[rbp], 1
	jmp	.L15
	.p2align 4,,10
	.p2align 3
.L62:
	mov	eax, DWORD PTR QIB_R_REUSE_SGE[rip]
	or	DWORD PTR 16[rbx], eax
	add	DWORD PTR 4[rbp], 1
	jmp	.L15
	.p2align 4,,10
	.p2align 3
.L61:
	mov	rsi, QWORD PTR 72[rsp]
	mov	eax, 1
	mov	ecx, DWORD PTR 4[rsi]
	sal	eax, cl
	lea	r13d, -1[rax]
	mov	rax, QWORD PTR 56[rsp]
	mov	rdi, QWORD PTR 8[rax]
	and	r13d, DWORD PTR [rax]
	or	r13d, DWORD PTR [rsi]
	call	cpu_to_be16@PLT
	movsx	r13, r13d
	mov	rdi, r13
	mov	r15d, eax
	call	cpu_to_be16@PLT
	mov	rcx, QWORD PTR 56[rsp]
	mov	rdx, r14
	mov	rdi, rbp
	mov	r9d, DWORD PTR 56[rbx]
	mov	esi, DWORD PTR IB_NOTICE_TRAP_BAD_QKEY[rip]
	mov	ecx, DWORD PTR 20[rcx]
	push	r15
	.cfi_def_cfa_offset 264
	push	rax
	.cfi_def_cfa_offset 272
	mov	r8d, DWORD PTR 56[r12]
	call	qib_bad_pqkey@PLT
	pop	rdx
	.cfi_def_cfa_offset 264
	pop	rcx
	.cfi_def_cfa_offset 256
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L8:
	mov	rsi, QWORD PTR 72[rsp]
	mov	eax, 1
	mov	ecx, DWORD PTR 4[rsi]
	sal	eax, cl
	lea	r13d, -1[rax]
	mov	rax, QWORD PTR 56[rsp]
	mov	rdi, QWORD PTR 8[rax]
	and	r13d, DWORD PTR [rax]
	or	r13d, DWORD PTR [rsi]
	call	cpu_to_be16@PLT
	movsx	r13, r13d
	mov	rdi, r13
	mov	r15d, eax
	call	cpu_to_be16@PLT
	mov	rcx, QWORD PTR 56[rsp]
	mov	rdi, rbp
	mov	rdx, r14
	mov	r9d, DWORD PTR 56[rbx]
	mov	esi, DWORD PTR IB_NOTICE_TRAP_BAD_PKEY[rip]
	mov	ecx, DWORD PTR 20[rcx]
	push	r15
	.cfi_def_cfa_offset 264
	push	rax
	.cfi_def_cfa_offset 272
	mov	r8d, DWORD PTR 56[r12]
	call	qib_bad_pqkey@PLT
	pop	rsi
	.cfi_def_cfa_offset 264
	pop	rdi
	.cfi_def_cfa_offset 256
	jmp	.L6
.L59:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	qib_ud_loopback, .-qib_ud_loopback
	.comm	ib_qib_state_ops,8,8
	.comm	QIB_SEGSZ,8,8
	.comm	QIB_R_WRID_VALID,4,4
	.comm	QIB_R_REUSE_SGE,4,4
	.comm	QIB_PROCESS_RECV_OK,4,4
	.comm	IB_WR_SEND_WITH_IMM,8,8
	.comm	IB_WC_WITH_IMM,4,4
	.comm	IB_WC_SUCCESS,4,4
	.comm	IB_WC_RECV,4,4
	.comm	IB_WC_LOC_QP_OP_ERR,4,4
	.comm	IB_WC_GRH,4,4
	.comm	IB_SEND_SOLICITED,4,4
	.comm	IB_QPT_GSI,8,8
	.comm	IB_NOTICE_TRAP_BAD_QKEY,4,4
	.comm	IB_NOTICE_TRAP_BAD_PKEY,4,4
	.comm	IB_AH_GRH,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_qib_ud.c_qib_ud_loopback.c"
	.text
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	qib_ud_loopback, %function
qib_ud_loopback:
	@ args = 0, pretend = 0, frame = 104
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	ldr	r3, .L64
	sub	sp, sp, #124
	str	r1, [sp, #16]
	mov	r4, r1
	mov	r8, r0
	ldr	r1, [r0, #44]
	ldr	r0, [r0, #40]
	ldr	r3, [r3]
	str	r3, [sp, #116]
	mov	r3,#0
	bl	to_iport
	ldr	r1, [r4, #24]
	mov	r9, r0
	bl	qib_lookup_qpn
	subs	r5, r0, #0
	beq	.L54
	ldr	r2, [r5, #28]
	ldr	r3, [r8, #28]
	cmp	r2, r3
	beq	.L55
.L4:
	ldr	r3, [r9, #4]
	add	r3, r3, #1
	str	r3, [r9, #4]
.L6:
	add	r0, r5, #20
	bl	atomic_dec_and_test
	cmp	r0, #0
	bne	.L56
.L1:
	ldr	r3, .L64
	ldr	r2, [r3]
	ldr	r3, [sp, #116]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L57
	add	sp, sp, #124
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L55:
	ldr	r3, .L64+4
	ldr	r1, [r5]
	ldr	r2, [r3]
	ldr	r3, .L64+8
	ldr	r2, [r2, r1, lsl #2]
	ldr	r3, [r3]
	tst	r2, r3
	beq	.L4
	ldr	r3, [sp, #16]
	ldr	r0, [r3, #20]
	bl	to_iah
	mov	r3, r0
	mov	r0, r9
	str	r3, [sp, #32]
	bl	ppd_from_ibp
	ldr	r3, [r5, #32]
	str	r0, [sp, #44]
	cmp	r3, #1
	bgt	.L58
.L7:
	cmp	r3, #0
	beq	.L9
	ldr	r3, [sp, #16]
	ldr	r0, [r5, #4]
	ldr	r4, [r3, #12]
	cmp	r4, #0
	ldrlt	r4, [r8, #4]
	subs	r0, r0, r4
	movne	r0, #1
	bl	unlikely
	cmp	r0, #0
	bne	.L59
.L9:
	ldr	r4, [sp, #16]
	mov	r2, #48
	mov	r1, #0
	add	r0, sp, #68
	ldr	r6, [r4]
	bl	memset
	ldr	r3, .L64+12
	ldr	r1, [r4, #4]
	ldr	r2, [r3]
	add	r3, r6, #4
	cmp	r1, r2
	str	r3, [sp, #64]
	bne	.L11
	ldr	r3, .L64+16
	ldr	r2, [sp, #16]
	ldr	r3, [r3]
	ldr	r2, [r2, #32]
	str	r3, [sp, #108]
	str	r2, [sp, #112]
.L11:
	add	r3, r5, #24
	ldr	r4, .L64+20
	mov	r0, r3
	mov	r1, #0
	str	r3, [sp, #36]
	bl	spin_lock_irqsave
	ldr	r2, [r4]
	ldr	r3, [r5, #8]
	ands	r1, r3, r2
	beq	.L12
	bic	r3, r3, r2
	str	r3, [r5, #8]
.L13:
	ldr	r0, [sp, #64]
	ldr	r3, [r5, #12]
	cmp	r0, r3
	movle	r0, #0
	movgt	r0, #1
	bl	unlikely
	subs	r3, r0, #0
	str	r3, [sp, #48]
	bne	.L60
	ldr	r3, .L64+24
	ldr	r1, [sp, #32]
	ldr	r3, [r3]
	ldr	r2, [r1, #8]
	add	r0, r5, #56
	tst	r2, r3
	str	r0, [sp, #40]
	bne	.L61
	mov	r2, #1
	mov	r1, #4
	ldr	r0, [sp, #40]
	bl	qib_skip_sge
.L19:
	ldr	r2, [sp, #16]
	cmp	r6, #0
	ldr	r3, [r2, #36]
	mov	r1, r3
	ldr	r0, [r3, #8]
	ldr	r4, [r3, #4]
	str	r0, [sp, #24]
	ldr	r0, [r3, #12]
	ldr	fp, [r3, #20]
	str	r0, [sp, #28]
	ldr	r0, [r3, #16]
	ldr	r7, [r1], #24
	ldr	r3, [r2, #28]
	str	r0, [sp, #20]
	beq	.L27
	str	r9, [sp, #52]
	str	r5, [sp, #56]
	str	r8, [sp, #60]
	mov	r5, r1
	mov	r10, fp
	mov	r8, r3
	ldr	r9, [sp, #40]
	b	.L20
.L62:
	subs	r8, r8, #1
	moveq	r4, r8
	beq	.L24
	mov	r3, r5
	ldr	r2, [r5, #8]
	ldr	r7, [r3], #24
	str	r2, [sp, #24]
	ldr	r2, [r5, #12]
	ldr	r4, [r5, #4]
	ldr	r10, [r5, #20]
	str	r2, [sp, #28]
	ldr	r2, [r5, #16]
	mov	r5, r3
	str	r2, [sp, #20]
.L24:
	subs	r6, r6, fp
	beq	.L50
.L20:
	cmp	r6, r7
	movlt	r2, r6
	movge	r2, r7
	cmp	r2, r4
	movlt	fp, r2
	movge	fp, r4
	clz	r0, fp
	lsr	r0, r0, #5
	bl	BUG_ON
	mov	r1, r10
	mov	r2, fp
	mov	r3, #1
	mov	r0, r9
	bl	qib_copy_sge
	subs	r4, r4, fp
	sub	r7, r7, fp
	add	r10, r10, fp, lsl #2
	beq	.L62
	cmp	r7, #0
	bne	.L24
	ldr	r3, [sp, #20]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L24
	ldr	r3, .L64+28
	ldr	r2, [sp, #24]
	ldr	r3, [r3]
	add	r2, r2, #1
	cmp	r2, r3
	str	r2, [sp, #24]
	lsllt	r3, r2, #3
	blt	.L26
	ldr	r3, [sp, #20]
	ldr	r2, [sp, #28]
	ldr	r3, [r3]
	add	r2, r2, #1
	cmp	r2, r3
	str	r2, [sp, #28]
	bge	.L50
	mov	r3, r7
	str	r7, [sp, #24]
.L26:
	ldr	r2, [sp, #20]
	ldr	r1, [r2, #4]
	ldr	r2, [sp, #28]
	ldr	r1, [r1, r2, lsl #2]
	ldr	r0, [r1]
	add	r1, r0, r3
	ldr	r10, [r1, #4]
	ldr	r7, [r0, r3]
	b	.L24
.L56:
	add	r0, r5, #16
	bl	wake_up
	b	.L1
.L58:
	ldr	r1, [r8, #60]
	mov	r0, r9
	bl	qib_get_pkey
	ldr	r1, [r5, #60]
	mov	r4, r0
	mov	r0, r9
	bl	qib_get_pkey
	mov	r1, r0
	mov	r0, r4
	bl	qib_pkey_ok
	clz	r0, r0
	lsr	r0, r0, #5
	bl	unlikely
	cmp	r0, #0
	bne	.L8
	ldr	r3, [r5, #32]
	b	.L7
.L54:
	ldr	r3, [r9, #4]
	add	r3, r3, #1
	str	r3, [r9, #4]
	b	.L1
.L12:
	mov	r0, r5
	bl	qib_get_rwqe
	cmp	r0, #0
	blt	.L63
	bne	.L13
	ldr	r3, [r5, #32]
	cmp	r3, #0
	ldreq	r3, [r9, #8]
	addeq	r3, r3, #1
	streq	r3, [r9, #8]
.L15:
	mov	r1, #0
	ldr	r0, [sp, #36]
	bl	spin_unlock_irqrestore
	b	.L6
.L61:
	mov	r3, #1
	mov	r2, #4
	add	r1, r1, #16
	bl	qib_copy_sge
	ldr	r2, .L64+32
	ldr	r3, [sp, #108]
	ldr	r2, [r2]
	orr	r3, r3, r2
	str	r3, [sp, #108]
	b	.L19
.L63:
	ldr	r3, .L64+36
	mov	r0, r5
	ldr	r1, [r3]
	bl	qib_rc_error
	b	.L15
.L50:
	ldr	r9, [sp, #52]
	ldr	r5, [sp, #56]
	ldr	r8, [sp, #60]
.L27:
	ldr	r0, [sp, #40]
	bl	qib_put_ss
	ldr	r3, .L64+40
	add	r1, r5, #52
	ldr	r0, [r3]
	bl	test_and_clear_bit
	cmp	r0, #0
	beq	.L15
	ldr	r2, [r8, #32]
	ldr	r3, .L64+44
	str	r2, [sp, #68]
	ldr	r3, [r3]
	ldr	r2, [r5, #28]
	ldr	r1, .L64+48
	cmp	r2, r3
	ldr	r2, [r5, #48]
	add	r3, r5, #28
	str	r2, [sp, #104]
	mvn	r2, #0
	str	r3, [sp, #92]
	ldr	r1, [r1]
	ldreq	r3, [sp, #16]
	ldr	r0, .L64+52
	ldreq	r3, [r3, #16]
	ldr	r0, [r0]
	str	r1, [sp, #96]
	ldr	r1, [sp, #44]
	streq	r3, [sp, #48]
	str	r0, [sp, #100]
	ldm	r1, {r0, r3}
	mvn	r2, r2, lsl r3
	ldr	ip, [sp, #32]
	ldr	r3, [ip]
	ldr	r1, [ip, #4]
	and	r3, r3, r2
	orr	r3, r3, r0
	ldr	r0, [sp, #48]
	ldr	ip, [ip, #12]
	and	r2, r2, r1
	ldr	r1, [r5, #44]
	str	r0, [sp, #88]
	ldr	r0, [r5, #36]
	str	r3, [sp, #72]
	str	r2, [sp, #76]
	str	ip, [sp, #84]
	str	r1, [sp, #80]
	bl	to_icq
	ldr	r2, [sp, #16]
	ldr	r3, .L64+56
	ldr	r2, [r2, #8]
	ldr	r3, [r3]
	add	r1, sp, #64
	and	r2, r2, r3
	bl	qib_cq_enter
	ldr	r3, [r9]
	add	r3, r3, #1
	str	r3, [r9]
	b	.L15
.L60:
	ldr	r2, [r5, #8]
	ldr	r3, [r9, #4]
	ldr	r1, [r4]
	add	r3, r3, #1
	orr	r2, r2, r1
	str	r2, [r5, #8]
	str	r3, [r9, #4]
	b	.L15
.L59:
	mvn	r1, #0
	ldr	r0, [sp, #44]
	ldr	ip, [sp, #32]
	ldr	r2, [r0, #4]
	ldr	r3, [ip]
	ldr	r0, [r0]
	bic	r3, r3, r1, lsl r2
	ldr	r2, .L64+60
.L52:
	orr	r0, r3, r0
	ldr	r10, [r2]
	ldr	fp, [r8, #32]
	ldr	r7, [ip, #12]
	ldr	r8, [r5, #32]
	bl	cpu_to_be16
	ldr	ip, [sp, #32]
	mov	r6, r0
	ldr	r0, [ip, #4]
	bl	cpu_to_be16
	mov	r1, r10
	str	r0, [sp, #12]
	mov	r3, r7
	mov	r2, r4
	mov	r0, r9
	str	fp, [sp]
	str	r6, [sp, #8]
	str	r8, [sp, #4]
	bl	qib_bad_pqkey
	b	.L6
.L8:
	mvn	r1, #0
	ldr	r0, [sp, #44]
	ldr	ip, [sp, #32]
	ldr	r2, [r0, #4]
	ldr	r3, [ip]
	ldr	r0, [r0]
	bic	r3, r3, r1, lsl r2
	ldr	r2, .L64+64
	b	.L52
.L57:
	bl	__stack_chk_fail
.L65:
	.align	2
.L64:
	.word	.LC0
	.word	ib_qib_state_ops
	.word	QIB_PROCESS_RECV_OK
	.word	IB_WR_SEND_WITH_IMM
	.word	IB_WC_WITH_IMM
	.word	QIB_R_REUSE_SGE
	.word	IB_AH_GRH
	.word	QIB_SEGSZ
	.word	IB_WC_GRH
	.word	IB_WC_LOC_QP_OP_ERR
	.word	QIB_R_WRID_VALID
	.word	IB_QPT_GSI
	.word	IB_WC_RECV
	.word	IB_WC_SUCCESS
	.word	IB_SEND_SOLICITED
	.word	IB_NOTICE_TRAP_BAD_QKEY
	.word	IB_NOTICE_TRAP_BAD_PKEY
	.size	qib_ud_loopback, .-qib_ud_loopback
	.comm	ib_qib_state_ops,4,4
	.comm	QIB_SEGSZ,4,4
	.comm	QIB_R_WRID_VALID,4,4
	.comm	QIB_R_REUSE_SGE,4,4
	.comm	QIB_PROCESS_RECV_OK,4,4
	.comm	IB_WR_SEND_WITH_IMM,4,4
	.comm	IB_WC_WITH_IMM,4,4
	.comm	IB_WC_SUCCESS,4,4
	.comm	IB_WC_RECV,4,4
	.comm	IB_WC_LOC_QP_OP_ERR,4,4
	.comm	IB_WC_GRH,4,4
	.comm	IB_SEND_SOLICITED,4,4
	.comm	IB_QPT_GSI,4,4
	.comm	IB_NOTICE_TRAP_BAD_QKEY,4,4
	.comm	IB_NOTICE_TRAP_BAD_PKEY,4,4
	.comm	IB_AH_GRH,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
