	.file	"98576008.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"success"
.LC1:
	.string	"invalid length"
.LC2:
	.string	"no policy for this connection"
.LC3:
	.string	"no state for this connection"
.LC4:
	.string	"SAD is out of memory"
.LC5:
	.string	"transport mode is unsupported"
.LC6:
	.string	"invalid sequence number"
.LC7:
	.string	"unknown SPI"
.LC8:
	.string	"mbox already freed"
.LC9:
	.string	"mbox out of memory"
	.align 8
.LC10:
	.string	"packet contains invalid protocol"
.LC11:
	.string	"error copying buffers"
.LC12:
	.string	"error copying mboxes"
.LC13:
	.string	"error splitting mboxes"
.LC14:
	.string	"parse error"
.LC15:
	.string	"SAD src field missing"
.LC16:
	.string	"SAD dst field missing"
.LC17:
	.string	"SAD spi field missing"
.LC18:
	.string	"SAD esp_mode field missing"
.LC19:
	.string	"SAD auth_algo field missing"
.LC20:
	.string	"SAD enc_algo field missing"
.LC21:
	.string	"unimplemented"
	.align 8
.LC22:
	.string	"tried to operate on a null mbox pointer"
.LC23:
	.string	"SAD key is missing"
.LC24:
	.string	"authentication failed"
.LC25:
	.string	"unknown error"
	.text
	.globl	err_str
	.type	err_str, @function
err_str:
.LFB0:
	.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
	cmp	DWORD PTR -4[rbp], 25
	ja	.L2
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L4[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L4[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L4:
	.long	.L28-.L4
	.long	.L27-.L4
	.long	.L26-.L4
	.long	.L25-.L4
	.long	.L24-.L4
	.long	.L23-.L4
	.long	.L22-.L4
	.long	.L21-.L4
	.long	.L20-.L4
	.long	.L19-.L4
	.long	.L18-.L4
	.long	.L17-.L4
	.long	.L16-.L4
	.long	.L15-.L4
	.long	.L14-.L4
	.long	.L2-.L4
	.long	.L13-.L4
	.long	.L12-.L4
	.long	.L11-.L4
	.long	.L10-.L4
	.long	.L9-.L4
	.long	.L8-.L4
	.long	.L7-.L4
	.long	.L6-.L4
	.long	.L5-.L4
	.long	.L3-.L4
	.text
.L28:
	lea	rax, .LC0[rip]
	jmp	.L29
.L27:
	lea	rax, .LC1[rip]
	jmp	.L29
.L26:
	lea	rax, .LC2[rip]
	jmp	.L29
.L25:
	lea	rax, .LC3[rip]
	jmp	.L29
.L24:
	lea	rax, .LC4[rip]
	jmp	.L29
.L23:
	lea	rax, .LC5[rip]
	jmp	.L29
.L22:
	lea	rax, .LC6[rip]
	jmp	.L29
.L21:
	lea	rax, .LC7[rip]
	jmp	.L29
.L20:
	lea	rax, .LC8[rip]
	jmp	.L29
.L19:
	lea	rax, .LC9[rip]
	jmp	.L29
.L18:
	lea	rax, .LC10[rip]
	jmp	.L29
.L17:
	lea	rax, .LC11[rip]
	jmp	.L29
.L16:
	lea	rax, .LC12[rip]
	jmp	.L29
.L15:
	lea	rax, .LC13[rip]
	jmp	.L29
.L14:
	lea	rax, .LC14[rip]
	jmp	.L29
.L13:
	lea	rax, .LC15[rip]
	jmp	.L29
.L12:
	lea	rax, .LC16[rip]
	jmp	.L29
.L11:
	lea	rax, .LC17[rip]
	jmp	.L29
.L10:
	lea	rax, .LC18[rip]
	jmp	.L29
.L9:
	lea	rax, .LC19[rip]
	jmp	.L29
.L8:
	lea	rax, .LC20[rip]
	jmp	.L29
.L7:
	lea	rax, .LC21[rip]
	jmp	.L29
.L6:
	lea	rax, .LC22[rip]
	jmp	.L29
.L5:
	lea	rax, .LC23[rip]
	jmp	.L29
.L3:
	lea	rax, .LC24[rip]
	jmp	.L29
.L2:
	lea	rax, .LC25[rip]
.L29:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	err_str, .-err_str
	.local	mem_pool
	.comm	mem_pool,1520000,32
	.local	mem_in_use
	.comm	mem_in_use,10000,32
	.local	search_index
	.comm	search_index,8,8
	.section	.rodata
.LC26:
	.string	"mbox %lu in use\n"
	.text
	.globl	mbox_all_freed
	.type	mbox_all_freed, @function
mbox_all_freed:
.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, 16
	mov	QWORD PTR -8[rbp], 0
	jmp	.L31
.L34:
	lea	rdx, mem_in_use[rip]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L32
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	jmp	.L33
.L32:
	add	QWORD PTR -8[rbp], 1
.L31:
	cmp	QWORD PTR -8[rbp], 9999
	jbe	.L34
	mov	eax, 1
.L33:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	mbox_all_freed, .-mbox_all_freed
	.globl	mbox_new
	.type	mbox_new, @function
mbox_new:
.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, 16
	jmp	.L36
.L39:
	mov	rax, QWORD PTR search_index[rip]
	lea	rdx, mem_in_use[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	eax, 1
	test	al, al
	je	.L37
	mov	rax, QWORD PTR search_index[rip]
	lea	rdx, mem_in_use[rip]
	mov	BYTE PTR [rax+rdx], 1
	mov	rdx, QWORD PTR search_index[rip]
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, mem_pool[rip]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 152
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 128
	mov	rax, QWORD PTR search_index[rip]
	add	rax, 1
	mov	QWORD PTR search_index[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L38
.L37:
	mov	rax, QWORD PTR search_index[rip]
	add	rax, 1
	mov	QWORD PTR search_index[rip], rax
.L36:
	mov	rax, QWORD PTR search_index[rip]
	cmp	rax, 9999
	jbe	.L39
	mov	eax, 0
.L38:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	mbox_new, .-mbox_new
	.globl	mbox_free
	.type	mbox_free, @function
mbox_free:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L41
	mov	eax, 0
	jmp	.L42
.L41:
	lea	rdx, mem_pool[rip]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, rdx
	sar	rax, 3
	mov	rdx, rax
	movabs	rax, -8737931403336103397
	imul	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	lea	rdx, mem_in_use[rip]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L43
	lea	rdx, mem_in_use[rip]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR search_index[rip]
	cmp	QWORD PTR -8[rbp], rax
	cmovbe	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR search_index[rip], rax
	mov	eax, 0
	jmp	.L42
.L43:
	mov	eax, 8
.L42:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	mbox_free, .-mbox_free
	.globl	mbox_free_chain
	.type	mbox_free_chain, @function
mbox_free_chain:
.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, 24
	mov	QWORD PTR -24[rbp], rdi
	jmp	.L45
.L48:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	mbox_free
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	je	.L46
	mov	eax, DWORD PTR -12[rbp]
	jmp	.L47
.L46:
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
.L45:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L48
	mov	eax, 0
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	mbox_free_chain, .-mbox_free_chain
	.globl	mbox_from_buffer
	.type	mbox_from_buffer, @function
mbox_from_buffer:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	eax, 0
	call	mbox_new
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L50
	mov	eax, 0
	jmp	.L51
.L50:
	cmp	QWORD PTR -48[rbp], 127
	ja	.L52
	mov	rax, QWORD PTR -16[rbp]
	lea	rcx, 24[rax]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	jmp	.L51
.L52:
	mov	rax, QWORD PTR -16[rbp]
	lea	rcx, 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 128
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	QWORD PTR -24[rbp], 128
	jmp	.L53
.L57:
	mov	eax, 0
	call	mbox_new
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L54
	mov	eax, 0
	jmp	.L51
.L54:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, QWORD PTR -24[rbp]
	cmp	rax, 127
	ja	.L55
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	lea	rsi, [rcx+rdx]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rcx, 24[rdx]
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L56
.L55:
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 24
	mov	edx, 128
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
.L56:
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -32[rbp], rax
	sub	QWORD PTR -24[rbp], -128
.L53:
	mov	rax, QWORD PTR -24[rbp]
	cmp	rax, QWORD PTR -48[rbp]
	jb	.L57
	mov	rax, QWORD PTR -16[rbp]
.L51:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	mbox_from_buffer, .-mbox_from_buffer
	.globl	mbox_to_buffer
	.type	mbox_to_buffer, @function
mbox_to_buffer:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	cmp	QWORD PTR -40[rbp], 0
	jne	.L59
	mov	eax, 0
	jmp	.L60
.L59:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -48[rbp], rax
	jbe	.L61
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, rdx
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	mbox_to_buffer
	jmp	.L60
.L61:
	mov	QWORD PTR -16[rbp], 0
	jmp	.L62
.L64:
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, QWORD PTR -16[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -48[rbp]
	cmp	rdx, rax
	jnb	.L63
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rcx, 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	lea	rsi, [rcx+rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	jmp	.L60
.L63:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	lea	rsi, 24[rdx]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR [rdx]
	mov	rdx, QWORD PTR -48[rbp]
	add	rdx, rcx
	add	rsi, rdx
	mov	rcx, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -48[rbp]
	add	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -48[rbp], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -40[rbp], rax
.L62:
	cmp	QWORD PTR -40[rbp], 0
	jne	.L64
	mov	rax, QWORD PTR -16[rbp]
.L60:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	mbox_to_buffer, .-mbox_to_buffer
	.globl	mbox_to_buffer_rec
	.type	mbox_to_buffer_rec, @function
mbox_to_buffer_rec:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	cmp	QWORD PTR -40[rbp], 0
	je	.L70
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	jb	.L68
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rcx, [rdx+rax]
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	add	rcx, rsi
	mov	rsi, rax
	mov	rdi, rcx
	call	mbox_to_buffer_rec
	jmp	.L65
.L68:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 24[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rcx, [rdx+rax]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	jmp	.L65
.L70:
	nop
.L65:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	mbox_to_buffer_rec, .-mbox_to_buffer_rec
	.globl	mbox_len
	.type	mbox_len, @function
mbox_len:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -8[rbp], 0
	jmp	.L72
.L73:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	add	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -24[rbp], rax
.L72:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L73
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	mbox_len, .-mbox_len
	.globl	mbox_concat
	.type	mbox_concat, @function
mbox_concat:
.LFB15:
	.cfi_startproc
	endbr64
	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	QWORD PTR -16[rbp], rsi
	cmp	QWORD PTR -8[rbp], 0
	je	.L77
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 16[rax], rdx
.L77:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	mbox_concat, .-mbox_concat
	.globl	mbox_concat_chains
	.type	mbox_concat_chains, @function
mbox_concat_chains:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	cmp	QWORD PTR -8[rbp], 0
	je	.L85
	cmp	QWORD PTR -16[rbp], 0
	je	.L85
.L80:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	je	.L86
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L80
.L86:
	nop
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_concat
	jmp	.L78
.L85:
	nop
.L78:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	mbox_concat_chains, .-mbox_concat_chains
	.globl	mbox_drop
	.type	mbox_drop, @function
mbox_drop:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	cmp	QWORD PTR -8[rbp], 0
	je	.L91
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -16[rbp], rax
	jb	.L90
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_drop
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	jmp	.L87
.L90:
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -16[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L87
.L91:
	nop
.L87:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	mbox_drop, .-mbox_drop
	.globl	mbox_split_at
	.type	mbox_split_at, @function
mbox_split_at:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	cmp	QWORD PTR -40[rbp], 0
	je	.L93
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L94
.L93:
	mov	eax, 0
	jmp	.L95
.L94:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L96
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	jmp	.L95
.L96:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -48[rbp], rax
	jne	.L97
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -16[rbp]
	jmp	.L95
.L97:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -48[rbp], rax
	jbe	.L98
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -48[rbp]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 16
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_split_at
	jmp	.L95
.L98:
	mov	eax, 0
	call	mbox_new
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L99
	mov	eax, 0
	jmp	.L95
.L99:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rdx]
	lea	rcx, 24[rdx]
	mov	rdx, QWORD PTR -48[rbp]
	lea	rsi, [rcx+rdx]
	mov	rdx, QWORD PTR -24[rbp]
	lea	rcx, 24[rdx]
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR 8[rax]
	sub	rax, QWORD PTR -48[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
.L95:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	mbox_split_at, .-mbox_split_at
	.globl	mbox_copy
	.type	mbox_copy, @function
mbox_copy:
.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L101
	mov	eax, 0
	jmp	.L102
.L101:
	mov	eax, 0
	call	mbox_new
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L103
	mov	eax, 0
	jmp	.L102
.L103:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR -24[rbp]
	lea	rcx, 24[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rdx]
	lea	rsi, [rcx+rdx]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rcx, 24[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rdx]
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
.L102:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	mbox_copy, .-mbox_copy
	.globl	mbox_copy_chain
	.type	mbox_copy_chain, @function
mbox_copy_chain:
.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	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -32[rbp], 0
	jne	.L105
	mov	eax, 0
	jmp	.L106
.L105:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	mbox_copy
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L107
	cmp	QWORD PTR -24[rbp], 0
	jne	.L108
.L107:
	mov	eax, 0
	jmp	.L106
.L108:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -32[rbp], rax
	ja	.L109
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	jmp	.L106
.L109:
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_copy_chain
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L110
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_concat
.L110:
	mov	rax, QWORD PTR -16[rbp]
.L106:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	mbox_copy_chain, .-mbox_copy_chain
	.globl	mbox_detach
	.type	mbox_detach, @function
mbox_detach:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L112
	mov	eax, 0
	jmp	.L113
.L112:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -8[rbp]
.L113:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	mbox_detach, .-mbox_detach
	.globl	mbox_detach_from_end
	.type	mbox_detach_from_end, @function
mbox_detach_from_end:
.LFB22:
	.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	mbox_len
	sub	rax, QWORD PTR -16[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	mbox_split_at
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	mbox_detach_from_end, .-mbox_detach_from_end
	.globl	mbox_increment
	.type	mbox_increment, @function
mbox_increment:
.LFB23:
	.cfi_startproc
	endbr64
	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
	cmp	QWORD PTR -8[rbp], 0
	jne	.L117
	mov	eax, 23
	jmp	.L118
.L117:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L119
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	rax, 128
	je	.L120
.L119:
	mov	eax, 22
	jmp	.L118
.L120:
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 24
	mov	rdx, QWORD PTR [rax]
	add	rdx, 1
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L121
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 24
	add	rax, 8
	mov	rdx, QWORD PTR [rax]
	add	rdx, 1
	mov	QWORD PTR [rax], rdx
.L121:
	mov	eax, 0
.L118:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	mbox_increment, .-mbox_increment
	.globl	mbox_randomize
	.type	mbox_randomize, @function
mbox_randomize:
.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
	cmp	QWORD PTR -24[rbp], 0
	jne	.L123
	mov	eax, 23
	jmp	.L124
.L123:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L125
.L126:
	call	rand@PLT
	mov	edx, eax
	mov	rcx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	add	rax, 24
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -8[rbp], 1
.L125:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L126
	mov	eax, 0
.L124:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	mbox_randomize, .-mbox_randomize
	.globl	mbox_eq
	.type	mbox_eq, @function
mbox_eq:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L128
	cmp	QWORD PTR -32[rbp], 0
	jne	.L128
	mov	eax, 1
	jmp	.L129
.L128:
	cmp	QWORD PTR -24[rbp], 0
	je	.L130
	cmp	QWORD PTR -32[rbp], 0
	jne	.L131
.L130:
	mov	eax, 0
	jmp	.L129
.L131:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
.L138:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L132
	cmp	QWORD PTR -32[rbp], 0
	jne	.L132
	mov	eax, 1
	jmp	.L129
.L132:
	cmp	QWORD PTR -24[rbp], 0
	je	.L133
	cmp	QWORD PTR -32[rbp], 0
	jne	.L134
.L133:
	mov	eax, 0
	jmp	.L129
.L134:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -16[rbp], rdx
	mov	rdx, QWORD PTR -24[rbp]
	movzx	ecx, BYTE PTR 24[rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	rdx, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 24[rdx+rax]
	cmp	cl, al
	je	.L135
	mov	eax, 0
	jmp	.L129
.L135:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -16[rbp], rax
	jb	.L136
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L136
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
.L136:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -8[rbp], rax
	jb	.L138
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	je	.L138
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L138
.L129:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	mbox_eq, .-mbox_eq
	.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	"98576008.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"success\000"
	.align	2
.LC1:
	.ascii	"invalid length\000"
	.align	2
.LC2:
	.ascii	"no policy for this connection\000"
	.align	2
.LC3:
	.ascii	"no state for this connection\000"
	.align	2
.LC4:
	.ascii	"SAD is out of memory\000"
	.align	2
.LC5:
	.ascii	"transport mode is unsupported\000"
	.align	2
.LC6:
	.ascii	"invalid sequence number\000"
	.align	2
.LC7:
	.ascii	"unknown SPI\000"
	.align	2
.LC8:
	.ascii	"mbox already freed\000"
	.align	2
.LC9:
	.ascii	"mbox out of memory\000"
	.align	2
.LC10:
	.ascii	"packet contains invalid protocol\000"
	.align	2
.LC11:
	.ascii	"error copying buffers\000"
	.align	2
.LC12:
	.ascii	"error copying mboxes\000"
	.align	2
.LC13:
	.ascii	"error splitting mboxes\000"
	.align	2
.LC14:
	.ascii	"parse error\000"
	.align	2
.LC15:
	.ascii	"SAD src field missing\000"
	.align	2
.LC16:
	.ascii	"SAD dst field missing\000"
	.align	2
.LC17:
	.ascii	"SAD spi field missing\000"
	.align	2
.LC18:
	.ascii	"SAD esp_mode field missing\000"
	.align	2
.LC19:
	.ascii	"SAD auth_algo field missing\000"
	.align	2
.LC20:
	.ascii	"SAD enc_algo field missing\000"
	.align	2
.LC21:
	.ascii	"unimplemented\000"
	.align	2
.LC22:
	.ascii	"tried to operate on a null mbox pointer\000"
	.align	2
.LC23:
	.ascii	"SAD key is missing\000"
	.align	2
.LC24:
	.ascii	"authentication failed\000"
	.align	2
.LC25:
	.ascii	"unknown error\000"
	.text
	.align	2
	.global	err_str
	.syntax unified
	.arm
	.fpu softvfp
	.type	err_str, %function
err_str:
	@ 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]
	ldr	r3, [fp, #-8]
	cmp	r3, #25
	ldrls	pc, [pc, r3, asl #2]
	b	.L2
.L4:
	.word	.L28
	.word	.L27
	.word	.L26
	.word	.L25
	.word	.L24
	.word	.L23
	.word	.L22
	.word	.L21
	.word	.L20
	.word	.L19
	.word	.L18
	.word	.L17
	.word	.L16
	.word	.L15
	.word	.L14
	.word	.L2
	.word	.L13
	.word	.L12
	.word	.L11
	.word	.L10
	.word	.L9
	.word	.L8
	.word	.L7
	.word	.L6
	.word	.L5
	.word	.L3
.L28:
	ldr	r3, .L30
	b	.L29
.L27:
	ldr	r3, .L30+4
	b	.L29
.L26:
	ldr	r3, .L30+8
	b	.L29
.L25:
	ldr	r3, .L30+12
	b	.L29
.L24:
	ldr	r3, .L30+16
	b	.L29
.L23:
	ldr	r3, .L30+20
	b	.L29
.L22:
	ldr	r3, .L30+24
	b	.L29
.L21:
	ldr	r3, .L30+28
	b	.L29
.L20:
	ldr	r3, .L30+32
	b	.L29
.L19:
	ldr	r3, .L30+36
	b	.L29
.L18:
	ldr	r3, .L30+40
	b	.L29
.L17:
	ldr	r3, .L30+44
	b	.L29
.L16:
	ldr	r3, .L30+48
	b	.L29
.L15:
	ldr	r3, .L30+52
	b	.L29
.L14:
	ldr	r3, .L30+56
	b	.L29
.L13:
	ldr	r3, .L30+60
	b	.L29
.L12:
	ldr	r3, .L30+64
	b	.L29
.L11:
	ldr	r3, .L30+68
	b	.L29
.L10:
	ldr	r3, .L30+72
	b	.L29
.L9:
	ldr	r3, .L30+76
	b	.L29
.L8:
	ldr	r3, .L30+80
	b	.L29
.L7:
	ldr	r3, .L30+84
	b	.L29
.L6:
	ldr	r3, .L30+88
	b	.L29
.L5:
	ldr	r3, .L30+92
	b	.L29
.L3:
	ldr	r3, .L30+96
	b	.L29
.L2:
	ldr	r3, .L30+100
.L29:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L31:
	.align	2
.L30:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.size	err_str, .-err_str
	.local	mem_pool
	.comm	mem_pool,1400000,4
	.local	mem_in_use
	.comm	mem_in_use,10000,4
	.local	search_index
	.comm	search_index,4,4
	.section	.rodata
	.align	2
.LC26:
	.ascii	"mbox %lu in use\012\000"
	.text
	.align	2
	.global	mbox_all_freed
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_all_freed, %function
mbox_all_freed:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L33
.L36:
	ldr	r2, .L37
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L34
	ldr	r1, [fp, #-8]
	ldr	r0, .L37+4
	bl	printf
	mov	r3, #0
	b	.L35
.L34:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L33:
	ldr	r3, [fp, #-8]
	ldr	r2, .L37+8
	cmp	r3, r2
	bls	.L36
	mov	r3, #1
.L35:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L38:
	.align	2
.L37:
	.word	mem_in_use
	.word	.LC26
	.word	9999
	.size	mbox_all_freed, .-mbox_all_freed
	.align	2
	.global	mbox_new
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_new, %function
mbox_new:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	b	.L40
.L43:
	ldr	r3, .L44
	ldr	r3, [r3]
	ldr	r2, .L44+4
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	eor	r3, r3, #1
	and	r3, r3, #255
	cmp	r3, #0
	beq	.L41
	ldr	r3, .L44
	ldr	r3, [r3]
	ldr	r2, .L44+4
	mov	r1, #1
	strb	r1, [r2, r3]
	ldr	r3, .L44
	ldr	r2, [r3]
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r2, r3, #3
	sub	r2, r2, r3
	lsl	r3, r2, #2
	mov	r2, r3
	ldr	r3, .L44+8
	add	r3, r2, r3
	str	r3, [fp, #-8]
	mov	r2, #140
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	memset
	ldr	r3, [fp, #-8]
	mov	r2, #128
	str	r2, [r3, #4]
	ldr	r3, .L44
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L44
	str	r3, [r2]
	ldr	r3, [fp, #-8]
	b	.L42
.L41:
	ldr	r3, .L44
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L44
	str	r3, [r2]
.L40:
	ldr	r3, .L44
	ldr	r3, [r3]
	ldr	r2, .L44+12
	cmp	r3, r2
	bls	.L43
	mov	r3, #0
.L42:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L45:
	.align	2
.L44:
	.word	search_index
	.word	mem_in_use
	.word	mem_pool
	.word	9999
	.size	mbox_new, .-mbox_new
	.align	2
	.global	mbox_free
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_free, %function
mbox_free:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L47
	mov	r3, #0
	b	.L48
.L47:
	ldr	r3, [fp, #-16]
	ldr	r2, .L50
	sub	r3, r3, r2
	asr	r3, r3, #2
	ldr	r2, .L50+4
	mul	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r2, .L50+8
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L49
	ldr	r2, .L50+8
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L50+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	movcc	r3, r2
	movcs	r3, r3
	ldr	r2, .L50+12
	str	r3, [r2]
	mov	r3, #0
	b	.L48
.L49:
	mov	r3, #8
.L48:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L51:
	.align	2
.L50:
	.word	mem_pool
	.word	-1963413621
	.word	mem_in_use
	.word	search_index
	.size	mbox_free, .-mbox_free
	.align	2
	.global	mbox_free_chain
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_free_chain, %function
mbox_free_chain:
	@ 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]
	b	.L53
.L56:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	mbox_free
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L54
	ldr	r3, [fp, #-8]
	b	.L55
.L54:
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-16]
.L53:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L56
	mov	r3, #0
.L55:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_free_chain, .-mbox_free_chain
	.align	2
	.global	mbox_from_buffer
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_from_buffer, %function
mbox_from_buffer:
	@ 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]
	bl	mbox_new
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L58
	mov	r3, #0
	b	.L59
.L58:
	ldr	r3, [fp, #-28]
	cmp	r3, #127
	bhi	.L60
	ldr	r3, [fp, #-12]
	add	r3, r3, #12
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	b	.L59
.L60:
	ldr	r3, [fp, #-12]
	add	r3, r3, #12
	mov	r2, #128
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-20]
	mov	r3, #128
	str	r3, [fp, #-16]
	b	.L61
.L65:
	bl	mbox_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L62
	mov	r3, #0
	b	.L59
.L62:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	cmp	r3, #127
	bhi	.L63
	ldr	r3, [fp, #-8]
	add	r0, r3, #12
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r1, r2, r3
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r2, r3
	bl	memcpy
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-16]
	sub	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	b	.L64
.L63:
	ldr	r3, [fp, #-8]
	add	r0, r3, #12
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	mov	r2, #128
	mov	r1, r3
	bl	memcpy
.L64:
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r3, #128
	str	r3, [fp, #-16]
.L61:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	bcc	.L65
	ldr	r3, [fp, #-12]
.L59:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_from_buffer, .-mbox_from_buffer
	.align	2
	.global	mbox_to_buffer
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_to_buffer, %function
mbox_to_buffer:
	@ 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, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L67
	mov	r3, #0
	b	.L68
.L67:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bls	.L69
	ldr	r3, [fp, #-24]
	ldr	r1, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	mov	r2, r1
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mbox_to_buffer
	mov	r3, r0
	b	.L68
.L69:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L70
.L72:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-12]
	sub	r2, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r1, [r3, #4]
	ldr	r3, [fp, #-28]
	sub	r3, r1, r3
	cmp	r2, r3
	bcs	.L71
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r0, r2, r3
	ldr	r3, [fp, #-24]
	add	r2, r3, #12
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r1, r3
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	mov	r1, r3
	bl	memcpy
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	b	.L68
.L71:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r0, r2, r3
	ldr	r3, [fp, #-24]
	add	r2, r3, #12
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r1, r3
	add	r1, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-28]
	sub	r3, r2, r3
	mov	r2, r3
	bl	memcpy
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-28]
	sub	r3, r2, r3
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-24]
.L70:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L72
	ldr	r3, [fp, #-12]
.L68:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_to_buffer, .-mbox_to_buffer
	.align	2
	.global	mbox_to_buffer_rec
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_to_buffer_rec, %function
mbox_to_buffer_rec:
	@ 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, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L78
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bcc	.L76
	ldr	r3, [fp, #-24]
	add	r2, r3, #12
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	memcpy
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r0, r2, r3
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-8]
	sub	r1, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	mov	r2, r3
	bl	mbox_to_buffer_rec
	b	.L73
.L76:
	ldr	r3, [fp, #-24]
	add	r2, r3, #12
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	memcpy
	b	.L73
.L78:
	nop
.L73:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_to_buffer_rec, .-mbox_to_buffer_rec
	.align	2
	.global	mbox_len
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_len, %function
mbox_len:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L80
.L81:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-16]
.L80:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L81
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	mbox_len, .-mbox_len
	.align	2
	.global	mbox_concat
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_concat, %function
mbox_concat:
	@ 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]
	cmp	r3, #0
	beq	.L85
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #8]
.L85:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	mbox_concat, .-mbox_concat
	.align	2
	.global	mbox_concat_chains
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_concat_chains, %function
mbox_concat_chains:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L93
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L93
.L88:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	beq	.L94
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-8]
	b	.L88
.L94:
	nop
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	mbox_concat
	b	.L86
.L93:
	nop
.L86:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_concat_chains, .-mbox_concat_chains
	.align	2
	.global	mbox_drop
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_drop, %function
mbox_drop:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L99
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L98
	ldr	r3, [fp, #-8]
	ldr	r0, [r3, #8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	sub	r3, r2, r3
	mov	r1, r3
	bl	mbox_drop
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	b	.L95
.L98:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	sub	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	b	.L95
.L99:
	nop
.L95:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_drop, .-mbox_drop
	.align	2
	.global	mbox_split_at
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_split_at, %function
mbox_split_at:
	@ 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, [fp, #-24]
	cmp	r3, #0
	beq	.L101
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L102
.L101:
	mov	r3, #0
	b	.L103
.L102:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L104
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	b	.L103
.L104:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bne	.L105
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-12]
	b	.L103
.L105:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bls	.L106
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	add	r0, r3, #8
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	mov	r1, r3
	bl	mbox_split_at
	mov	r3, r0
	b	.L103
.L106:
	bl	mbox_new
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L107
	mov	r3, #0
	b	.L103
.L107:
	ldr	r3, [fp, #-16]
	add	r0, r3, #12
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	add	r2, r3, #12
	ldr	r3, [fp, #-28]
	add	r1, r2, r3
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-28]
	sub	r3, r2, r3
	mov	r2, r3
	bl	memcpy
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-28]
	sub	r2, r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
.L103:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_split_at, .-mbox_split_at
	.align	2
	.global	mbox_copy
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_copy, %function
mbox_copy:
	@ 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]
	cmp	r3, #0
	bne	.L109
	mov	r3, #0
	b	.L110
.L109:
	bl	mbox_new
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L111
	mov	r3, #0
	b	.L110
.L111:
	ldr	r3, [fp, #-8]
	add	r2, r3, #12
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	add	r0, r2, r3
	ldr	r3, [fp, #-16]
	add	r2, r3, #12
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	add	r1, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r2, r3
	bl	memcpy
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
.L110:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_copy, .-mbox_copy
	.align	2
	.global	mbox_copy_chain
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_copy_chain, %function
mbox_copy_chain:
	@ 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]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L113
	mov	r3, #0
	b	.L114
.L113:
	ldr	r0, [fp, #-16]
	bl	mbox_copy
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L115
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L116
.L115:
	mov	r3, #0
	b	.L114
.L116:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bhi	.L117
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	b	.L114
.L117:
	ldr	r3, [fp, #-16]
	ldr	r0, [r3, #8]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	sub	r3, r2, r3
	mov	r1, r3
	bl	mbox_copy_chain
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L118
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	mbox_concat
.L118:
	ldr	r3, [fp, #-12]
.L114:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_copy_chain, .-mbox_copy_chain
	.align	2
	.global	mbox_detach
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_detach, %function
mbox_detach:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L120
	mov	r3, #0
	b	.L121
.L120:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
.L121:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	mbox_detach, .-mbox_detach
	.align	2
	.global	mbox_detach_from_end
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_detach_from_end, %function
mbox_detach_from_end:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	mbox_len
	mov	r2, r0
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	mbox_split_at
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_detach_from_end, .-mbox_detach_from_end
	.align	2
	.global	mbox_increment
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_increment, %function
mbox_increment:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #12
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L125
	mov	r3, #23
	b	.L126
.L125:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L127
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #128
	beq	.L128
.L127:
	mov	r3, #22
	b	.L126
.L128:
	ldr	r3, [fp, #-24]
	add	r1, r3, #12
	ldmia	r1, {r2-r3}
	adds	r6, r2, #1
	adc	r7, r3, #0
	stm	r1, {r6-r7}
	ldmia	r1, {r2-r3}
	orrs	r3, r2, r3
	bne	.L129
	ldr	r3, [fp, #-24]
	add	r3, r3, #12
	add	r1, r3, #8
	ldmia	r1, {r2-r3}
	adds	r4, r2, #1
	adc	r5, r3, #0
	stm	r1, {r4-r5}
.L129:
	mov	r3, #0
.L126:
	mov	r0, r3
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
	.size	mbox_increment, .-mbox_increment
	.align	2
	.global	mbox_randomize
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_randomize, %function
mbox_randomize:
	@ 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]
	cmp	r3, #0
	bne	.L131
	mov	r3, #23
	b	.L132
.L131:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	b	.L133
.L134:
	bl	rand
	mov	r3, r0
	and	r1, r3, #255
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #12
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L133:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	bcc	.L134
	mov	r3, #0
.L132:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	mbox_randomize, .-mbox_randomize
	.align	2
	.global	mbox_eq
	.syntax unified
	.arm
	.fpu softvfp
	.type	mbox_eq, %function
mbox_eq:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L136
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L136
	mov	r3, #1
	b	.L137
.L136:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L138
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L139
.L138:
	mov	r3, #0
	b	.L137
.L139:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
.L146:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L140
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L140
	mov	r3, #1
	b	.L137
.L140:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L141
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L142
.L141:
	mov	r3, #0
	b	.L137
.L142:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [r3, #12]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	add	r1, r3, #1
	str	r1, [fp, #-8]
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	ldrb	r3, [r3, #12]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L143
	mov	r3, #0
	b	.L137
.L143:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L144
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L144
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L144:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	bcc	.L146
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L146
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	b	.L146
.L137:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	mbox_eq, .-mbox_eq
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
