	.file	"225142089.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"ping"
.LC1:
	.string	"transfer"
.LC2:
	.string	"sink"
	.section	.data.rel.local,"aw"
	.align 32
	.type	dict, @object
	.size	dict, 64
dict:
	.quad	.LC0
	.long	2
	.zero	4
	.quad	.LC1
	.long	3
	.zero	4
	.quad	.LC2
	.long	4
	.zero	4
	.quad	0
	.zero	8
	.globl	t
	.bss
	.align 32
	.type	t, @object
	.size	t, 17736
t:
	.zero	17736
	.text
	.type	get_throughput_max_aggregate, @function
get_throughput_max_aggregate:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L2
.L5:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L7
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2940
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jnb	.L4
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2940
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L4
.L7:
	nop
.L4:
	add	DWORD PTR -4[rbp], 1
.L2:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L5
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	get_throughput_max_aggregate, .-get_throughput_max_aggregate
	.type	get_request_max_aggregate, @function
get_request_max_aggregate:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L9
.L12:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L14
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2924
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jnb	.L11
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2924
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L11
.L14:
	nop
.L11:
	add	DWORD PTR -4[rbp], 1
.L9:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L12
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	get_request_max_aggregate, .-get_request_max_aggregate
	.type	get_latency_max_aggregate, @function
get_latency_max_aggregate:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L16
.L19:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L21
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2908
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jnb	.L18
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2908
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L18
.L21:
	nop
.L18:
	add	DWORD PTR -4[rbp], 1
.L16:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L19
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	get_latency_max_aggregate, .-get_latency_max_aggregate
	.type	get_apbridge_unipro_latency_max_aggregate, @function
get_apbridge_unipro_latency_max_aggregate:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L23
.L26:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L28
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2956
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jnb	.L25
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2956
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L25
.L28:
	nop
.L25:
	add	DWORD PTR -4[rbp], 1
.L23:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L26
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	get_apbridge_unipro_latency_max_aggregate, .-get_apbridge_unipro_latency_max_aggregate
	.type	get_gbphy_firmware_latency_max_aggregate, @function
get_gbphy_firmware_latency_max_aggregate:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L30
.L33:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L35
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2972
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jnb	.L32
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2972
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L32
.L35:
	nop
.L32:
	add	DWORD PTR -4[rbp], 1
.L30:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L33
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	get_gbphy_firmware_latency_max_aggregate, .-get_gbphy_firmware_latency_max_aggregate
	.type	get_throughput_min_aggregate, @function
get_throughput_min_aggregate:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	jmp	.L37
.L40:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L42
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2944
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jbe	.L39
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2944
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L39
.L42:
	nop
.L39:
	add	DWORD PTR -4[rbp], 1
.L37:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L40
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	get_throughput_min_aggregate, .-get_throughput_min_aggregate
	.type	get_request_min_aggregate, @function
get_request_min_aggregate:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	jmp	.L44
.L47:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L49
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2928
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jbe	.L46
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2928
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L46
.L49:
	nop
.L46:
	add	DWORD PTR -4[rbp], 1
.L44:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L47
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	get_request_min_aggregate, .-get_request_min_aggregate
	.type	get_latency_min_aggregate, @function
get_latency_min_aggregate:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	jmp	.L51
.L54:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L56
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2912
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jbe	.L53
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2912
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L53
.L56:
	nop
.L53:
	add	DWORD PTR -4[rbp], 1
.L51:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L54
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	get_latency_min_aggregate, .-get_latency_min_aggregate
	.type	get_apbridge_unipro_latency_min_aggregate, @function
get_apbridge_unipro_latency_min_aggregate:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	jmp	.L58
.L61:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L63
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2960
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jbe	.L60
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2960
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L60
.L63:
	nop
.L60:
	add	DWORD PTR -4[rbp], 1
.L58:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L61
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	get_apbridge_unipro_latency_min_aggregate, .-get_apbridge_unipro_latency_min_aggregate
	.type	get_gbphy_firmware_latency_min_aggregate, @function
get_gbphy_firmware_latency_min_aggregate:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], -1
	mov	DWORD PTR -4[rbp], 0
	jmp	.L65
.L68:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L70
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2976
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -8[rbp], eax
	jbe	.L67
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2976
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -8[rbp], eax
	jmp	.L67
.L70:
	nop
.L67:
	add	DWORD PTR -4[rbp], 1
.L65:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L68
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	get_gbphy_firmware_latency_min_aggregate, .-get_gbphy_firmware_latency_min_aggregate
	.type	get_throughput_avg_aggregate, @function
get_throughput_avg_aggregate:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L72
.L77:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L80
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	test	rax, rax
	js	.L75
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L76
.L75:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L76:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2936
	movss	xmm1, DWORD PTR [rax]
	addss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -12[rbp], eax
	jmp	.L74
.L80:
	nop
.L74:
	add	DWORD PTR -4[rbp], 1
.L72:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L77
	cmp	DWORD PTR -8[rbp], 0
	je	.L78
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 0
	div	DWORD PTR -8[rbp]
	mov	DWORD PTR -12[rbp], eax
.L78:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	get_throughput_avg_aggregate, .-get_throughput_avg_aggregate
	.type	get_request_avg_aggregate, @function
get_request_avg_aggregate:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L82
.L87:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L90
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	test	rax, rax
	js	.L85
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L86
.L85:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L86:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2920
	movss	xmm1, DWORD PTR [rax]
	addss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -12[rbp], eax
	jmp	.L84
.L90:
	nop
.L84:
	add	DWORD PTR -4[rbp], 1
.L82:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L87
	cmp	DWORD PTR -8[rbp], 0
	je	.L88
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 0
	div	DWORD PTR -8[rbp]
	mov	DWORD PTR -12[rbp], eax
.L88:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	get_request_avg_aggregate, .-get_request_avg_aggregate
	.type	get_latency_avg_aggregate, @function
get_latency_avg_aggregate:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L92
.L97:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L100
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	test	rax, rax
	js	.L95
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L96
.L95:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L96:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2904
	movss	xmm1, DWORD PTR [rax]
	addss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -12[rbp], eax
	jmp	.L94
.L100:
	nop
.L94:
	add	DWORD PTR -4[rbp], 1
.L92:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L97
	cmp	DWORD PTR -8[rbp], 0
	je	.L98
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 0
	div	DWORD PTR -8[rbp]
	mov	DWORD PTR -12[rbp], eax
.L98:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	get_latency_avg_aggregate, .-get_latency_avg_aggregate
	.type	get_apbridge_unipro_latency_avg_aggregate, @function
get_apbridge_unipro_latency_avg_aggregate:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L102
.L107:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L110
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	test	rax, rax
	js	.L105
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L106
.L105:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L106:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2952
	movss	xmm1, DWORD PTR [rax]
	addss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -12[rbp], eax
	jmp	.L104
.L110:
	nop
.L104:
	add	DWORD PTR -4[rbp], 1
.L102:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L107
	cmp	DWORD PTR -8[rbp], 0
	je	.L108
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 0
	div	DWORD PTR -8[rbp]
	mov	DWORD PTR -12[rbp], eax
.L108:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	get_apbridge_unipro_latency_avg_aggregate, .-get_apbridge_unipro_latency_avg_aggregate
	.type	get_gbphy_firmware_latency_avg_aggregate, @function
get_gbphy_firmware_latency_avg_aggregate:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L112
.L117:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L120
	add	DWORD PTR -8[rbp], 1
	mov	eax, DWORD PTR -12[rbp]
	test	rax, rax
	js	.L115
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L116
.L115:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L116:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	add	rax, rdx
	add	rax, 2968
	movss	xmm1, DWORD PTR [rax]
	addss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -12[rbp], eax
	jmp	.L114
.L120:
	nop
.L114:
	add	DWORD PTR -4[rbp], 1
.L112:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L117
	cmp	DWORD PTR -8[rbp], 0
	je	.L118
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 0
	div	DWORD PTR -8[rbp]
	mov	DWORD PTR -12[rbp], eax
.L118:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	get_gbphy_firmware_latency_avg_aggregate, .-get_gbphy_firmware_latency_avg_aggregate
	.globl	abort
	.type	abort, @function
abort:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edi, 1
	call	_exit@PLT
	.cfi_endproc
.LFE21:
	.size	abort, .-abort
	.section	.rodata
	.align 8
.LC3:
	.ascii	"Usage: loopback_test TEST [SIZE] ITERATIONS [SYSPATH] [DBGPA"
	.ascii	"TH]\n\n  Run TEST for a number of ITERATIONS with operation "
	.ascii	"data SIZE bytes\n  TEST may be 'ping' 'transfer' or 'sink'\n"
	.ascii	"  SIZE indicates the size of transfer <= greybus max payload"
	.ascii	" bytes\n  ITERATIONS indicates the number of times to execut"
	.ascii	"e TEST at SIZE bytes\n             Note if ITERATIONS is set"
	.ascii	" to zero then this utility will\n             initiate an in"
	.ascii	"finite (non terminating) test and exit\n             without"
	.ascii	" logging any metrics data\n  SYSPATH indicates the sysfs pat"
	.ascii	"h for the loopback greybus entries e.g.\n          /sys/bus/"
	.ascii	"greybus/devices\n  DBGPATH indicates the debugfs path for th"
	.ascii	"e loopback greybus entries e.g.\n          /sys/kernel/debug"
	.ascii	"/gb_loopback/\n Mandatory arguments\n   -t     must be one o"
	.ascii	"f the test names - sink, transfer or ping\n   -i     iterati"
	.ascii	"on count - the number of iterations to run the test over\n O"
	.ascii	"ptional arguments\n   -S     sysfs location - location for g"
	.ascii	"reybus 'endo' entires default /sys/bus/greybus/devices/\n   "
	.ascii	"-D     debugfs location - location for loopback debugfs entr"
	.ascii	"ies default /sys/kernel/debug/gb_loopback/\n   -s     size o"
	.ascii	"f data packet to send during test - defaults to zero\n   -m "
	.ascii	"    mask - a bit mask of connections to include example: -m "
	.ascii	"8 = 4th connection -m 9 = 1st and 4th connection etc\n      "
	.ascii	"           default is zero which means broadcast to all conn"
	.ascii	"ections\n   -v     verbose output\n   -d     debug output\n "
	.ascii	"  -r     raw data output - when specified the full list of l"
	.ascii	"atency values are included in the output CSV\n   -p     porc"
	.ascii	"elain - when specified printout is in a user-friendly non-CS"
	.ascii	"V format. This option suppresses writing to CSV file\n   -a "
	.ascii	"    aggregate - show aggregation of all enabled devices\n   "
	.ascii	"-l     list found loopback devices and exit\n   -x     Async"
	.ascii	" - Enable async transfers\n   -o     Async Timeout - Timeout"
	.ascii	" in uSec for async operations\n   -O     Poll loop time out "
	.ascii	"in seconds(max time a test is expected to last, default: 30s"
	.ascii	"ec)\n   -c     Max number of outstanding operations"
	.ascii	" for async operations\n   -w     Wait in uSec between operat"
	.ascii	"ions\n   -z     Enable output to a CSV file (incompatible wi"
	.ascii	"th -p)\n   -f     When starting new loopback test, stop curr"
	.ascii	"ently running tests on all devices\nExamples:\n  Send 10000 "
	.ascii	"transfers with a packet size of 128 bytes to all active conn"
	.ascii	"ections\n  loopback_test -t transfer -s 128 -i 10000 -S /sys"
	.ascii	"/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n  l"
	.ascii	"oopback_test -t transfer -s 128 -i 10000 -m 0\n  Send 10000 "
	.ascii	"transfers with a packet size of 128 bytes to connection 1 an"
	.string	"d 4\n  loopback_test -t transfer -s 128 -i 10000 -m 9\n  loopback_test -t ping -s 0 128 -i -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n  loopback_test -t sink -s 2030 -i 32768 -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n"
	.text
	.globl	usage
	.type	usage, @function
usage:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 2788
	mov	esi, 1
	lea	rdi, .LC3[rip]
	call	fwrite@PLT
	call	abort
	.cfi_endproc
.LFE22:
	.size	usage, .-usage
	.type	device_enabled, @function
device_enabled:
.LFB23:
	.cfi_startproc
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	je	.L124
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	eax, DWORD PTR -12[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	and	eax, 1
	test	eax, eax
	je	.L125
.L124:
	mov	eax, 1
	jmp	.L126
.L125:
	mov	eax, 0
.L126:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	device_enabled, .-device_enabled
	.section	.rodata
.LC4:
	.string	"No loopback devices."
.LC5:
	.string	"device[%d] = %s\n"
	.text
	.type	show_loopback_devices, @function
show_loopback_devices:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	test	eax, eax
	jne	.L128
	lea	rdi, .LC4[rip]
	call	puts@PLT
	jmp	.L127
.L128:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L130
.L131:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	lea	rdx, 8[rax]
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L130:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L131
.L127:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	show_loopback_devices, .-show_loopback_devices
	.section	.rodata
.LC6:
	.string	"%s%s"
.LC7:
	.string	"unable to open %s\n"
	.text
	.globl	open_sysfs
	.type	open_sysfs, @function
open_sysfs:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 576
	mov	QWORD PTR -552[rbp], rdi
	mov	QWORD PTR -560[rbp], rsi
	mov	DWORD PTR -564[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rcx, QWORD PTR -560[rbp]
	mov	rdx, QWORD PTR -552[rbp]
	lea	rax, -528[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	lea	rdx, .LC6[rip]
	mov	esi, 512
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	edx, DWORD PTR -564[rbp]
	lea	rax, -528[rbp]
	mov	esi, edx
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -532[rbp], eax
	cmp	DWORD PTR -532[rbp], 0
	jns	.L133
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -528[rbp]
	lea	rsi, .LC7[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	call	abort
.L133:
	mov	eax, DWORD PTR -532[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L135
	call	__stack_chk_fail@PLT
.L135:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	open_sysfs, .-open_sysfs
	.section	.rodata
.LC8:
	.string	"unable to read from %s%s %s\n"
	.text
	.globl	read_sysfs_int_fd
	.type	read_sysfs_int_fd, @function
read_sysfs_int_fd:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	DWORD PTR -52[rbp], edi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rcx, -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	edx, 32
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	test	rax, rax
	jns	.L137
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR -64[rbp]
	mov	r8, rsi
	lea	rsi, .LC8[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	close@PLT
	call	abort
.L137:
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	rdx, QWORD PTR -8[rbp]
	sub	rdx, QWORD PTR fs:40
	je	.L139
	call	__stack_chk_fail@PLT
.L139:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	read_sysfs_int_fd, .-read_sysfs_int_fd
	.globl	read_sysfs_float_fd
	.type	read_sysfs_float_fd, @function
read_sysfs_float_fd:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	DWORD PTR -52[rbp], edi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rcx, -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	edx, 32
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	test	rax, rax
	jns	.L141
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, QWORD PTR -72[rbp]
	mov	rdx, QWORD PTR -64[rbp]
	mov	r8, rsi
	lea	rsi, .LC8[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	close@PLT
	call	abort
.L141:
	lea	rax, -48[rbp]
	mov	rdi, rax
	call	atof@PLT
	cvtsd2ss	xmm0, xmm0
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L143
	call	__stack_chk_fail@PLT
.L143:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	read_sysfs_float_fd, .-read_sysfs_float_fd
	.globl	read_sysfs_int
	.type	read_sysfs_int, @function
read_sysfs_int:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	open_sysfs
	mov	DWORD PTR -8[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read_sysfs_int_fd
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	read_sysfs_int, .-read_sysfs_int
	.globl	read_sysfs_float
	.type	read_sysfs_float, @function
read_sysfs_float:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	open_sysfs
	mov	DWORD PTR -8[rbp], eax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read_sysfs_float_fd
	movd	eax, xmm0
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	movss	xmm0, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	read_sysfs_float, .-read_sysfs_float
	.section	.rodata
.LC9:
	.string	"%d"
.LC10:
	.string	"unable to write to %s%s %s\n"
	.text
	.globl	write_sysfs_val
	.type	write_sysfs_val, @function
write_sysfs_val:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	DWORD PTR -84[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 2
	mov	rsi, rcx
	mov	rdi, rax
	call	open_sysfs
	mov	DWORD PTR -56[rbp], eax
	mov	edx, DWORD PTR -84[rbp]
	lea	rax, -48[rbp]
	mov	ecx, edx
	lea	rdx, .LC9[rip]
	mov	esi, 32
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	DWORD PTR -52[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	movsx	rdx, eax
	lea	rcx, -48[rbp]
	mov	eax, DWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	test	rax, rax
	jns	.L149
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	mov	r8, rsi
	lea	rsi, .LC10[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	close@PLT
	call	abort
.L149:
	mov	eax, DWORD PTR -56[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L150
	call	__stack_chk_fail@PLT
.L150:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	write_sysfs_val, .-write_sysfs_val
	.section	.rodata
.LC11:
	.string	"error"
.LC12:
	.string	"requests_per_second_min"
.LC13:
	.string	"requests_per_second_max"
.LC14:
	.string	"requests_per_second_avg"
.LC15:
	.string	"latency_min"
.LC16:
	.string	"latency_max"
.LC17:
	.string	"latency_avg"
.LC18:
	.string	"throughput_min"
.LC19:
	.string	"throughput_max"
.LC20:
	.string	"throughput_avg"
.LC21:
	.string	"apbridge_unipro_latency_min"
.LC22:
	.string	"apbridge_unipro_latency_max"
.LC23:
	.string	"apbridge_unipro_latency_avg"
.LC24:
	.string	"gbphy_firmware_latency_min"
.LC25:
	.string	"gbphy_firmware_latency_max"
.LC26:
	.string	"gbphy_firmware_latency_avg"
	.text
	.type	get_results, @function
get_results:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -20[rbp], 0
	jmp	.L152
.L155:
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L158
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	add	rax, 8
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1536
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC11[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 80[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC12[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 24[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC13[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC14[rip]
	mov	rdi, rax
	call	read_sysfs_float
	movd	eax, xmm0
	mov	rdx, QWORD PTR -16[rbp]
	mov	DWORD PTR 16[rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC15[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC16[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC17[rip]
	mov	rdi, rax
	call	read_sysfs_float
	movd	eax, xmm0
	mov	rdx, QWORD PTR -16[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC18[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 40[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC19[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 36[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC20[rip]
	mov	rdi, rax
	call	read_sysfs_float
	movd	eax, xmm0
	mov	rdx, QWORD PTR -16[rbp]
	mov	DWORD PTR 32[rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 56[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC22[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 52[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC23[rip]
	mov	rdi, rax
	call	read_sysfs_float
	movd	eax, xmm0
	mov	rdx, QWORD PTR -16[rbp]
	mov	DWORD PTR 48[rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC24[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 72[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC25[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 68[rax], edx
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 512
	lea	rsi, .LC26[rip]
	mov	rdi, rax
	call	read_sysfs_float
	movd	eax, xmm0
	mov	rdx, QWORD PTR -16[rbp]
	mov	DWORD PTR 64[rdx], eax
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 24[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 28[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 12[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 40[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 44[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 52[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 56[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 60[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 68[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 72[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 76[rax], edx
	jmp	.L154
.L158:
	nop
.L154:
	add	DWORD PTR -20[rbp], 1
.L152:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L155
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 28[rax]
	test	eax, eax
	je	.L156
	mov	rax, QWORD PTR -40[rbp]
	add	rax, 17568
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_request_min_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 24[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_request_max_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 20[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_request_avg_aggregate
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -16[rbp]
	movss	DWORD PTR 16[rax], xmm0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_latency_min_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_latency_max_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 4[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_latency_avg_aggregate
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -16[rbp]
	movss	DWORD PTR [rax], xmm0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_throughput_min_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 40[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_throughput_max_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 36[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_throughput_avg_aggregate
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -16[rbp]
	movss	DWORD PTR 32[rax], xmm0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_apbridge_unipro_latency_min_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 56[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_apbridge_unipro_latency_max_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 52[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_apbridge_unipro_latency_avg_aggregate
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -16[rbp]
	movss	DWORD PTR 48[rax], xmm0
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_gbphy_firmware_latency_min_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 72[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_gbphy_firmware_latency_max_aggregate
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 68[rax], edx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	get_gbphy_firmware_latency_avg_aggregate
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	mov	rax, QWORD PTR -16[rbp]
	movss	DWORD PTR 64[rax], xmm0
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 24[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 28[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 12[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 40[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 44[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 52[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 56[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 60[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 68[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 72[rax]
	sub	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	DWORD PTR 76[rax], edx
.L156:
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	get_results, .-get_results
	.section	.rodata
	.align 8
.LC27:
	.string	"unable to write %d bytes to csv %s\n"
	.text
	.globl	log_csv_error
	.type	log_csv_error, @function
log_csv_error:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	mov	DWORD PTR -8[rbp], esi
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	strerror@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -4[rbp]
	lea	rsi, .LC27[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	log_csv_error, .-log_csv_error
	.section	.rodata
.LC28:
	.string	"%u-%u-%u %u:%u:%u"
.LC29:
	.string	"Enabled"
.LC30:
	.string	"Disabled"
	.align 8
.LC31:
	.string	"\n test:\t\t\t%s\n path:\t\t\t%s\n size:\t\t\t%u\n iterations:\t\t%u\n errors:\t\t%u\n async:\t\t\t%s\n"
	.align 8
.LC32:
	.string	" requests per-sec:\tmin=%u, max=%u, average=%f, jitter=%u\n"
	.align 8
.LC33:
	.string	" ap-throughput B/s:\tmin=%u max=%u average=%f jitter=%u\n"
	.align 8
.LC34:
	.string	" ap-latency usec:\tmin=%u max=%u average=%f jitter=%u\n"
	.align 8
.LC35:
	.string	" apbridge-latency usec:\tmin=%u max=%u average=%f jitter=%u\n"
	.align 8
.LC36:
	.string	" gbphy-latency usec:\tmin=%u max=%u average=%f jitter=%u\n"
.LC37:
	.string	",%s,%s,%u,%u,%u"
.LC38:
	.string	",%u,%u,%f,%u"
.LC39:
	.string	"\n%s\n"
	.text
	.globl	format_output
	.type	format_output, @function
format_output:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	DWORD PTR -52[rbp], r8d
	mov	QWORD PTR -64[rbp], r9
	mov	DWORD PTR -4[rbp], 0
	mov	eax, DWORD PTR -52[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -64[rbp]
	mov	r8d, DWORD PTR [rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	edi, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	ecx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	r9d, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	r10d, 1[rax]
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR 20[rax]
	lea	edx, 1900[rax]
	mov	eax, DWORD PTR -52[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -48[rbp]
	sub	rsp, 8
	push	r8
	push	rdi
	push	rcx
	mov	r8d, r10d
	mov	ecx, edx
	lea	rdx, .LC28[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	add	rsp, 32
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	je	.L161
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 44[rax]
	test	eax, eax
	je	.L162
	lea	rax, .LC29[rip]
	jmp	.L163
.L162:
	lea	rax, .LC30[rip]
.L163:
	mov	rdx, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 80[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 24[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	mov	r9d, DWORD PTR 20[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, 72
	mov	esi, DWORD PTR -52[rbp]
	sub	esi, DWORD PTR -4[rbp]
	movsx	rsi, esi
	mov	edi, DWORD PTR -4[rbp]
	movsx	r10, edi
	mov	rdi, QWORD PTR -48[rbp]
	add	rdi, r10
	mov	r10, QWORD PTR -40[rbp]
	sub	rsp, 8
	push	rax
	push	r8
	push	rcx
	mov	r8, r10
	mov	rcx, rdx
	lea	rdx, .LC31[rip]
	mov	eax, 0
	call	snprintf@PLT
	add	rsp, 32
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 28[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 16[rax]
	pxor	xmm1, xmm1
	cvtss2sd	xmm1, xmm0
	movq	rcx, xmm1
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 24[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC32[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 44[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 32[rax]
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	movq	rcx, xmm2
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 40[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC33[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR [rax]
	pxor	xmm3, xmm3
	cvtss2sd	xmm3, xmm0
	movq	rcx, xmm3
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC34[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 60[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 48[rax]
	pxor	xmm4, xmm4
	cvtss2sd	xmm4, xmm0
	movq	rcx, xmm4
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 52[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 56[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC35[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 76[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 64[rax]
	pxor	xmm5, xmm5
	cvtss2sd	xmm5, xmm0
	movq	rcx, xmm5
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 68[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 72[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC36[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	jmp	.L164
.L161:
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, DWORD PTR 80[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, DWORD PTR 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	r9d, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 72[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	edi, DWORD PTR -4[rbp]
	movsx	r8, edi
	mov	rdi, QWORD PTR -48[rbp]
	add	rdi, r8
	mov	r8, QWORD PTR -40[rbp]
	push	rsi
	push	rcx
	mov	rcx, rdx
	lea	rdx, .LC37[rip]
	mov	rsi, rax
	mov	eax, 0
	call	snprintf@PLT
	add	rsp, 16
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 28[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 16[rax]
	pxor	xmm6, xmm6
	cvtss2sd	xmm6, xmm0
	movq	rcx, xmm6
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 24[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC38[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR [rax]
	pxor	xmm7, xmm7
	cvtss2sd	xmm7, xmm0
	movq	rcx, xmm7
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC38[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 44[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 32[rax]
	pxor	xmm1, xmm1
	cvtss2sd	xmm1, xmm0
	movq	rcx, xmm1
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 36[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 40[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC38[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 60[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 48[rax]
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	movq	rcx, xmm2
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 52[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 56[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC38[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	r9d, DWORD PTR 76[rax]
	mov	rax, QWORD PTR -32[rbp]
	movss	xmm0, DWORD PTR 64[rax]
	pxor	xmm3, xmm3
	cvtss2sd	xmm3, xmm0
	movq	rcx, xmm3
	mov	rax, QWORD PTR -32[rbp]
	mov	r8d, DWORD PTR 68[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 72[rax]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, DWORD PTR -4[rbp]
	cdqe
	mov	esi, DWORD PTR -4[rbp]
	movsx	rdi, esi
	mov	rsi, QWORD PTR -48[rbp]
	add	rdi, rsi
	movq	xmm0, rcx
	mov	ecx, edx
	lea	rdx, .LC38[rip]
	mov	rsi, rax
	mov	eax, 1
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
.L164:
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	format_output, .-format_output
	.section	.rodata
.LC40:
	.string	"%s_%d_%d.csv"
	.align 8
.LC41:
	.string	"unable to open %s for appendation\n"
	.align 8
.LC42:
	.string	"unable to write %d bytes to csv.\n"
.LC43:
	.string	"aggregate"
	.text
	.type	log_results, @function
log_results:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 648
	.cfi_offset 3, -24
	mov	QWORD PTR -4744[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	edi, 0
	call	time@PLT
	mov	QWORD PTR -4712[rbp], rax
	lea	rax, -4712[rbp]
	mov	rdi, rax
	call	localtime@PLT
	mov	rcx, QWORD PTR [rax]
	mov	rbx, QWORD PTR 8[rax]
	mov	QWORD PTR -4704[rbp], rcx
	mov	QWORD PTR -4696[rbp], rbx
	mov	rcx, QWORD PTR 16[rax]
	mov	rbx, QWORD PTR 24[rax]
	mov	QWORD PTR -4688[rbp], rcx
	mov	QWORD PTR -4680[rbp], rbx
	mov	rcx, QWORD PTR 32[rax]
	mov	rbx, QWORD PTR 40[rax]
	mov	QWORD PTR -4672[rbp], rcx
	mov	QWORD PTR -4664[rbp], rbx
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -4656[rbp], rax
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 60[rax]
	test	eax, eax
	je	.L167
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	jne	.L167
	mov	rax, QWORD PTR -4744[rbp]
	mov	esi, DWORD PTR 24[rax]
	mov	rax, QWORD PTR -4744[rbp]
	mov	ecx, DWORD PTR 20[rax]
	mov	rax, QWORD PTR -4744[rbp]
	lea	rdx, 72[rax]
	lea	rax, -4640[rbp]
	mov	r9d, esi
	mov	r8d, ecx
	mov	rcx, rdx
	lea	rdx, .LC40[rip]
	mov	esi, 512
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	lea	rax, -4640[rbp]
	mov	edx, 420
	mov	esi, 1089
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -4728[rbp], eax
	cmp	DWORD PTR -4728[rbp], 0
	jns	.L167
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -4640[rbp]
	lea	rsi, .LC41[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	call	abort
.L167:
	mov	DWORD PTR -4724[rbp], 0
	jmp	.L168
.L171:
	mov	edx, DWORD PTR -4724[rbp]
	mov	rax, QWORD PTR -4744[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L176
	mov	eax, DWORD PTR -4724[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -4744[rbp]
	add	rax, rdx
	lea	rdi, 8[rax]
	mov	eax, DWORD PTR -4724[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 2896[rax]
	mov	rax, QWORD PTR -4744[rbp]
	add	rax, rdx
	lea	rsi, 8[rax]
	lea	rcx, -4704[rbp]
	lea	rdx, -4128[rbp]
	mov	rax, QWORD PTR -4744[rbp]
	mov	r9, rcx
	mov	r8d, 4096
	mov	rcx, rdx
	mov	rdx, rdi
	mov	rdi, rax
	call	format_output
	mov	DWORD PTR -4720[rbp], eax
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 60[rax]
	test	eax, eax
	je	.L170
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	jne	.L170
	mov	eax, DWORD PTR -4720[rbp]
	movsx	rdx, eax
	lea	rcx, -4128[rbp]
	mov	eax, DWORD PTR -4728[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	DWORD PTR -4716[rbp], eax
	cmp	DWORD PTR -4716[rbp], -1
	jne	.L170
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -4720[rbp]
	lea	rsi, .LC42[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L170
.L176:
	nop
.L170:
	add	DWORD PTR -4724[rbp], 1
.L168:
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4724[rbp], eax
	jl	.L171
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 28[rax]
	test	eax, eax
	je	.L172
	mov	rax, QWORD PTR -4744[rbp]
	lea	rsi, 17568[rax]
	lea	rcx, -4704[rbp]
	lea	rdx, -4128[rbp]
	mov	rax, QWORD PTR -4744[rbp]
	mov	r9, rcx
	mov	r8d, 4096
	mov	rcx, rdx
	lea	rdx, .LC43[rip]
	mov	rdi, rax
	call	format_output
	mov	DWORD PTR -4720[rbp], eax
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 60[rax]
	test	eax, eax
	je	.L172
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	jne	.L172
	mov	eax, DWORD PTR -4720[rbp]
	movsx	rdx, eax
	lea	rcx, -4128[rbp]
	mov	eax, DWORD PTR -4728[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	DWORD PTR -4716[rbp], eax
	cmp	DWORD PTR -4716[rbp], -1
	jne	.L172
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, DWORD PTR -4720[rbp]
	lea	rsi, .LC42[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L172:
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 60[rax]
	test	eax, eax
	je	.L173
	mov	rax, QWORD PTR -4744[rbp]
	mov	eax, DWORD PTR 12[rax]
	test	eax, eax
	jne	.L173
	mov	eax, DWORD PTR -4728[rbp]
	mov	edi, eax
	call	close@PLT
.L173:
	mov	eax, 0
	mov	rbx, QWORD PTR -24[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L175
	call	__stack_chk_fail@PLT
.L175:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	log_results, .-log_results
	.section	.rodata
.LC44:
	.string	"%s%s/iteration_count"
	.text
	.globl	is_loopback_device
	.type	is_loopback_device, @function
is_loopback_device:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 544
	mov	QWORD PTR -536[rbp], rdi
	mov	QWORD PTR -544[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rcx, QWORD PTR -544[rbp]
	mov	rdx, QWORD PTR -536[rbp]
	lea	rax, -528[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	lea	rdx, .LC44[rip]
	mov	esi, 512
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	lea	rax, -528[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	access@PLT
	test	eax, eax
	jne	.L178
	mov	eax, 1
	jmp	.L180
.L178:
	mov	eax, 0
.L180:
	mov	rdx, QWORD PTR -8[rbp]
	sub	rdx, QWORD PTR fs:40
	je	.L181
	call	__stack_chk_fail@PLT
.L181:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	is_loopback_device, .-is_loopback_device
	.section	.rodata
.LC45:
	.string	"scandir"
.LC46:
	.string	"gb_loopback%u"
	.align 8
.LC47:
	.string	"max number of devices reached!\n"
.LC48:
	.string	"%s%s/"
.LC49:
	.string	"%sraw_latency_%s"
.LC50:
	.string	"add %s %s\n"
	.text
	.globl	find_loopback_devices
	.type	find_loopback_devices, @function
find_loopback_devices:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdi, 327[rax]
	lea	rax, -24[rbp]
	mov	rdx, QWORD PTR alphasort@GOTPCREL[rip]
	mov	rcx, rdx
	mov	edx, 0
	mov	rsi, rax
	call	scandir@PLT
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	jns	.L183
	lea	rdi, .LC45[rip]
	call	perror@PLT
	mov	DWORD PTR -32[rbp], -19
	jmp	.L184
.L183:
	cmp	DWORD PTR -28[rbp], 2
	jg	.L185
	mov	DWORD PTR -32[rbp], -12
	jmp	.L186
.L185:
	mov	DWORD PTR -36[rbp], 0
	jmp	.L187
.L193:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rcx, 19[rax]
	lea	rax, -40[rbp]
	mov	rdx, rax
	lea	rsi, .LC46[rip]
	mov	rdi, rcx
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	mov	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -32[rbp], 1
	jne	.L198
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rdx, 19[rax]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 327
	mov	rsi, rdx
	mov	rdi, rax
	call	is_loopback_device
	test	eax, eax
	je	.L199
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	eax, 10
	jne	.L191
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 31
	mov	esi, 1
	lea	rdi, .LC47[rip]
	call	fwrite@PLT
	jmp	.L192
.L191:
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	lea	ecx, 1[rax]
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 36[rdx], ecx
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	add	rax, 8
	mov	QWORD PTR -16[rbp], rax
	mov	edx, DWORD PTR -40[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	ecx, edx
	lea	rdx, .LC46[rip]
	mov	esi, 255
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 327[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 512
	mov	r8, rcx
	mov	rcx, rdx
	lea	rdx, .LC48[rip]
	mov	esi, 512
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 839[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1024
	mov	r8, rcx
	mov	rcx, rdx
	lea	rdx, .LC49[rip]
	mov	esi, 512
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 4[rax]
	test	eax, eax
	je	.L189
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1024[rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 512
	mov	rsi, rax
	lea	rdi, .LC50[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L189
.L198:
	nop
	jmp	.L189
.L199:
	nop
.L189:
	add	DWORD PTR -36[rbp], 1
.L187:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jl	.L193
.L192:
	mov	DWORD PTR -32[rbp], 0
.L186:
	mov	DWORD PTR -36[rbp], 0
	jmp	.L194
.L195:
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -36[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	add	DWORD PTR -36[rbp], 1
.L194:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jl	.L195
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
.L184:
	mov	eax, DWORD PTR -32[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L197
	call	__stack_chk_fail@PLT
.L197:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	find_loopback_devices, .-find_loopback_devices
	.section	.rodata
.LC51:
	.string	"iteration_count"
.LC52:
	.string	"Error opening poll file!\n"
	.text
	.type	open_poll_files, @function
open_poll_files:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 320
	mov	QWORD PTR -312[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -288[rbp], 0
	mov	DWORD PTR -284[rbp], 0
	jmp	.L201
.L206:
	mov	eax, DWORD PTR -284[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -312[rbp]
	add	rax, rdx
	add	rax, 8
	mov	QWORD PTR -280[rbp], rax
	mov	edx, DWORD PTR -284[rbp]
	mov	rax, QWORD PTR -312[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L212
	mov	rax, QWORD PTR -280[rbp]
	lea	rdx, 512[rax]
	lea	rax, -272[rbp]
	lea	r8, .LC51[rip]
	mov	rcx, rdx
	lea	rdx, .LC6[rip]
	mov	esi, 255
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	lea	rax, -272[rbp]
	mov	esi, 0
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	rdx, QWORD PTR -312[rbp]
	mov	ecx, DWORD PTR -288[rbp]
	movsx	rcx, ecx
	add	rcx, 2206
	mov	DWORD PTR 4[rdx+rcx*8], eax
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -288[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	eax, DWORD PTR 4[rax+rdx*8]
	test	eax, eax
	jns	.L204
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 25
	mov	esi, 1
	lea	rdi, .LC52[rip]
	call	fwrite@PLT
	nop
.L205:
	mov	DWORD PTR -284[rbp], 0
	jmp	.L208
.L204:
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -288[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	eax, DWORD PTR 4[rax+rdx*8]
	lea	rcx, -289[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -288[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	WORD PTR 8[rax+rdx*8], 10
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -288[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	WORD PTR 10[rax+rdx*8], 0
	add	DWORD PTR -288[rbp], 1
	jmp	.L203
.L212:
	nop
.L203:
	add	DWORD PTR -284[rbp], 1
.L201:
	mov	rax, QWORD PTR -312[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -284[rbp], eax
	jl	.L206
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -288[rbp]
	mov	DWORD PTR 68[rax], edx
	mov	eax, 0
	jmp	.L210
.L209:
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, DWORD PTR -284[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	eax, DWORD PTR 4[rax+rdx*8]
	mov	edi, eax
	call	close@PLT
	add	DWORD PTR -284[rbp], 1
.L208:
	mov	eax, DWORD PTR -284[rbp]
	cmp	eax, DWORD PTR -288[rbp]
	jl	.L209
	mov	eax, -1
.L210:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L211
	call	__stack_chk_fail@PLT
.L211:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	open_poll_files, .-open_poll_files
	.type	close_poll_files, @function
close_poll_files:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L214
.L215:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	eax, DWORD PTR 4[rax+rdx*8]
	mov	edi, eax
	call	close@PLT
	add	DWORD PTR -4[rbp], 1
.L214:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 68[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L215
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	close_poll_files, .-close_poll_files
	.type	is_complete, @function
is_complete:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	jmp	.L218
.L222:
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L223
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1872[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	lea	rsi, .LC51[rip]
	mov	rdi, rax
	call	read_sysfs_int
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 24[rax]
	cmp	DWORD PTR -4[rbp], eax
	je	.L220
	mov	eax, 0
	jmp	.L221
.L223:
	nop
.L220:
	add	DWORD PTR -8[rbp], 1
.L218:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -8[rbp], eax
	jl	.L222
	mov	eax, 1
.L221:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	is_complete, .-is_complete
	.section	.rodata
.LC53:
	.string	"type"
	.text
	.type	stop_tests, @function
stop_tests:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L225
.L228:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L229
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1872[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	mov	edx, 0
	lea	rsi, .LC53[rip]
	mov	rdi, rax
	call	write_sysfs_val
	jmp	.L227
.L229:
	nop
.L227:
	add	DWORD PTR -4[rbp], 1
.L225:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L228
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	stop_tests, .-stop_tests
	.type	handler, @function
handler:
.LFB41:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	handler, .-handler
	.section	.rodata
.LC54:
	.string	"sigaction error\n"
.LC55:
	.string	"Poll exit with errno %d\n"
	.align 8
.LC56:
	.string	"Iteration count did not finish!\n"
	.text
	.type	wait_for_complete, @function
wait_for_complete:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 464
	mov	QWORD PTR -456[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -436[rbp], 0
	mov	QWORD PTR -424[rbp], 0
	lea	rax, -288[rbp]
	mov	rdi, rax
	call	sigemptyset@PLT
	lea	rax, -416[rbp]
	mov	rdi, rax
	call	sigemptyset@PLT
	lea	rax, -288[rbp]
	mov	esi, 2
	mov	rdi, rax
	call	sigaddset@PLT
	lea	rdx, -416[rbp]
	lea	rax, -288[rbp]
	mov	rsi, rax
	mov	edi, 0
	call	sigprocmask@PLT
	lea	rax, handler[rip]
	mov	QWORD PTR -160[rbp], rax
	mov	DWORD PTR -24[rbp], 0
	lea	rax, -160[rbp]
	add	rax, 8
	mov	rdi, rax
	call	sigemptyset@PLT
	lea	rax, -160[rbp]
	mov	edx, 0
	mov	rsi, rax
	mov	edi, 2
	call	sigaction@PLT
	cmp	eax, -1
	jne	.L232
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 16
	mov	esi, 1
	lea	rdi, .LC54[rip]
	call	fwrite@PLT
	mov	eax, -1
	jmp	.L243
.L232:
	mov	rax, QWORD PTR -456[rbp]
	mov	rax, QWORD PTR 1352[rax]
	test	rax, rax
	je	.L241
	mov	rax, QWORD PTR -456[rbp]
	add	rax, 1352
	mov	QWORD PTR -424[rbp], rax
.L241:
	mov	rax, QWORD PTR -456[rbp]
	mov	eax, DWORD PTR 68[rax]
	mov	rdx, QWORD PTR -456[rbp]
	lea	rdi, 17652[rdx]
	lea	rcx, -416[rbp]
	mov	rdx, QWORD PTR -424[rbp]
	mov	esi, eax
	mov	eax, 0
	call	ppoll@PLT
	mov	DWORD PTR -428[rbp], eax
	cmp	DWORD PTR -428[rbp], 0
	jg	.L235
	mov	rax, QWORD PTR -456[rbp]
	mov	rdi, rax
	call	stop_tests
	call	__errno_location@PLT
	mov	edx, DWORD PTR [rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, -1
	jmp	.L243
.L235:
	mov	DWORD PTR -432[rbp], 0
	jmp	.L236
.L238:
	mov	rax, QWORD PTR -456[rbp]
	mov	edx, DWORD PTR -432[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	movzx	eax, WORD PTR 10[rax+rdx*8]
	cwde
	and	eax, 2
	test	eax, eax
	je	.L237
	mov	rax, QWORD PTR -456[rbp]
	mov	edx, DWORD PTR -432[rbp]
	movsx	rdx, edx
	add	rdx, 2206
	mov	eax, DWORD PTR 4[rax+rdx*8]
	lea	rcx, -437[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	add	DWORD PTR -436[rbp], 1
.L237:
	add	DWORD PTR -432[rbp], 1
.L236:
	mov	rax, QWORD PTR -456[rbp]
	mov	eax, DWORD PTR 68[rax]
	cmp	DWORD PTR -432[rbp], eax
	jl	.L238
	mov	rax, QWORD PTR -456[rbp]
	mov	eax, DWORD PTR 68[rax]
	cmp	DWORD PTR -436[rbp], eax
	je	.L246
	jmp	.L241
.L246:
	nop
	mov	rax, QWORD PTR -456[rbp]
	mov	rdi, rax
	call	is_complete
	test	eax, eax
	jne	.L242
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 32
	mov	esi, 1
	lea	rdi, .LC56[rip]
	call	fwrite@PLT
	mov	eax, -1
	jmp	.L243
.L242:
	mov	eax, 0
.L243:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L244
	call	__stack_chk_fail@PLT
.L244:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	wait_for_complete, .-wait_for_complete
	.section	.rodata
.LC57:
	.string	"us_wait"
.LC58:
	.string	"size"
.LC59:
	.string	"iteration_max"
.LC60:
	.string	"async"
.LC61:
	.string	"timeout"
.LC62:
	.string	"outstanding_operations_max"
	.text
	.type	prepare_devices, @function
prepare_devices:
.LFB43:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L248
.L251:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 64[rax]
	test	eax, eax
	jne	.L249
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L250
.L249:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1872[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	mov	edx, 0
	lea	rsi, .LC53[rip]
	mov	rdi, rax
	call	write_sysfs_val
.L250:
	add	DWORD PTR -4[rbp], 1
.L248:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L251
	mov	DWORD PTR -4[rbp], 0
	jmp	.L252
.L256:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L257
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 56[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC57[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC58[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 24[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC59[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 44[rax]
	test	eax, eax
	je	.L255
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1872[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	mov	edx, 1
	lea	rsi, .LC60[rip]
	mov	rdi, rax
	call	write_sysfs_val
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 48[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC61[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 52[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC62[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	jmp	.L254
.L255:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1872[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	mov	edx, 0
	lea	rsi, .LC60[rip]
	mov	rdi, rax
	call	write_sysfs_val
	jmp	.L254
.L257:
	nop
.L254:
	add	DWORD PTR -4[rbp], 1
.L252:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L256
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	prepare_devices, .-prepare_devices
	.type	start, @function
start:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L259
.L262:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L264
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 32[rax]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	imul	rdx, rdx, 1620
	lea	rcx, 1872[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	lea	rcx, 8[rdx]
	mov	edx, eax
	lea	rsi, .LC53[rip]
	mov	rdi, rcx
	call	write_sysfs_val
	jmp	.L261
.L264:
	nop
.L261:
	add	DWORD PTR -4[rbp], 1
.L259:
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L262
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	start, .-start
	.section	.rodata
.LC63:
	.string	"invalid test %s\n"
.LC64:
	.string	"Error running test"
	.text
	.globl	loopback_run
	.type	loopback_run, @function
loopback_run:
.LFB45:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	jmp	.L266
.L268:
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 72[rax]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rcx, rax
	lea	rax, dict[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	strstr@PLT
	test	rax, rax
	je	.L267
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, dict[rip+8]
	mov	edx, DWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], edx
.L267:
	add	DWORD PTR -8[rbp], 1
.L266:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, dict[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L268
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 32[rax]
	test	eax, eax
	jne	.L269
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 72[rax]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC63[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	call	usage
	jmp	.L265
.L269:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	prepare_devices
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	open_poll_files
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jne	.L274
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	start
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	wait_for_complete
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	close_poll_files
	cmp	DWORD PTR -4[rbp], 0
	jne	.L275
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	get_results
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	log_results
	jmp	.L265
.L274:
	nop
	jmp	.L272
.L275:
	nop
.L272:
	lea	rdi, .LC64[rip]
	call	puts@PLT
	nop
.L265:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	loopback_run, .-loopback_run
	.section	.rodata
.LC65:
	.string	"No loopback devices found\n"
.LC66:
	.string	"Bad device mask %x\n"
	.text
	.type	sanity_check, @function
sanity_check:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 36[rax]
	test	eax, eax
	jne	.L277
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 26
	mov	esi, 1
	lea	rdi, .LC65[rip]
	call	fwrite@PLT
	mov	eax, -1
	jmp	.L278
.L277:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L279
.L282:
	mov	edx, DWORD PTR -4[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	device_enabled
	test	eax, eax
	je	.L283
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	test	eax, eax
	je	.L281
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	imul	rax, rax, 1620
	lea	rdx, 1360[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	add	rax, 8
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	test	eax, eax
	jne	.L281
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC66[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, -1
	jmp	.L278
.L283:
	nop
.L281:
	add	DWORD PTR -4[rbp], 1
.L279:
	cmp	DWORD PTR -4[rbp], 9
	jle	.L282
	mov	eax, 0
.L278:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	sanity_check, .-sanity_check
	.section	.rodata
.LC67:
	.string	"/sys/class/gb_loopback/"
	.align 8
.LC68:
	.string	"/sys/kernel/debug/gb_loopback/"
.LC69:
	.string	"%s"
	.align 8
.LC70:
	.string	"t:s:i:S:D:m:v::d::r::p::a::l::x::o:O:c:w:z::f::"
	.text
	.globl	main
	.type	main, @function
main:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	lea	rax, .LC67[rip]
	mov	QWORD PTR -16[rbp], rax
	lea	rax, .LC68[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	edx, 17736
	mov	esi, 0
	lea	rdi, t[rip]
	call	memset@PLT
	jmp	.L285
.L308:
	mov	eax, DWORD PTR -24[rbp]
	sub	eax, 68
	cmp	eax, 54
	ja	.L286
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L288[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L288[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L288:
	.long	.L306-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L305-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L304-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L303-.L288
	.long	.L286-.L288
	.long	.L302-.L288
	.long	.L301-.L288
	.long	.L286-.L288
	.long	.L300-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L299-.L288
	.long	.L286-.L288
	.long	.L286-.L288
	.long	.L298-.L288
	.long	.L297-.L288
	.long	.L286-.L288
	.long	.L296-.L288
	.long	.L295-.L288
	.long	.L286-.L288
	.long	.L294-.L288
	.long	.L293-.L288
	.long	.L292-.L288
	.long	.L286-.L288
	.long	.L291-.L288
	.long	.L290-.L288
	.long	.L289-.L288
	.long	.L286-.L288
	.long	.L287-.L288
	.text
.L292:
	mov	rax, QWORD PTR optarg[rip]
	mov	rcx, rax
	lea	rdx, .LC69[rip]
	mov	esi, 255
	lea	rdi, t[rip+72]
	mov	eax, 0
	call	snprintf@PLT
	jmp	.L285
.L293:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR t[rip+20], eax
	jmp	.L285
.L299:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR t[rip+24], eax
	jmp	.L285
.L304:
	mov	rax, QWORD PTR optarg[rip]
	mov	rcx, rax
	lea	rdx, .LC69[rip]
	mov	esi, 512
	lea	rdi, t[rip+327]
	mov	eax, 0
	call	snprintf@PLT
	jmp	.L285
.L306:
	mov	rax, QWORD PTR optarg[rip]
	mov	rcx, rax
	lea	rdx, .LC69[rip]
	mov	esi, 512
	lea	rdi, t[rip+839]
	mov	eax, 0
	call	snprintf@PLT
	jmp	.L285
.L297:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atol@PLT
	mov	DWORD PTR t[rip+16], eax
	jmp	.L285
.L291:
	mov	DWORD PTR t[rip], 1
	jmp	.L285
.L301:
	mov	DWORD PTR t[rip+4], 1
	jmp	.L285
.L294:
	mov	DWORD PTR t[rip+8], 1
	jmp	.L285
.L295:
	mov	DWORD PTR t[rip+12], 1
	jmp	.L285
.L303:
	mov	DWORD PTR t[rip+28], 1
	jmp	.L285
.L298:
	mov	DWORD PTR t[rip+40], 1
	jmp	.L285
.L289:
	mov	DWORD PTR t[rip+44], 1
	jmp	.L285
.L296:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR t[rip+48], eax
	jmp	.L285
.L305:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	cdqe
	mov	QWORD PTR t[rip+1352], rax
	jmp	.L285
.L302:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR t[rip+52], eax
	jmp	.L285
.L290:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR t[rip+56], eax
	jmp	.L285
.L287:
	mov	DWORD PTR t[rip+60], 1
	jmp	.L285
.L300:
	mov	DWORD PTR t[rip+64], 1
	jmp	.L285
.L286:
	call	usage
	mov	eax, -22
	jmp	.L307
.L285:
	mov	rcx, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR -36[rbp]
	lea	rdx, .LC70[rip]
	mov	rsi, rcx
	mov	edi, eax
	call	getopt@PLT
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], -1
	jne	.L308
	movzx	eax, BYTE PTR t[rip+327]
	movzx	eax, al
	test	eax, eax
	jne	.L309
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, rax
	lea	rdx, .LC69[rip]
	mov	esi, 512
	lea	rdi, t[rip+327]
	mov	eax, 0
	call	snprintf@PLT
.L309:
	movzx	eax, BYTE PTR t[rip+839]
	movzx	eax, al
	test	eax, eax
	jne	.L310
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rax
	lea	rdx, .LC69[rip]
	mov	esi, 512
	lea	rdi, t[rip+839]
	mov	eax, 0
	call	snprintf@PLT
.L310:
	lea	rdi, t[rip]
	call	find_loopback_devices
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L311
	mov	eax, DWORD PTR -20[rbp]
	jmp	.L307
.L311:
	lea	rdi, t[rip]
	call	sanity_check
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	je	.L312
	mov	eax, DWORD PTR -20[rbp]
	jmp	.L307
.L312:
	mov	eax, DWORD PTR t[rip+40]
	test	eax, eax
	je	.L313
	lea	rdi, t[rip]
	call	show_loopback_devices
	mov	eax, 0
	jmp	.L307
.L313:
	movzx	eax, BYTE PTR t[rip+72]
	test	al, al
	je	.L314
	mov	eax, DWORD PTR t[rip+24]
	test	eax, eax
	jne	.L315
.L314:
	call	usage
.L315:
	mov	eax, DWORD PTR t[rip+48]
	test	eax, eax
	jne	.L316
	mov	DWORD PTR t[rip+48], 200000
.L316:
	lea	rdi, t[rip]
	call	loopback_run
	mov	eax, 0
.L307:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"225142089.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"ping\000"
	.align	2
.LC1:
	.ascii	"transfer\000"
	.align	2
.LC2:
	.ascii	"sink\000"
	.data
	.align	2
	.type	dict, %object
	.size	dict, 32
dict:
	.word	.LC0
	.word	2
	.word	.LC1
	.word	3
	.word	.LC2
	.word	4
	.word	0
	.space	4
	.comm	t,17724,4
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_throughput_max_aggregate, %function
get_throughput_max_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L2
.L5:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L7
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2928
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcs	.L4
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2928
	add	r3, r3, #4
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L4
.L7:
	nop
.L4:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L2:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L5
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_throughput_max_aggregate, .-get_throughput_max_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_request_max_aggregate, %function
get_request_max_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L9
.L12:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L14
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2912
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcs	.L11
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2912
	add	r3, r3, #4
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L11
.L14:
	nop
.L11:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L9:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L12
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_request_max_aggregate, .-get_request_max_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_latency_max_aggregate, %function
get_latency_max_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L16
.L19:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L21
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2896
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcs	.L18
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2896
	add	r3, r3, #4
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L18
.L21:
	nop
.L18:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L16:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L19
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_latency_max_aggregate, .-get_latency_max_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_apbridge_unipro_latency_max_aggregate, %function
get_apbridge_unipro_latency_max_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L23
.L26:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L28
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2944
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcs	.L25
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2944
	add	r3, r3, #4
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L25
.L28:
	nop
.L25:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L23:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L26
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_apbridge_unipro_latency_max_aggregate, .-get_apbridge_unipro_latency_max_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_gbphy_firmware_latency_max_aggregate, %function
get_gbphy_firmware_latency_max_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L30
.L33:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L35
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2960
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcs	.L32
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2960
	add	r3, r3, #4
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L32
.L35:
	nop
.L32:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L30:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L33
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_gbphy_firmware_latency_max_aggregate, .-get_gbphy_firmware_latency_max_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_throughput_min_aggregate, %function
get_throughput_min_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L37
.L40:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L42
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2928
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L39
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2928
	add	r3, r3, #8
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L39
.L42:
	nop
.L39:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L37:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L40
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_throughput_min_aggregate, .-get_throughput_min_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_request_min_aggregate, %function
get_request_min_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L44
.L47:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L49
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2912
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L46
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2912
	add	r3, r3, #8
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L46
.L49:
	nop
.L46:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L44:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L47
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_request_min_aggregate, .-get_request_min_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_latency_min_aggregate, %function
get_latency_min_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L51
.L54:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L56
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2896
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L53
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2896
	add	r3, r3, #8
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L53
.L56:
	nop
.L53:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L51:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L54
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_latency_min_aggregate, .-get_latency_min_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_apbridge_unipro_latency_min_aggregate, %function
get_apbridge_unipro_latency_min_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L58
.L61:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L63
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2944
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L60
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2944
	add	r3, r3, #8
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L60
.L63:
	nop
.L60:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L58:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L61
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_apbridge_unipro_latency_min_aggregate, .-get_apbridge_unipro_latency_min_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_gbphy_firmware_latency_min_aggregate, %function
get_gbphy_firmware_latency_min_aggregate:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mvn	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L65
.L68:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L70
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2960
	add	r3, r3, #8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L67
	ldr	r1, [fp, #-16]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2960
	add	r3, r3, #8
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	b	.L67
.L70:
	nop
.L67:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L65:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L68
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_gbphy_firmware_latency_min_aggregate, .-get_gbphy_firmware_latency_min_aggregate
	.global	__aeabi_ui2f
	.global	__aeabi_fadd
	.global	__aeabi_f2uiz
	.global	__aeabi_uidiv
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_throughput_avg_aggregate, %function
get_throughput_avg_aggregate:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L72
.L75:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L78
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_ui2f
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2928
	ldr	r3, [r3]	@ float
	mov	r1, r3
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L74
.L78:
	nop
.L74:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L72:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L75
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L76
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-16]
.L76:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_throughput_avg_aggregate, .-get_throughput_avg_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_request_avg_aggregate, %function
get_request_avg_aggregate:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L80
.L83:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L86
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_ui2f
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2912
	ldr	r3, [r3]	@ float
	mov	r1, r3
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L82
.L86:
	nop
.L82:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L80:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L83
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L84
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-16]
.L84:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_request_avg_aggregate, .-get_request_avg_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_latency_avg_aggregate, %function
get_latency_avg_aggregate:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L88
.L91:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L94
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_ui2f
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2896
	ldr	r3, [r3]	@ float
	mov	r1, r3
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L90
.L94:
	nop
.L90:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L88:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L91
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L92
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-16]
.L92:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_latency_avg_aggregate, .-get_latency_avg_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_apbridge_unipro_latency_avg_aggregate, %function
get_apbridge_unipro_latency_avg_aggregate:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L96
.L99:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L102
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_ui2f
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2944
	ldr	r3, [r3]	@ float
	mov	r1, r3
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L98
.L102:
	nop
.L98:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L96:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L99
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L100
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-16]
.L100:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_apbridge_unipro_latency_avg_aggregate, .-get_apbridge_unipro_latency_avg_aggregate
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_gbphy_firmware_latency_avg_aggregate, %function
get_gbphy_firmware_latency_avg_aggregate:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L104
.L107:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L110
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_ui2f
	ldr	r1, [fp, #-24]
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r1, r2
	add	r3, r3, #2960
	ldr	r3, [r3]	@ float
	mov	r1, r3
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L106
.L110:
	nop
.L106:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L104:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L107
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L108
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	__aeabi_uidiv
	mov	r3, r0
	str	r3, [fp, #-16]
.L108:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_gbphy_firmware_latency_avg_aggregate, .-get_gbphy_firmware_latency_avg_aggregate
	.align	2
	.global	abort
	.syntax unified
	.arm
	.fpu softvfp
	.type	abort, %function
abort:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r0, #1
	bl	_exit
	.size	abort, .-abort
	.section	.rodata
	.align	2
.LC3:
	.ascii	"Usage: loopback_test TEST [SIZE] ITERATIONS [SYSPAT"
	.ascii	"H] [DBGPATH]\012\012  Run TEST for a number of ITER"
	.ascii	"ATIONS with operation data SIZE bytes\012  TEST may"
	.ascii	" be 'ping' 'transfer' or 'sink'\012  SIZE indicates"
	.ascii	" the size of transfer <= greybus max payload bytes\012"
	.ascii	"  ITERATIONS indicates the number of times to execu"
	.ascii	"te TEST at SIZE bytes\012             Note if ITERA"
	.ascii	"TIONS is set to zero then this utility will\012    "
	.ascii	"         initiate an infinite (non terminating) tes"
	.ascii	"t and exit\012             without logging any metr"
	.ascii	"ics data\012  SYSPATH indicates the sysfs path for "
	.ascii	"the loopback greybus entries e.g.\012          /sys"
	.ascii	"/bus/greybus/devices\012  DBGPATH indicates the deb"
	.ascii	"ugfs path for the loopback greybus entries e.g.\012"
	.ascii	"          /sys/kernel/debug/gb_loopback/\012 Mandat"
	.ascii	"ory arguments\012   -t     must be one of the test "
	.ascii	"names - sink, transfer or ping\012   -i     iterati"
	.ascii	"on count - the number of iterations to run the test"
	.ascii	" over\012 Optional arguments\012   -S     sysfs loc"
	.ascii	"ation - location for greybus 'endo' entires default"
	.ascii	" /sys/bus/greybus/devices/\012   -D     debugfs loc"
	.ascii	"ation - location for loopback debugfs entries defau"
	.ascii	"lt /sys/kernel/debug/gb_loopback/\012   -s     size"
	.ascii	" of data packet to send during test - defaults to z"
	.ascii	"ero\012   -m     mask - a bit mask of connections t"
	.ascii	"o include example: -m 8 = 4th connection -m 9 = 1st"
	.ascii	" and 4th connection etc\012                 default"
	.ascii	" is zero which means broadcast to all connections\012"
	.ascii	"   -v     verbose output\012   -d     debug output\012"
	.ascii	"   -r     raw data output - when specified the full"
	.ascii	" list of latency values are included in the output "
	.ascii	"CSV\012   -p     porcelain - when specified printou"
	.ascii	"t is in a user-friendly non-CSV format. This option"
	.ascii	" suppresses writing to CSV file\012   -a     aggreg"
	.ascii	"ate - show aggregation of all enabled devices\012  "
	.ascii	" -l     list found loopback devices and exit\012   "
	.ascii	"-x     Async - Enable async transfers\012   -o     "
	.ascii	"Async Timeout - Timeout in uSec for async operation"
	.ascii	"s\012   -O     Poll loop time out in seconds(max ti"
	.ascii	"me a test is expected to last, default: 30sec)\012 "
	.ascii	"  -c     Max number of outstanding operations"
	.ascii	" for async operations\012   -w     Wait in uSec bet"
	.ascii	"ween operations\012   -z     Enable output to a CSV"
	.ascii	" file (incompatible with -p)\012   -f     When star"
	.ascii	"ting new loopback test, stop currently running test"
	.ascii	"s on all devices\012Examples:\012  Send 10000 trans"
	.ascii	"fers with a packet size of 128 bytes to all active "
	.ascii	"connections\012  loopback_test -t transfer -s 128 -"
	.ascii	"i 10000 -S /sys/bus/greybus/devices/ -D /sys/kernel"
	.ascii	"/debug/gb_loopback/\012  loopback_test -t transfer "
	.ascii	"-s 128 -i 10000 -m 0\012  Send 10000 transfers with"
	.ascii	" a packet size of 128 bytes to connection 1 and 4\012"
	.ascii	"  loopback_test -t transfer -s 128 -i 10000 -m 9\012"
	.ascii	"  loopback_test -t ping -s 0 128 -i -S /sys/bus/gre"
	.ascii	"ybus/devices/ -D /sys/kernel/debug/gb_loopback/\012"
	.ascii	"  loopback_test -t sink -s 2030 -i 32768 -S /sys/bu"
	.ascii	"s/greybus/devices/ -D /sys/kernel/debug/gb_loopback"
	.ascii	"/\012\000"
	.text
	.align	2
	.global	usage
	.syntax unified
	.arm
	.fpu softvfp
	.type	usage, %function
usage:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L113
	ldr	r3, [r3]
	ldr	r2, .L113+4
	mov	r1, #1
	ldr	r0, .L113+8
	bl	fwrite
	bl	abort
.L114:
	.align	2
.L113:
	.word	stderr
	.word	2788
	.word	.LC3
	.size	usage, .-usage
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	device_enabled, %function
device_enabled:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L116
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #16]
	ldr	r3, [fp, #-12]
	asr	r3, r2, r3
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L117
.L116:
	mov	r3, #1
	b	.L118
.L117:
	mov	r3, #0
.L118:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	device_enabled, .-device_enabled
	.section	.rodata
	.align	2
.LC4:
	.ascii	"No loopback devices.\000"
	.align	2
.LC5:
	.ascii	"device[%d] = %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	show_loopback_devices, %function
show_loopback_devices:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	cmp	r3, #0
	bne	.L120
	ldr	r0, .L124
	bl	puts
	b	.L119
.L120:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L122
.L123:
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r1, [fp, #-8]
	ldr	r0, .L124+4
	bl	printf
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L122:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L123
.L119:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L125:
	.align	2
.L124:
	.word	.LC4
	.word	.LC5
	.size	show_loopback_devices, .-show_loopback_devices
	.section	.rodata
	.align	2
.LC6:
	.ascii	"%s%s\000"
	.align	2
.LC7:
	.ascii	"unable to open %s\012\000"
	.align	2
.LC8:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	open_sysfs
	.syntax unified
	.arm
	.fpu softvfp
	.type	open_sysfs, %function
open_sysfs:
	@ args = 0, pretend = 0, frame = 536
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #544
	str	r0, [fp, #-528]
	str	r1, [fp, #-532]
	str	r2, [fp, #-536]
	ldr	r3, .L130
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #520
	ldr	r3, [fp, #-532]
	str	r3, [sp]
	ldr	r3, [fp, #-528]
	ldr	r2, .L130+4
	mov	r1, #512
	bl	snprintf
	sub	r3, fp, #520
	ldr	r1, [fp, #-536]
	mov	r0, r3
	bl	open
	str	r0, [fp, #-524]
	ldr	r3, [fp, #-524]
	cmp	r3, #0
	bge	.L127
	ldr	r3, .L130+8
	ldr	r3, [r3]
	sub	r2, fp, #520
	ldr	r1, .L130+12
	mov	r0, r3
	bl	fprintf
	bl	abort
.L127:
	ldr	r3, [fp, #-524]
	ldr	r2, .L130
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L129
	bl	__stack_chk_fail
.L129:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L131:
	.align	2
.L130:
	.word	.LC8
	.word	.LC6
	.word	stderr
	.word	.LC7
	.size	open_sysfs, .-open_sysfs
	.section	.rodata
	.align	2
.LC9:
	.ascii	"unable to read from %s%s %s\012\000"
	.align	2
.LC10:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	read_sysfs_int_fd
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_sysfs_int_fd, %function
read_sysfs_int_fd:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #68
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	ldr	r3, .L136
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #48
	mov	r2, #32
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	read
	mov	r3, r0
	cmp	r3, #0
	bge	.L133
	ldr	r3, .L136+4
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-60]
	ldr	r1, .L136+8
	mov	r0, r4
	bl	fprintf
	ldr	r0, [fp, #-56]
	bl	close
	bl	abort
.L133:
	sub	r3, fp, #48
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L136
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L135
	bl	__stack_chk_fail
.L135:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L137:
	.align	2
.L136:
	.word	.LC10
	.word	stderr
	.word	.LC9
	.size	read_sysfs_int_fd, .-read_sysfs_int_fd
	.global	__aeabi_d2f
	.section	.rodata
	.align	2
.LC11:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	read_sysfs_float_fd
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_sysfs_float_fd, %function
read_sysfs_float_fd:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #68
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	ldr	r3, .L142
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #48
	mov	r2, #32
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	read
	mov	r3, r0
	cmp	r3, #0
	bge	.L139
	ldr	r3, .L142+4
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-64]
	ldr	r2, [fp, #-60]
	ldr	r1, .L142+8
	mov	r0, r4
	bl	fprintf
	ldr	r0, [fp, #-56]
	bl	close
	bl	abort
.L139:
	sub	r3, fp, #48
	mov	r0, r3
	bl	atof
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2f
	mov	r3, r0
	ldr	r2, .L142
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L141
	bl	__stack_chk_fail
.L141:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L143:
	.align	2
.L142:
	.word	.LC11
	.word	stderr
	.word	.LC9
	.size	read_sysfs_float_fd, .-read_sysfs_float_fd
	.align	2
	.global	read_sysfs_int
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_sysfs_int, %function
read_sysfs_int:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	open_sysfs
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	read_sysfs_int_fd
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	close
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	read_sysfs_int, .-read_sysfs_int
	.align	2
	.global	read_sysfs_float
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_sysfs_float, %function
read_sysfs_float:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r2, #0
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	open_sysfs
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	read_sysfs_float_fd
	str	r0, [fp, #-8]	@ float
	ldr	r0, [fp, #-12]
	bl	close
	ldr	r3, [fp, #-8]	@ float
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	read_sysfs_float, .-read_sysfs_float
	.section	.rodata
	.align	2
.LC12:
	.ascii	"%d\000"
	.align	2
.LC13:
	.ascii	"unable to write to %s%s %s\012\000"
	.align	2
.LC14:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	write_sysfs_val
	.syntax unified
	.arm
	.fpu softvfp
	.type	write_sysfs_val, %function
write_sysfs_val:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #76
	str	r0, [fp, #-64]
	str	r1, [fp, #-68]
	str	r2, [fp, #-72]
	ldr	r3, .L151
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r2, #2
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-64]
	bl	open_sysfs
	str	r0, [fp, #-56]
	sub	r0, fp, #48
	ldr	r3, [fp, #-72]
	ldr	r2, .L151+4
	mov	r1, #32
	bl	snprintf
	str	r0, [fp, #-52]
	ldr	r2, [fp, #-52]
	sub	r3, fp, #48
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	write
	mov	r3, r0
	cmp	r3, #0
	bge	.L149
	ldr	r3, .L151+8
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	str	r3, [sp]
	ldr	r3, [fp, #-68]
	ldr	r2, [fp, #-64]
	ldr	r1, .L151+12
	mov	r0, r4
	bl	fprintf
	ldr	r0, [fp, #-56]
	bl	close
	bl	abort
.L149:
	ldr	r0, [fp, #-56]
	bl	close
	nop
	ldr	r3, .L151
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L150
	bl	__stack_chk_fail
.L150:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L152:
	.align	2
.L151:
	.word	.LC14
	.word	.LC12
	.word	stderr
	.word	.LC13
	.size	write_sysfs_val, .-write_sysfs_val
	.section	.rodata
	.align	2
.LC15:
	.ascii	"error\000"
	.align	2
.LC16:
	.ascii	"requests_per_second_min\000"
	.align	2
.LC17:
	.ascii	"requests_per_second_max\000"
	.align	2
.LC18:
	.ascii	"requests_per_second_avg\000"
	.align	2
.LC19:
	.ascii	"latency_min\000"
	.align	2
.LC20:
	.ascii	"latency_max\000"
	.align	2
.LC21:
	.ascii	"latency_avg\000"
	.align	2
.LC22:
	.ascii	"throughput_min\000"
	.align	2
.LC23:
	.ascii	"throughput_max\000"
	.align	2
.LC24:
	.ascii	"throughput_avg\000"
	.align	2
.LC25:
	.ascii	"apbridge_unipro_latency_min\000"
	.align	2
.LC26:
	.ascii	"apbridge_unipro_latency_max\000"
	.align	2
.LC27:
	.ascii	"apbridge_unipro_latency_avg\000"
	.align	2
.LC28:
	.ascii	"gbphy_firmware_latency_min\000"
	.align	2
.LC29:
	.ascii	"gbphy_firmware_latency_max\000"
	.align	2
.LC30:
	.ascii	"gbphy_firmware_latency_avg\000"
	.global	__aeabi_i2f
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_results, %function
get_results:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L154
.L157:
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L160
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1536
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #80]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+4
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+8
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+12
	mov	r0, r3
	bl	read_sysfs_float
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #16]	@ float
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+16
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+20
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+24
	mov	r0, r3
	bl	read_sysfs_float
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3]	@ float
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+28
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #40]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+32
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #36]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+36
	mov	r0, r3
	bl	read_sysfs_float
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #32]	@ float
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+40
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #56]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+44
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #52]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+48
	mov	r0, r3
	bl	read_sysfs_float
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #48]	@ float
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+52
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #72]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+56
	mov	r0, r3
	bl	read_sysfs_int
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #68]
	ldr	r3, [fp, #-8]
	add	r3, r3, #512
	ldr	r1, .L161+60
	mov	r0, r3
	bl	read_sysfs_float
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #64]	@ float
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #24]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #28]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #8]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #36]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #40]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #44]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #52]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #56]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #60]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #68]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #72]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #76]
	b	.L156
.L160:
	nop
.L156:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L154:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L157
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #28]
	cmp	r3, #0
	beq	.L158
	ldr	r3, [fp, #-24]
	add	r3, r3, #17408
	add	r3, r3, #152
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-24]
	bl	get_request_min_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #24]
	ldr	r0, [fp, #-24]
	bl	get_request_max_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #20]
	ldr	r0, [fp, #-24]
	bl	get_request_avg_aggregate
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #16]	@ float
	ldr	r0, [fp, #-24]
	bl	get_latency_min_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #8]
	ldr	r0, [fp, #-24]
	bl	get_latency_max_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r0, [fp, #-24]
	bl	get_latency_avg_aggregate
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3]	@ float
	ldr	r0, [fp, #-24]
	bl	get_throughput_min_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #40]
	ldr	r0, [fp, #-24]
	bl	get_throughput_max_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #36]
	ldr	r0, [fp, #-24]
	bl	get_throughput_avg_aggregate
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #32]	@ float
	ldr	r0, [fp, #-24]
	bl	get_apbridge_unipro_latency_min_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #56]
	ldr	r0, [fp, #-24]
	bl	get_apbridge_unipro_latency_max_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #52]
	ldr	r0, [fp, #-24]
	bl	get_apbridge_unipro_latency_avg_aggregate
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #48]	@ float
	ldr	r0, [fp, #-24]
	bl	get_gbphy_firmware_latency_min_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #72]
	ldr	r0, [fp, #-24]
	bl	get_gbphy_firmware_latency_max_aggregate
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #68]
	ldr	r0, [fp, #-24]
	bl	get_gbphy_firmware_latency_avg_aggregate
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, [fp, #-12]
	str	r2, [r3, #64]	@ float
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #24]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #28]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #8]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #36]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #40]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #44]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #52]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #56]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #60]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #68]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #72]
	sub	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3, #76]
.L158:
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L162:
	.align	2
.L161:
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.size	get_results, .-get_results
	.section	.rodata
	.align	2
.LC31:
	.ascii	"unable to write %d bytes to csv %s\012\000"
	.text
	.align	2
	.global	log_csv_error
	.syntax unified
	.arm
	.fpu softvfp
	.type	log_csv_error, %function
log_csv_error:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L164
	ldr	r4, [r3]
	ldr	r0, [fp, #-20]
	bl	strerror
	mov	r3, r0
	ldr	r2, [fp, #-16]
	ldr	r1, .L164+4
	mov	r0, r4
	bl	fprintf
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L165:
	.align	2
.L164:
	.word	stderr
	.word	.LC31
	.size	log_csv_error, .-log_csv_error
	.section	.rodata
	.align	2
.LC32:
	.ascii	"%u-%u-%u %u:%u:%u\000"
	.align	2
.LC33:
	.ascii	"Enabled\000"
	.align	2
.LC34:
	.ascii	"Disabled\000"
	.align	2
.LC35:
	.ascii	"\012 test:\011\011\011%s\012 path:\011\011\011%s\012"
	.ascii	" size:\011\011\011%u\012 iterations:\011\011%u\012 "
	.ascii	"errors:\011\011%u\012 async:\011\011\011%s\012\000"
	.global	__aeabi_f2d
	.align	2
.LC36:
	.ascii	" requests per-sec:\011min=%u, max=%u, average=%f, j"
	.ascii	"itter=%u\012\000"
	.align	2
.LC37:
	.ascii	" ap-throughput B/s:\011min=%u max=%u average=%f jit"
	.ascii	"ter=%u\012\000"
	.align	2
.LC38:
	.ascii	" ap-latency usec:\011min=%u max=%u average=%f jitte"
	.ascii	"r=%u\012\000"
	.align	2
.LC39:
	.ascii	" apbridge-latency usec:\011min=%u max=%u average=%f"
	.ascii	" jitter=%u\012\000"
	.align	2
.LC40:
	.ascii	" gbphy-latency usec:\011min=%u max=%u average=%f ji"
	.ascii	"tter=%u\012\000"
	.align	2
.LC41:
	.ascii	",%s,%s,%u,%u,%u\000"
	.align	2
.LC42:
	.ascii	",%u,%u,%f,%u\000"
	.align	2
.LC43:
	.ascii	"\012%s\012\000"
	.text
	.align	2
	.global	format_output
	.syntax unified
	.arm
	.fpu softvfp
	.type	format_output, %function
format_output:
	@ args = 8, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, [fp, #4]
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-44]
	bl	memset
	ldr	r4, [fp, #4]
	ldr	r3, [fp, #8]
	ldr	r3, [r3, #20]
	add	r3, r3, #1888
	add	r3, r3, #12
	ldr	r2, [fp, #8]
	ldr	r2, [r2, #16]
	add	r2, r2, #1
	ldr	r1, [fp, #8]
	ldr	r1, [r1, #12]
	ldr	r0, [fp, #8]
	ldr	r0, [r0, #8]
	ldr	ip, [fp, #8]
	ldr	ip, [ip, #4]
	ldr	lr, [fp, #8]
	ldr	lr, [lr]
	str	lr, [sp, #16]
	str	ip, [sp, #12]
	str	r0, [sp, #8]
	str	r1, [sp, #4]
	str	r2, [sp]
	ldr	r2, .L172
	mov	r1, r4
	ldr	r0, [fp, #-44]
	bl	snprintf
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	beq	.L167
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	ip, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r4, r3
	ldr	r3, [fp, #-32]
	add	lr, r3, #72
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #24]
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #80]
	ldr	r0, [fp, #-32]
	ldr	r0, [r0, #44]
	cmp	r0, #0
	beq	.L168
	ldr	r0, .L172+4
	b	.L169
.L168:
	ldr	r0, .L172+8
.L169:
	str	r0, [sp, #16]
	str	r1, [sp, #12]
	str	r2, [sp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #-40]
	str	r3, [sp]
	mov	r3, lr
	ldr	r2, .L172+12
	mov	r1, r4
	mov	r0, ip
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #24]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #20]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #16]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #28]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+16
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #40]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #36]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #32]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #44]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+20
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #8]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #12]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+24
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #56]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #52]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #48]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #60]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+28
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #72]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #68]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #64]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #76]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+32
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	b	.L170
.L167:
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r0, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	lr, r3
	ldr	r3, [fp, #-32]
	add	ip, r3, #72
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #24]
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #80]
	str	r1, [sp, #12]
	str	r2, [sp, #8]
	str	r3, [sp, #4]
	ldr	r3, [fp, #-40]
	str	r3, [sp]
	mov	r3, ip
	ldr	r2, .L172+36
	mov	r1, lr
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #24]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #20]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #16]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #28]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+40
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #8]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #12]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+40
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #40]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #36]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #32]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #44]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+40
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #56]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #52]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #48]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #60]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+40
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-44]
	add	r5, r2, r3
	ldr	r2, [fp, #4]
	ldr	r3, [fp, #-24]
	sub	r3, r2, r3
	mov	r7, r3
	ldr	r3, [fp, #-36]
	ldr	r6, [r3, #72]
	ldr	r3, [fp, #-36]
	ldr	r4, [r3, #68]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #64]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r1, [fp, #-36]
	ldr	r1, [r1, #76]
	str	r1, [sp, #16]
	str	r2, [sp, #8]
	str	r3, [sp, #12]
	str	r4, [sp]
	mov	r3, r6
	ldr	r2, .L172+40
	mov	r1, r7
	mov	r0, r5
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
.L170:
	ldr	r1, [fp, #-44]
	ldr	r0, .L172+44
	bl	printf
	ldr	r3, [fp, #-24]
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L173:
	.align	2
.L172:
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.size	format_output, .-format_output
	.section	.rodata
	.align	2
.LC44:
	.ascii	"%s_%d_%d.csv\000"
	.align	2
.LC45:
	.ascii	"unable to open %s for appendation\012\000"
	.align	2
.LC46:
	.ascii	"unable to write %d bytes to csv.\012\000"
	.align	2
.LC47:
	.ascii	"aggregate\000"
	.align	2
.LC48:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	log_results, %function
log_results:
	@ args = 0, pretend = 0, frame = 4688
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #4672
	sub	sp, sp, #28
	sub	r3, fp, #4096
	sub	r3, r3, #12
	str	r0, [r3, #-588]
	ldr	r3, .L185
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r0, #0
	bl	time
	mov	r3, r0
	sub	r2, fp, #4096
	sub	r2, r2, #12
	str	r3, [r2, #-580]
	sub	r3, fp, #4672
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r0, r3
	bl	localtime
	mov	r2, r0
	sub	r3, fp, #4096
	sub	r3, r3, #12
	sub	ip, r3, #560
	mov	lr, r2
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #60]
	cmp	r3, #0
	beq	.L175
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	bne	.L175
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	add	r1, r3, #72
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #20]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-588]
	ldr	r2, [r2, #24]
	sub	r0, fp, #4608
	sub	r0, r0, #12
	sub	r0, r0, #4
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, r1
	ldr	r2, .L185+4
	mov	r1, #512
	bl	snprintf
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #4608
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r2, #420
	ldr	r1, .L185+8
	mov	r0, r3
	bl	open
	str	r0, [r4, #-576]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-576]
	cmp	r3, #0
	bge	.L175
	ldr	r3, .L185+12
	ldr	r0, [r3]
	sub	r3, fp, #4608
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r2, r3
	ldr	r1, .L185+16
	bl	fprintf
	bl	abort
.L175:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-572]
	b	.L176
.L179:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r1, [r2, #-572]
	ldr	r0, [r3, #-588]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L184
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r3, #-572]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #2896
	ldr	r2, [r1, #-588]
	add	r1, r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r0, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r3, #-572]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [r0, #-588]
	add	r0, r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r2, fp, #4096
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	ip, r3
	sub	r3, fp, #4608
	sub	r3, r3, #12
	sub	r3, r3, #48
	str	r3, [sp, #4]
	mov	r3, #4096
	str	r3, [sp]
	mov	r3, r2
	mov	r2, r0
	ldr	r0, [ip, #-588]
	bl	format_output
	str	r0, [r4, #-568]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #60]
	cmp	r3, #0
	beq	.L178
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	bne	.L178
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r3, #-568]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	sub	r3, r3, #4
	sub	r1, fp, #4096
	sub	r1, r1, #12
	mov	r0, r1
	mov	r1, r3
	ldr	r0, [r0, #-576]
	bl	write
	str	r0, [r4, #-564]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-564]
	cmn	r3, #1
	bne	.L178
	ldr	r3, .L185+12
	ldr	r3, [r3]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-568]
	ldr	r1, .L185+20
	mov	r0, r3
	bl	fprintf
	b	.L178
.L184:
	nop
.L178:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-572]
	add	r3, r3, #1
	str	r3, [r2, #-572]
.L176:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #36]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-572]
	cmp	r2, r3
	blt	.L179
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #28]
	cmp	r3, #0
	beq	.L180
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	add	r1, r3, #17408
	add	r1, r1, #152
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r2, fp, #4096
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r0, r3
	sub	r3, fp, #4608
	sub	r3, r3, #12
	sub	r3, r3, #48
	str	r3, [sp, #4]
	mov	r3, #4096
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, .L185+24
	ldr	r0, [r0, #-588]
	bl	format_output
	str	r0, [r4, #-568]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #60]
	cmp	r3, #0
	beq	.L180
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	bne	.L180
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r2, [r3, #-568]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #4096
	sub	r3, r3, #12
	sub	r3, r3, #4
	sub	r1, fp, #4096
	sub	r1, r1, #12
	mov	r0, r1
	mov	r1, r3
	ldr	r0, [r0, #-576]
	bl	write
	str	r0, [r4, #-564]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-564]
	cmn	r3, #1
	bne	.L180
	ldr	r3, .L185+12
	ldr	r3, [r3]
	sub	r2, fp, #4096
	sub	r2, r2, #12
	ldr	r2, [r2, #-568]
	ldr	r1, .L185+20
	mov	r0, r3
	bl	fprintf
.L180:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #60]
	cmp	r3, #0
	beq	.L181
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-588]
	ldr	r3, [r3, #12]
	cmp	r3, #0
	bne	.L181
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r0, [r3, #-576]
	bl	close
.L181:
	mov	r3, #0
	ldr	r2, .L185
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L183
	bl	__stack_chk_fail
.L183:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L186:
	.align	2
.L185:
	.word	.LC48
	.word	.LC44
	.word	1089
	.word	stderr
	.word	.LC45
	.word	.LC46
	.word	.LC47
	.size	log_results, .-log_results
	.section	.rodata
	.align	2
.LC49:
	.ascii	"%s%s/iteration_count\000"
	.align	2
.LC50:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	is_loopback_device
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_loopback_device, %function
is_loopback_device:
	@ args = 0, pretend = 0, frame = 528
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #536
	str	r0, [fp, #-528]
	str	r1, [fp, #-532]
	ldr	r3, .L192
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #520
	ldr	r3, [fp, #-532]
	str	r3, [sp]
	ldr	r3, [fp, #-528]
	ldr	r2, .L192+4
	mov	r1, #512
	bl	snprintf
	sub	r3, fp, #520
	mov	r1, #0
	mov	r0, r3
	bl	access
	mov	r3, r0
	cmp	r3, #0
	bne	.L188
	mov	r3, #1
	b	.L190
.L188:
	mov	r3, #0
.L190:
	ldr	r2, .L192
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L191
	bl	__stack_chk_fail
.L191:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L193:
	.align	2
.L192:
	.word	.LC50
	.word	.LC49
	.size	is_loopback_device, .-is_loopback_device
	.section	.rodata
	.align	2
.LC51:
	.ascii	"scandir\000"
	.align	2
.LC52:
	.ascii	"gb_loopback%u\000"
	.align	2
.LC53:
	.ascii	"max number of devices reached!\012\000"
	.align	2
.LC54:
	.ascii	"%s%s/\000"
	.align	2
.LC55:
	.ascii	"%sraw_latency_%s\000"
	.align	2
.LC56:
	.ascii	"add %s %s\012\000"
	.align	2
.LC57:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	find_loopback_devices
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_loopback_devices, %function
find_loopback_devices:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	ldr	r3, .L212
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, [fp, #-40]
	add	r0, r3, #324
	add	r0, r0, #3
	sub	r1, fp, #32
	ldr	r3, .L212+4
	mov	r2, #0
	bl	scandir
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L195
	ldr	r0, .L212+8
	bl	perror
	mvn	r3, #18
	str	r3, [fp, #-20]
	b	.L196
.L195:
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	bgt	.L197
	mvn	r3, #11
	str	r3, [fp, #-20]
	b	.L198
.L197:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L199
.L205:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	add	r3, r3, #11
	sub	r2, fp, #28
	ldr	r1, .L212+12
	mov	r0, r3
	bl	__isoc99_sscanf
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	bne	.L210
	ldr	r3, [fp, #-40]
	add	r3, r3, #324
	add	r3, r3, #3
	ldr	r1, [fp, #-32]
	ldr	r2, [fp, #-24]
	lsl	r2, r2, #2
	add	r2, r1, r2
	ldr	r2, [r2]
	add	r2, r2, #11
	mov	r1, r2
	mov	r0, r3
	bl	is_loopback_device
	mov	r3, r0
	cmp	r3, #0
	beq	.L211
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #36]
	cmp	r3, #10
	bne	.L203
	ldr	r3, .L212+16
	ldr	r3, [r3]
	mov	r2, #31
	mov	r1, #1
	ldr	r0, .L212+20
	bl	fwrite
	b	.L204
.L203:
	ldr	r3, [fp, #-40]
	ldr	r2, [r3, #36]
	add	r1, r2, #1
	ldr	r3, [fp, #-40]
	str	r1, [r3, #36]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [fp, #-40]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-12]
	ldr	r3, [fp, #-28]
	ldr	r2, .L212+12
	mov	r1, #255
	bl	snprintf
	ldr	r3, [fp, #-12]
	add	r0, r3, #512
	ldr	r3, [fp, #-40]
	add	r3, r3, #324
	add	r3, r3, #3
	ldr	r2, [fp, #-12]
	str	r2, [sp]
	ldr	r2, .L212+24
	mov	r1, #512
	bl	snprintf
	ldr	r3, [fp, #-12]
	add	r0, r3, #1024
	ldr	r3, [fp, #-40]
	add	r3, r3, #836
	add	r3, r3, #3
	ldr	r2, [fp, #-12]
	str	r2, [sp]
	ldr	r2, .L212+28
	mov	r1, #512
	bl	snprintf
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L201
	ldr	r3, [fp, #-12]
	add	r1, r3, #512
	ldr	r3, [fp, #-12]
	add	r3, r3, #1024
	mov	r2, r3
	ldr	r0, .L212+32
	bl	printf
	b	.L201
.L210:
	nop
	b	.L201
.L211:
	nop
.L201:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L199:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L205
.L204:
	mov	r3, #0
	str	r3, [fp, #-20]
.L198:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L206
.L207:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L206:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L207
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	free
.L196:
	ldr	r3, [fp, #-20]
	ldr	r2, .L212
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L209
	bl	__stack_chk_fail
.L209:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L213:
	.align	2
.L212:
	.word	.LC57
	.word	alphasort
	.word	.LC51
	.word	.LC52
	.word	stderr
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.size	find_loopback_devices, .-find_loopback_devices
	.section	.rodata
	.align	2
.LC58:
	.ascii	"iteration_count\000"
	.align	2
.LC59:
	.ascii	"Error opening poll file!\012\000"
	.align	2
.LC60:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	open_poll_files, %function
open_poll_files:
	@ args = 0, pretend = 0, frame = 288
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #296
	str	r0, [fp, #-288]
	ldr	r3, .L227
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-276]
	mov	r3, #0
	str	r3, [fp, #-272]
	b	.L215
.L220:
	ldr	r2, [fp, #-272]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [fp, #-288]
	add	r3, r2, r3
	str	r3, [fp, #-268]
	ldr	r1, [fp, #-272]
	ldr	r0, [fp, #-288]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L226
	ldr	r3, [fp, #-268]
	add	r3, r3, #512
	sub	r0, fp, #264
	ldr	r2, .L227+4
	str	r2, [sp]
	ldr	r2, .L227+8
	mov	r1, #255
	bl	snprintf
	sub	r3, fp, #264
	mov	r1, #0
	mov	r0, r3
	bl	open
	mov	r1, r0
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-276]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	str	r1, [r3, #4]
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-276]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bge	.L218
	ldr	r3, .L227+12
	ldr	r3, [r3]
	mov	r2, #25
	mov	r1, #1
	ldr	r0, .L227+16
	bl	fwrite
	nop
.L219:
	mov	r3, #0
	str	r3, [fp, #-272]
	b	.L222
.L218:
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-276]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r0, [r3, #4]
	sub	r3, fp, #276
	sub	r3, r3, #1
	mov	r2, #1
	mov	r1, r3
	bl	read
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-276]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #8
	mov	r2, #10
	strh	r2, [r3]	@ movhi
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-276]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #10
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-276]
	add	r3, r3, #1
	str	r3, [fp, #-276]
	b	.L217
.L226:
	nop
.L217:
	ldr	r3, [fp, #-272]
	add	r3, r3, #1
	str	r3, [fp, #-272]
.L215:
	ldr	r3, [fp, #-288]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-272]
	cmp	r2, r3
	blt	.L220
	ldr	r3, [fp, #-288]
	ldr	r2, [fp, #-276]
	str	r2, [r3, #68]
	mov	r3, #0
	b	.L224
.L223:
	ldr	r2, [fp, #-288]
	ldr	r3, [fp, #-272]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	close
	ldr	r3, [fp, #-272]
	add	r3, r3, #1
	str	r3, [fp, #-272]
.L222:
	ldr	r2, [fp, #-272]
	ldr	r3, [fp, #-276]
	cmp	r2, r3
	blt	.L223
	mvn	r3, #0
.L224:
	ldr	r2, .L227
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L225
	bl	__stack_chk_fail
.L225:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L228:
	.align	2
.L227:
	.word	.LC60
	.word	.LC58
	.word	.LC6
	.word	stderr
	.word	.LC59
	.size	open_poll_files, .-open_poll_files
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	close_poll_files, %function
close_poll_files:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L230
.L231:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	close
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L230:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #68]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L231
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	close_poll_files, .-close_poll_files
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_complete, %function
is_complete:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L234
.L238:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L239
	ldr	r2, [fp, #-12]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldr	r1, .L240
	mov	r0, r3
	bl	read_sysfs_int
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	beq	.L236
	mov	r3, #0
	b	.L237
.L239:
	nop
.L236:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L234:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L238
	mov	r3, #1
.L237:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L241:
	.align	2
.L240:
	.word	.LC58
	.size	is_complete, .-is_complete
	.section	.rodata
	.align	2
.LC61:
	.ascii	"type\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	stop_tests, %function
stop_tests:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L243
.L246:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L247
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	ldr	r1, .L248
	mov	r0, r3
	bl	write_sysfs_val
	b	.L245
.L247:
	nop
.L245:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L243:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L246
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L249:
	.align	2
.L248:
	.word	.LC61
	.size	stop_tests, .-stop_tests
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	handler, %function
handler:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	handler, .-handler
	.section	.rodata
	.align	2
.LC62:
	.ascii	"sigaction error\012\000"
	.align	2
.LC63:
	.ascii	"Poll exit with errno %d\012\000"
	.align	2
.LC64:
	.ascii	"Iteration count did not finish!\012\000"
	.align	2
.LC65:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	wait_for_complete, %function
wait_for_complete:
	@ args = 0, pretend = 0, frame = 432
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #436
	str	r0, [fp, #-440]
	ldr	r3, .L267
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-428]
	mov	r3, #0
	str	r3, [fp, #-420]
	sub	r3, fp, #284
	mov	r0, r3
	bl	sigemptyset
	sub	r3, fp, #412
	mov	r0, r3
	bl	sigemptyset
	sub	r3, fp, #284
	mov	r1, #2
	mov	r0, r3
	bl	sigaddset
	sub	r2, fp, #412
	sub	r3, fp, #284
	mov	r1, r3
	mov	r0, #0
	bl	sigprocmask
	ldr	r3, .L267+4
	str	r3, [fp, #-156]
	mov	r3, #0
	str	r3, [fp, #-24]
	sub	r3, fp, #156
	add	r3, r3, #4
	mov	r0, r3
	bl	sigemptyset
	sub	r3, fp, #156
	mov	r2, #0
	mov	r1, r3
	mov	r0, #2
	bl	sigaction
	mov	r3, r0
	cmn	r3, #1
	bne	.L252
	ldr	r3, .L267+8
	ldr	r3, [r3]
	mov	r2, #16
	mov	r1, #1
	ldr	r0, .L267+12
	bl	fwrite
	mvn	r3, #0
	b	.L263
.L252:
	ldr	r3, [fp, #-440]
	ldr	r3, [r3, #1352]
	cmp	r3, #0
	beq	.L261
	ldr	r3, [fp, #-440]
	add	r3, r3, #1344
	add	r3, r3, #8
	str	r3, [fp, #-420]
.L261:
	ldr	r3, [fp, #-440]
	add	r0, r3, #17408
	add	r0, r0, #236
	ldr	r3, [fp, #-440]
	ldr	r1, [r3, #68]
	sub	r3, fp, #412
	ldr	r2, [fp, #-420]
	bl	ppoll
	str	r0, [fp, #-416]
	ldr	r3, [fp, #-416]
	cmp	r3, #0
	bgt	.L255
	ldr	r0, [fp, #-440]
	bl	stop_tests
	ldr	r3, .L267+8
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, .L267+16
	mov	r0, r4
	bl	fprintf
	mvn	r3, #0
	b	.L263
.L255:
	mov	r3, #0
	str	r3, [fp, #-424]
	b	.L256
.L258:
	ldr	r2, [fp, #-440]
	ldr	r3, [fp, #-424]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	add	r3, r3, #10
	ldrsh	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L257
	ldr	r2, [fp, #-440]
	ldr	r3, [fp, #-424]
	add	r3, r3, #2192
	add	r3, r3, #13
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r0, [r3, #4]
	sub	r3, fp, #428
	sub	r3, r3, #1
	mov	r2, #1
	mov	r1, r3
	bl	read
	ldr	r3, [fp, #-428]
	add	r3, r3, #1
	str	r3, [fp, #-428]
.L257:
	ldr	r3, [fp, #-424]
	add	r3, r3, #1
	str	r3, [fp, #-424]
.L256:
	ldr	r3, [fp, #-440]
	ldr	r3, [r3, #68]
	ldr	r2, [fp, #-424]
	cmp	r2, r3
	blt	.L258
	ldr	r3, [fp, #-440]
	ldr	r3, [r3, #68]
	ldr	r2, [fp, #-428]
	cmp	r2, r3
	beq	.L266
	b	.L261
.L266:
	nop
	ldr	r0, [fp, #-440]
	bl	is_complete
	mov	r3, r0
	cmp	r3, #0
	bne	.L262
	ldr	r3, .L267+8
	ldr	r3, [r3]
	mov	r2, #32
	mov	r1, #1
	ldr	r0, .L267+20
	bl	fwrite
	mvn	r3, #0
	b	.L263
.L262:
	mov	r3, #0
.L263:
	ldr	r2, .L267
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L264
	bl	__stack_chk_fail
.L264:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L268:
	.align	2
.L267:
	.word	.LC65
	.word	handler
	.word	stderr
	.word	.LC62
	.word	.LC63
	.word	.LC64
	.size	wait_for_complete, .-wait_for_complete
	.section	.rodata
	.align	2
.LC66:
	.ascii	"us_wait\000"
	.align	2
.LC67:
	.ascii	"size\000"
	.align	2
.LC68:
	.ascii	"iteration_max\000"
	.align	2
.LC69:
	.ascii	"async\000"
	.align	2
.LC70:
	.ascii	"timeout\000"
	.align	2
.LC71:
	.ascii	"outstanding_operations_max\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	prepare_devices, %function
prepare_devices:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L270
.L273:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #64]
	cmp	r3, #0
	bne	.L271
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L272
.L271:
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	ldr	r1, .L280
	mov	r0, r3
	bl	write_sysfs_val
.L272:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L270:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L273
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L274
.L278:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L279
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #56]
	mov	r2, r3
	ldr	r1, .L280+4
	bl	write_sysfs_val
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	mov	r2, r3
	ldr	r1, .L280+8
	bl	write_sysfs_val
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #24]
	mov	r2, r3
	ldr	r1, .L280+12
	bl	write_sysfs_val
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #44]
	cmp	r3, #0
	beq	.L277
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #1
	ldr	r1, .L280+16
	mov	r0, r3
	bl	write_sysfs_val
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #48]
	mov	r2, r3
	ldr	r1, .L280+20
	bl	write_sysfs_val
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #52]
	mov	r2, r3
	ldr	r1, .L280+24
	bl	write_sysfs_val
	b	.L276
.L277:
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #0
	ldr	r1, .L280+16
	mov	r0, r3
	bl	write_sysfs_val
	b	.L276
.L279:
	nop
.L276:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L274:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L278
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L281:
	.align	2
.L280:
	.word	.LC61
	.word	.LC66
	.word	.LC67
	.word	.LC68
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.size	prepare_devices, .-prepare_devices
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	start, %function
start:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L283
.L286:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L288
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1872
	ldr	r2, [fp, #-16]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #32]
	mov	r2, r3
	ldr	r1, .L289
	bl	write_sysfs_val
	b	.L285
.L288:
	nop
.L285:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L283:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L286
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L290:
	.align	2
.L289:
	.word	.LC61
	.size	start, .-start
	.section	.rodata
	.align	2
.LC72:
	.ascii	"invalid test %s\012\000"
	.align	2
.LC73:
	.ascii	"Error running test\000"
	.text
	.align	2
	.global	loopback_run
	.syntax unified
	.arm
	.fpu softvfp
	.type	loopback_run, %function
loopback_run:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L292
.L294:
	ldr	r2, .L302
	ldr	r3, [fp, #-12]
	ldr	r2, [r2, r3, lsl #3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #72
	mov	r1, r3
	mov	r0, r2
	bl	strstr
	mov	r3, r0
	cmp	r3, #0
	beq	.L293
	ldr	r2, .L302
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #32]
.L293:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L292:
	ldr	r2, .L302
	ldr	r3, [fp, #-12]
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	bne	.L294
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #32]
	cmp	r3, #0
	bne	.L295
	ldr	r3, .L302+4
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #72
	mov	r2, r3
	ldr	r1, .L302+8
	bl	fprintf
	bl	usage
	b	.L291
.L295:
	ldr	r0, [fp, #-16]
	bl	prepare_devices
	ldr	r0, [fp, #-16]
	bl	open_poll_files
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L300
	ldr	r0, [fp, #-16]
	bl	start
	ldr	r0, [fp, #-16]
	bl	wait_for_complete
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	close_poll_files
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L301
	ldr	r0, [fp, #-16]
	bl	get_results
	ldr	r0, [fp, #-16]
	bl	log_results
	b	.L291
.L300:
	nop
	b	.L298
.L301:
	nop
.L298:
	ldr	r0, .L302+12
	bl	puts
	nop
.L291:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L303:
	.align	2
.L302:
	.word	dict
	.word	stderr
	.word	.LC72
	.word	.LC73
	.size	loopback_run, .-loopback_run
	.section	.rodata
	.align	2
.LC74:
	.ascii	"No loopback devices found\012\000"
	.align	2
.LC75:
	.ascii	"Bad device mask %x\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sanity_check, %function
sanity_check:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #36]
	cmp	r3, #0
	bne	.L305
	ldr	r3, .L312
	ldr	r3, [r3]
	mov	r2, #26
	mov	r1, #1
	ldr	r0, .L312+4
	bl	fwrite
	mvn	r3, #0
	b	.L306
.L305:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L307
.L310:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	device_enabled
	mov	r3, r0
	cmp	r3, #0
	beq	.L311
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	cmp	r3, #0
	beq	.L309
	ldr	r2, [fp, #-8]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r2, r3, #3
	add	r3, r3, r2
	lsl	r2, r3, #4
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	add	r3, r2, #1360
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L309
	ldr	r3, .L312
	ldr	r0, [r3]
	mov	r2, #1
	ldr	r3, [fp, #-8]
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r1, .L312+8
	bl	fprintf
	mvn	r3, #0
	b	.L306
.L311:
	nop
.L309:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L307:
	ldr	r3, [fp, #-8]
	cmp	r3, #9
	ble	.L310
	mov	r3, #0
.L306:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L313:
	.align	2
.L312:
	.word	stderr
	.word	.LC74
	.word	.LC75
	.size	sanity_check, .-sanity_check
	.section	.rodata
	.align	2
.LC76:
	.ascii	"/sys/class/gb_loopback/\000"
	.align	2
.LC77:
	.ascii	"/sys/kernel/debug/gb_loopback/\000"
	.align	2
.LC78:
	.ascii	"%s\000"
	.align	2
.LC79:
	.ascii	"t:s:i:S:D:m:v::d::r::p::a::l::x::o:O:c:w:z::f::\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, .L347
	str	r3, [fp, #-20]
	ldr	r3, .L347+4
	str	r3, [fp, #-16]
	ldr	r2, .L347+8
	mov	r1, #0
	ldr	r0, .L347+12
	bl	memset
	b	.L315
.L338:
	ldr	r3, [fp, #-12]
	sub	r3, r3, #68
	cmp	r3, #54
	ldrls	pc, [pc, r3, asl #2]
	b	.L316
.L318:
	.word	.L336
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L335
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L334
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L316
	.word	.L333
	.word	.L316
	.word	.L332
	.word	.L331
	.word	.L316
	.word	.L330
	.word	.L316
	.word	.L316
	.word	.L329
	.word	.L316
	.word	.L316
	.word	.L328
	.word	.L327
	.word	.L316
	.word	.L326
	.word	.L325
	.word	.L316
	.word	.L324
	.word	.L323
	.word	.L322
	.word	.L316
	.word	.L321
	.word	.L320
	.word	.L319
	.word	.L316
	.word	.L317
.L322:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	ldr	r2, .L347+20
	mov	r1, #255
	ldr	r0, .L347+24
	bl	snprintf
	b	.L315
.L323:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #20]
	b	.L315
.L329:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #24]
	b	.L315
.L334:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	ldr	r2, .L347+20
	mov	r1, #512
	ldr	r0, .L347+28
	bl	snprintf
	b	.L315
.L336:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	ldr	r2, .L347+20
	mov	r1, #512
	ldr	r0, .L347+32
	bl	snprintf
	b	.L315
.L327:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atol
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #16]
	b	.L315
.L321:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3]
	b	.L315
.L331:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #4]
	b	.L315
.L324:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #8]
	b	.L315
.L325:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #12]
	b	.L315
.L333:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #28]
	b	.L315
.L328:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #40]
	b	.L315
.L319:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #44]
	b	.L315
.L326:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #48]
	b	.L315
.L335:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #1352]
	b	.L315
.L332:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #52]
	b	.L315
.L320:
	ldr	r3, .L347+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L347+12
	str	r3, [r2, #56]
	b	.L315
.L317:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #60]
	b	.L315
.L330:
	ldr	r3, .L347+12
	mov	r2, #1
	str	r2, [r3, #64]
	b	.L315
.L316:
	bl	usage
	mvn	r3, #21
	b	.L337
.L315:
	ldr	r2, .L347+36
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	getopt
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	bne	.L338
	ldr	r3, .L347+12
	ldrb	r3, [r3, #327]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L339
	ldr	r3, [fp, #-20]
	ldr	r2, .L347+20
	mov	r1, #512
	ldr	r0, .L347+28
	bl	snprintf
.L339:
	ldr	r3, .L347+12
	ldrb	r3, [r3, #839]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L340
	ldr	r3, [fp, #-16]
	ldr	r2, .L347+20
	mov	r1, #512
	ldr	r0, .L347+32
	bl	snprintf
.L340:
	ldr	r0, .L347+12
	bl	find_loopback_devices
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L341
	ldr	r3, [fp, #-8]
	b	.L337
.L341:
	ldr	r0, .L347+12
	bl	sanity_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L342
	ldr	r3, [fp, #-8]
	b	.L337
.L342:
	ldr	r3, .L347+12
	ldr	r3, [r3, #40]
	cmp	r3, #0
	beq	.L343
	ldr	r0, .L347+12
	bl	show_loopback_devices
	mov	r3, #0
	b	.L337
.L343:
	ldr	r3, .L347+12
	ldrb	r3, [r3, #72]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L344
	ldr	r3, .L347+12
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L345
.L344:
	bl	usage
.L345:
	ldr	r3, .L347+12
	ldr	r3, [r3, #48]
	cmp	r3, #0
	bne	.L346
	ldr	r3, .L347+12
	ldr	r2, .L347+40
	str	r2, [r3, #48]
.L346:
	ldr	r0, .L347+12
	bl	loopback_run
	mov	r3, #0
.L337:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L348:
	.align	2
.L347:
	.word	.LC76
	.word	.LC77
	.word	17724
	.word	t
	.word	optarg
	.word	.LC78
	.word	t+72
	.word	t+327
	.word	t+839
	.word	.LC79
	.word	200000
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
