	.file	"518912.c"
	.intel_syntax noprefix
	.text
	.globl	m
	.bss
	.align 32
	.type	m, @object
	.size	m, 524288
m:
	.zero	524288
	.globl	sm
	.align 32
	.type	sm, @object
	.size	sm, 16384
sm:
	.zero	16384
	.globl	size
	.data
	.align 8
	.type	size, @object
	.size	size, 8
size:
	.quad	4024
	.globl	bins
	.bss
	.align 8
	.type	bins, @object
	.size	bins, 8
bins:
	.zero	8
	.globl	sbins
	.align 8
	.type	sbins, @object
	.size	sbins, 8
sbins:
	.zero	8
	.globl	total_size
	.align 8
	.type	total_size, @object
	.size	total_size, 8
total_size:
	.zero	8
	.globl	total_size_max
	.align 8
	.type	total_size_max, @object
	.size	total_size_max, 8
total_size_max:
	.zero	8
	.globl	base_ptr
	.align 8
	.type	base_ptr, @object
	.size	base_ptr, 8
base_ptr:
	.zero	8
	.globl	base_save
	.align 8
	.type	base_save, @object
	.size	base_save, 8
base_save:
	.zero	8
	.text
	.globl	lran2
	.type	lran2, @function
lran2:
.LFB6:
	.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	.L2
	mov	eax, DWORD PTR first.3[rip]
	test	eax, eax
	je	.L3
.L2:
	mov	DWORD PTR first.3[rip], 0
	mov	eax, 150889
	sub	rax, QWORD PTR -24[rbp]
	mov	rcx, rax
	movabs	rdx, 6772456536477737753
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 18
	mov	rdx, rcx
	sar	rdx, 63
	sub	rax, rdx
	imul	rdx, rax, 714025
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR x.2[rip], rax
	mov	rax, QWORD PTR x.2[rip]
	test	rax, rax
	jns	.L4
	mov	rax, QWORD PTR x.2[rip]
	neg	rax
	mov	QWORD PTR x.2[rip], rax
.L4:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L5
.L6:
	mov	rax, QWORD PTR x.2[rip]
	imul	rax, rax, 1366
	lea	rcx, 150889[rax]
	movabs	rdx, 6772456536477737753
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 18
	mov	rdx, rcx
	sar	rdx, 63
	sub	rax, rdx
	imul	rdx, rax, 714025
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR x.2[rip], rax
	mov	rax, QWORD PTR x.2[rip]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, v.1[rip]
	mov	QWORD PTR [rcx+rdx], rax
	add	DWORD PTR -4[rbp], 1
.L5:
	cmp	DWORD PTR -4[rbp], 96
	jle	.L6
	mov	rax, QWORD PTR x.2[rip]
	imul	rax, rax, 1366
	lea	rcx, 150889[rax]
	movabs	rdx, 6772456536477737753
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 18
	mov	rdx, rcx
	sar	rdx, 63
	sub	rax, rdx
	imul	rdx, rax, 714025
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR x.2[rip], rax
	mov	rax, QWORD PTR x.2[rip]
	mov	QWORD PTR y.0[rip], rax
.L3:
	mov	rcx, QWORD PTR y.0[rip]
	movabs	rdx, -6275696437447579415
	mov	rax, rcx
	imul	rdx
	lea	rax, [rdx+rcx]
	sar	rax, 6
	mov	rsi, rcx
	sar	rsi, 63
	sub	rax, rsi
	mov	rdx, rax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 5
	add	rax, rdx
	sub	rcx, rax
	mov	rdx, rcx
	mov	DWORD PTR -4[rbp], edx
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, v.1[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR y.0[rip], rax
	mov	rax, QWORD PTR x.2[rip]
	imul	rax, rax, 1366
	lea	rcx, 150889[rax]
	movabs	rdx, 6772456536477737753
	mov	rax, rcx
	imul	rdx
	mov	rax, rdx
	sar	rax, 18
	mov	rdx, rcx
	sar	rdx, 63
	sub	rax, rdx
	imul	rdx, rax, 714025
	mov	rax, rcx
	sub	rax, rdx
	mov	QWORD PTR x.2[rip], rax
	mov	rax, QWORD PTR x.2[rip]
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, v.1[rip]
	mov	QWORD PTR [rcx+rdx], rax
	mov	rax, QWORD PTR y.0[rip]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	lran2, .-lran2
	.globl	mem_init
	.type	mem_init, @function
mem_init:
.LFB7:
	.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 -32[rbp], 0
	je	.L15
	cmp	QWORD PTR -32[rbp], 8
	jbe	.L11
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -32[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	QWORD PTR -16[rbp], 2047
	jmp	.L13
.L11:
	mov	QWORD PTR -16[rbp], 0
	jmp	.L13
.L14:
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 8
	mov	esi, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, eax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	xor	esi, ecx
	mov	edx, esi
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -16[rbp], 2047
.L13:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jb	.L14
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 8
	mov	esi, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, eax
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	xor	esi, ecx
	mov	edx, esi
	mov	BYTE PTR [rax], dl
	jmp	.L8
.L15:
	nop
.L8:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	mem_init, .-mem_init
	.section	.rodata
	.align 8
.LC0:
	.string	"failed size check: expected %x, found %x!\n"
	.align 8
.LC1:
	.string	"failed last byte check: expected %x, found %x!\n"
	.text
	.globl	mem_check
	.type	mem_check, @function
mem_check:
.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	QWORD PTR -32[rbp], rsi
	cmp	QWORD PTR -32[rbp], 0
	jne	.L17
	mov	eax, 0
	jmp	.L18
.L17:
	cmp	QWORD PTR -32[rbp], 8
	jbe	.L19
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -32[rbp]
	cmp	rdx, rax
	je	.L20
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 1
	jmp	.L18
.L20:
	mov	QWORD PTR -16[rbp], 2047
	jmp	.L22
.L19:
	mov	QWORD PTR -16[rbp], 0
	jmp	.L22
.L24:
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 8
	xor	rax, QWORD PTR -8[rbp]
	movzx	eax, al
	cmp	rdx, rax
	je	.L23
	mov	eax, 2
	jmp	.L18
.L23:
	add	QWORD PTR -16[rbp], 2047
.L22:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -32[rbp]
	jb	.L24
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 8
	xor	rax, QWORD PTR -8[rbp]
	movzx	eax, al
	cmp	rdx, rax
	je	.L25
	mov	rax, QWORD PTR -32[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 8
	xor	rax, QWORD PTR -8[rbp]
	movzx	eax, al
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 3
	jmp	.L18
.L25:
	mov	eax, 0
.L18:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	mem_check, .-mem_check
	.globl	random_size
	.type	random_size, @function
random_size:
.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, 40
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 4095[rax]
	test	rax, rax
	cmovs	rax, rdx
	sar	rax, 12
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jle	.L27
	mov	edi, 0
	call	lran2
	cqo
	shr	rdx, 54
	add	rax, rdx
	and	eax, 1023
	sub	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	and	eax, 7
	sal	rax, 2
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -16[rbp], 511
	jg	.L28
	mov	rax, QWORD PTR -16[rbp]
	sar	rax, 6
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	jmp	.L29
.L28:
	cmp	QWORD PTR -16[rbp], 531
	jg	.L30
	mov	edi, 0
	call	lran2
	cqo
	idiv	QWORD PTR -24[rbp]
	mov	rax, rdx
	add	rax, 1
	sal	rax, 12
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	sub	rax, 16
	mov	QWORD PTR -32[rbp], rax
	jmp	.L29
.L30:
	mov	edi, 0
	call	lran2
	cqo
	idiv	QWORD PTR -40[rbp]
	mov	rax, rdx
	add	rax, 1
	mov	QWORD PTR -32[rbp], rax
	jmp	.L29
.L27:
	mov	edi, 0
	call	lran2
	cqo
	idiv	QWORD PTR -40[rbp]
	mov	rax, rdx
	add	rax, 1
	mov	QWORD PTR -32[rbp], rax
.L29:
	mov	rax, QWORD PTR -32[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	random_size, .-random_size
	.section	.rodata
	.align 8
.LC2:
	.string	"bin_alloc: memory corrupt at %p, size=%lu!\n"
.LC3:
	.string	"realloc bug !"
.LC4:
	.string	"calloc bug !"
.LC5:
	.string	"out of memory!"
	.text
	.globl	bin_alloc
	.type	bin_alloc, @function
bin_alloc:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mem_check
	test	eax, eax
	je	.L33
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 1
	call	exit@PLT
.L33:
	mov	rdx, QWORD PTR total_size[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, rdx
	sub	rax, rcx
	mov	QWORD PTR total_size[rip], rax
	mov	edi, 0
	call	lran2
	cqo
	shr	rdx, 54
	add	rax, rdx
	and	eax, 1023
	sub	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jns	.L34
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L35
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
.L35:
	mov	rax, QWORD PTR size[rip]
	mov	rdi, rax
	call	random_size
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rax], rdx
	jmp	.L36
.L34:
	cmp	QWORD PTR -24[rbp], 47
	jg	.L37
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	jne	.L38
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], 0
.L38:
	mov	edi, 0
	call	lran2
	cqo
	shr	rdx, 56
	add	rax, rdx
	movzx	eax, al
	sub	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -24[rbp], 0
	jmp	.L39
.L40:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, edx
	xor	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -24[rbp], 1
.L39:
	mov	rax, QWORD PTR -24[rbp]
	cmp	QWORD PTR -16[rbp], rax
	ja	.L40
	mov	rax, QWORD PTR size[rip]
	mov	rdi, rax
	call	random_size
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	rdx, QWORD PTR -40[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	cmp	QWORD PTR -16[rbp], rax
	jbe	.L41
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
.L41:
	mov	QWORD PTR -24[rbp], 0
	jmp	.L42
.L44:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -24[rbp]
	xor	rax, QWORD PTR -8[rbp]
	movzx	eax, al
	cmp	rdx, rax
	je	.L43
	lea	rdi, .LC3[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L43:
	add	QWORD PTR -24[rbp], 1
.L42:
	mov	rax, QWORD PTR -24[rbp]
	cmp	QWORD PTR -16[rbp], rax
	ja	.L44
	jmp	.L36
.L37:
	cmp	QWORD PTR -24[rbp], 47
	jg	.L45
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L46
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
.L46:
	mov	rax, QWORD PTR size[rip]
	mov	rdi, rax
	call	random_size
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	esi, 1
	mov	rdi, rax
	call	calloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	QWORD PTR -24[rbp], 0
	jmp	.L47
.L49:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L48
	lea	rdi, .LC4[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L48:
	add	QWORD PTR -24[rbp], 1
.L47:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	cmp	rdx, rax
	ja	.L49
	jmp	.L36
.L45:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L50
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
.L50:
	mov	rax, QWORD PTR size[rip]
	mov	rdi, rax
	call	random_size
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
.L36:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L51
	lea	rdi, .LC5[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L51:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR total_size[rip]
	add	rax, rdx
	mov	QWORD PTR total_size[rip], rax
	mov	rdx, QWORD PTR total_size[rip]
	mov	rax, QWORD PTR total_size_max[rip]
	cmp	rdx, rax
	jbe	.L52
	mov	rax, QWORD PTR total_size[rip]
	mov	QWORD PTR total_size_max[rip], rax
.L52:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mem_init
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR base_ptr[rip]
	cmp	rdx, rax
	jnb	.L54
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR base_ptr[rip], rax
.L54:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	bin_alloc, .-bin_alloc
	.section	.rodata
.LC6:
	.string	"bin_free: memory corrupt!"
	.text
	.globl	bin_free
	.type	bin_free, @function
bin_free:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	je	.L59
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mem_check
	test	eax, eax
	je	.L58
	lea	rdi, .LC6[rip]
	call	puts@PLT
	mov	edi, 1
	call	exit@PLT
.L58:
	mov	rdx, QWORD PTR total_size[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR 8[rax]
	mov	rax, rdx
	sub	rax, rcx
	mov	QWORD PTR total_size[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	jmp	.L55
.L59:
	nop
.L55:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	bin_free, .-bin_free
	.section	.rodata
	.align 8
.LC7:
	.string	"bin_test: memory corrupt! m[%d].ptr = %x, m[%d].size = %ld\n"
.LC8:
	.string	"error = %d\n"
	.align 8
.LC9:
	.string	"bin_test: memory corrupt! sm[%d].ptr = %x, sm[%d].size = %ld\n"
	.text
	.globl	bin_test
	.type	bin_test, @function
bin_test:
.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, 16
	mov	DWORD PTR -8[rbp], 0
	jmp	.L61
.L63:
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip+8]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rcx, rax
	lea	rax, m[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mem_check
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	je	.L62
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip+8]
	mov	rsi, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	ecx, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	r8, rsi
	mov	esi, eax
	lea	rdi, .LC7[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC8[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 1
	call	exit@PLT
.L62:
	add	DWORD PTR -8[rbp], 1
.L61:
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR bins[rip]
	cmp	rdx, rax
	jb	.L63
	mov	DWORD PTR -8[rbp], 0
	jmp	.L64
.L66:
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, sm[rip+8]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rcx, rax
	lea	rax, sm[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	mem_check
	test	eax, eax
	je	.L65
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, sm[rip+8]
	mov	rsi, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -8[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, sm[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	ecx, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	r8, rsi
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 1
	call	exit@PLT
.L65:
	add	DWORD PTR -8[rbp], 1
.L64:
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR sbins[rip]
	cmp	rdx, rax
	jb	.L66
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	bin_test, .-bin_test
	.section	.rodata
.LC10:
	.string	" u=%ld.%06ldsec"
.LC11:
	.string	" s=%ld.%06ldsec"
.LC12:
	.string	" t=%ld.%06ldsec"
	.text
	.globl	print_times
	.type	print_times, @function
print_times:
.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, 176
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -160[rbp]
	mov	rsi, rax
	mov	edi, 0
	call	getrusage@PLT
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -160[rbp]
	mov	rsi, rax
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -136[rbp]
	mov	rax, QWORD PTR -144[rbp]
	mov	rsi, rax
	lea	rdi, .LC11[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rdx, QWORD PTR -152[rbp]
	mov	rax, QWORD PTR -136[rbp]
	add	rax, rdx
	mov	QWORD PTR -168[rbp], rax
	mov	rdx, QWORD PTR -160[rbp]
	mov	rax, QWORD PTR -144[rbp]
	add	rax, rdx
	mov	QWORD PTR -176[rbp], rax
	cmp	QWORD PTR -168[rbp], 999999
	jle	.L68
	sub	QWORD PTR -168[rbp], 1000000
	add	QWORD PTR -176[rbp], 1
.L68:
	mov	rdx, QWORD PTR -168[rbp]
	mov	rax, QWORD PTR -176[rbp]
	mov	rsi, rax
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L69
	call	__stack_chk_fail@PLT
.L69:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	print_times, .-print_times
	.section	.rodata
.LC16:
	.string	"size=%7ld waste=%7.3f%%"
	.text
	.globl	main
	.type	main, @function
main:
.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, 96
	mov	DWORD PTR -84[rbp], edi
	mov	QWORD PTR -96[rbp], rsi
	mov	DWORD PTR -52[rbp], 5000
	mov	QWORD PTR -16[rbp], 0
	cmp	DWORD PTR -84[rbp], 1
	jle	.L71
	mov	rax, QWORD PTR -96[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR -52[rbp], eax
.L71:
	cmp	DWORD PTR -84[rbp], 2
	jle	.L72
	mov	rax, QWORD PTR -96[rbp]
	add	rax, 16
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	cdqe
	mov	QWORD PTR size[rip], rax
.L72:
	mov	eax, DWORD PTR -52[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR size[rip]
	xor	rax, rdx
	mov	rdi, rax
	call	lran2
	mov	rsi, QWORD PTR size[rip]
	mov	eax, 4000000
	mov	edx, 0
	div	rsi
	sal	rax, 2
	mov	QWORD PTR bins[rip], rax
	mov	rax, QWORD PTR bins[rip]
	cmp	rax, 32768
	jbe	.L73
	mov	QWORD PTR bins[rip], 32768
.L73:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L74
.L77:
	mov	edi, 0
	call	lran2
	and	eax, 1
	test	rax, rax
	jne	.L75
	mov	eax, DWORD PTR -48[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip]
	add	rax, rdx
	mov	rdi, rax
	call	bin_alloc
	jmp	.L76
.L75:
	mov	eax, DWORD PTR -48[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip+8]
	mov	QWORD PTR [rdx+rax], 0
.L76:
	add	DWORD PTR -48[rbp], 1
.L74:
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR bins[rip]
	cmp	rdx, rax
	jb	.L77
	mov	QWORD PTR -40[rbp], 0
	pxor	xmm0, xmm0
	movsd	QWORD PTR -24[rbp], xmm0
	movsd	xmm0, QWORD PTR -24[rbp]
	movsd	QWORD PTR -32[rbp], xmm0
	mov	DWORD PTR -56[rbp], 0
	mov	eax, DWORD PTR -56[rbp]
	mov	DWORD PTR -60[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	mov	DWORD PTR -68[rbp], eax
	jmp	.L78
.L86:
	mov	eax, 0
	call	bin_test
	mov	edi, 0
	call	lran2
	mov	rcx, rax
	movabs	rdx, -6640827866535438581
	mov	rax, rcx
	imul	rdx
	lea	rax, [rdx+rcx]
	sar	rax, 5
	mov	rsi, rcx
	sar	rsi, 63
	sub	rax, rsi
	mov	rdx, rax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	lea	rdx, 0[0+rax*4]
	add	rax, rdx
	add	rax, rax
	sub	rcx, rax
	mov	rdx, rcx
	mov	DWORD PTR -44[rbp], edx
	mov	DWORD PTR -64[rbp], 0
	jmp	.L79
.L80:
	mov	edi, 0
	call	lran2
	mov	rcx, QWORD PTR bins[rip]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip]
	add	rax, rdx
	mov	rdi, rax
	call	bin_free
	mov	eax, 0
	call	bin_test
	add	DWORD PTR -64[rbp], 1
.L79:
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L80
	mov	eax, DWORD PTR -44[rbp]
	add	DWORD PTR -68[rbp], eax
	mov	edi, 0
	call	lran2
	mov	rcx, rax
	movabs	rdx, -6640827866535438581
	mov	rax, rcx
	imul	rdx
	lea	rax, [rdx+rcx]
	sar	rax, 5
	mov	rsi, rcx
	sar	rsi, 63
	sub	rax, rsi
	mov	rdx, rax
	mov	rax, rdx
	sal	rax, 2
	add	rax, rdx
	lea	rdx, 0[0+rax*4]
	add	rax, rdx
	add	rax, rax
	sub	rcx, rax
	mov	rdx, rcx
	mov	DWORD PTR -44[rbp], edx
	mov	DWORD PTR -64[rbp], 0
	jmp	.L81
.L82:
	mov	edi, 0
	call	lran2
	mov	rcx, QWORD PTR bins[rip]
	mov	edx, 0
	div	rcx
	mov	rax, rdx
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -48[rbp]
	sal	rax, 4
	mov	rdx, rax
	lea	rax, m[rip]
	add	rax, rdx
	mov	rdi, rax
	call	bin_alloc
	mov	eax, 0
	call	bin_test
	add	DWORD PTR -64[rbp], 1
.L81:
	mov	eax, DWORD PTR -64[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L82
	mov	eax, DWORD PTR -44[rbp]
	add	DWORD PTR -68[rbp], eax
	mov	eax, DWORD PTR -68[rbp]
	cmp	eax, DWORD PTR -60[rbp]
	jl	.L78
	add	DWORD PTR -56[rbp], 1
	mov	edi, 0
	call	sbrk@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -40[rbp]
	jle	.L83
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -40[rbp], rax
.L83:
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, QWORD PTR -8[rbp]
	movsd	xmm1, QWORD PTR -32[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -32[rbp], xmm0
	mov	rax, QWORD PTR total_size[rip]
	test	rax, rax
	js	.L84
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, rax
	jmp	.L85
.L84:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, rdx
	addsd	xmm0, xmm0
.L85:
	movsd	xmm1, QWORD PTR -24[rbp]
	addsd	xmm0, xmm1
	movsd	QWORD PTR -24[rbp], xmm0
	add	DWORD PTR -60[rbp], 200
.L78:
	mov	eax, DWORD PTR -68[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jle	.L86
	mov	rax, QWORD PTR base_ptr[rip]
	sub	QWORD PTR -40[rbp], rax
	pxor	xmm1, xmm1
	cvtsi2sd	xmm1, DWORD PTR -56[rbp]
	mov	rax, QWORD PTR base_ptr[rip]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, rax
	mulsd	xmm1, xmm0
	movsd	xmm0, QWORD PTR -32[rbp]
	subsd	xmm0, xmm1
	movsd	QWORD PTR -32[rbp], xmm0
	movsd	xmm0, QWORD PTR -24[rbp]
	movapd	xmm2, xmm0
	divsd	xmm2, QWORD PTR -32[rbp]
	movsd	xmm0, QWORD PTR .LC14[rip]
	movapd	xmm1, xmm0
	subsd	xmm1, xmm2
	movsd	xmm0, QWORD PTR .LC15[rip]
	mulsd	xmm1, xmm0
	movq	rdx, xmm1
	mov	rax, QWORD PTR size[rip]
	movq	xmm0, rdx
	mov	rsi, rax
	lea	rdi, .LC16[rip]
	mov	eax, 1
	call	printf@PLT
	mov	eax, 0
	call	print_times
	mov	edi, 10
	call	putchar@PLT
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	main, .-main
	.data
	.align 4
	.type	first.3, @object
	.size	first.3, 4
first.3:
	.long	1
	.local	x.2
	.comm	x.2,8,8
	.local	v.1
	.comm	v.1,776,32
	.local	y.0
	.comm	y.0,8,8
	.section	.rodata
	.align 8
.LC14:
	.long	0
	.long	1072693248
	.align 8
.LC15:
	.long	0
	.long	1079574528
	.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	"518912.c"
	.text
	.comm	m,262144,4
	.comm	sm,8192,4
	.global	size
	.data
	.align	2
	.type	size, %object
	.size	size, 4
size:
	.word	4024
	.global	bins
	.bss
	.align	2
	.type	bins, %object
	.size	bins, 4
bins:
	.space	4
	.global	sbins
	.align	2
	.type	sbins, %object
	.size	sbins, 4
sbins:
	.space	4
	.global	total_size
	.align	2
	.type	total_size, %object
	.size	total_size, 4
total_size:
	.space	4
	.global	total_size_max
	.align	2
	.type	total_size_max, %object
	.size	total_size_max, 4
total_size_max:
	.space	4
	.comm	base_ptr,4,4
	.comm	base_save,4,4
	.text
	.align	2
	.global	lran2
	.syntax unified
	.arm
	.fpu softvfp
	.type	lran2, %function
lran2:
	@ 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	.L2
	ldr	r3, .L8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L3
.L2:
	ldr	r3, .L8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r1, .L8+4
	sub	r1, r1, r3
	ldr	r3, .L8+8
	smull	r2, r3, r1, r3
	asr	r2, r3, #18
	asr	r3, r1, #31
	sub	r0, r2, r3
	mov	r2, r0
	lsl	r2, r2, #1
	add	r2, r2, r0
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r0
	lsl	r2, r3, #6
	add	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	sub	r0, r1, r3
	ldr	r3, .L8+12
	str	r0, [r3]
	ldr	r3, .L8+12
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L4
	ldr	r3, .L8+12
	ldr	r3, [r3]
	rsb	r3, r3, #0
	ldr	r2, .L8+12
	str	r3, [r2]
.L4:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L5
.L6:
	ldr	r3, .L8+12
	ldr	r1, [r3]
	mov	r2, r1
	lsl	r2, r2, #1
	add	r2, r2, r1
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	add	r3, r3, r1
	ldr	r1, .L8+4
	add	r1, r3, r1
	ldr	r3, .L8+8
	smull	r2, r3, r1, r3
	asr	r2, r3, #18
	asr	r3, r1, #31
	sub	r0, r2, r3
	mov	r2, r0
	lsl	r2, r2, #1
	add	r2, r2, r0
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r0
	lsl	r2, r3, #6
	add	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	sub	r0, r1, r3
	ldr	r3, .L8+12
	str	r0, [r3]
	ldr	r3, .L8+12
	ldr	r2, [r3]
	ldr	r1, .L8+16
	ldr	r3, [fp, #-8]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L5:
	ldr	r3, [fp, #-8]
	cmp	r3, #96
	ble	.L6
	ldr	r3, .L8+12
	ldr	r1, [r3]
	mov	r2, r1
	lsl	r2, r2, #1
	add	r2, r2, r1
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	add	r3, r3, r1
	ldr	r1, .L8+4
	add	r1, r3, r1
	ldr	r3, .L8+8
	smull	r2, r3, r1, r3
	asr	r2, r3, #18
	asr	r3, r1, #31
	sub	r0, r2, r3
	mov	r2, r0
	lsl	r2, r2, #1
	add	r2, r2, r0
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r0
	lsl	r2, r3, #6
	add	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	sub	r0, r1, r3
	ldr	r3, .L8+12
	str	r0, [r3]
	ldr	r3, .L8+12
	ldr	r3, [r3]
	ldr	r2, .L8+20
	str	r3, [r2]
.L3:
	ldr	r3, .L8+20
	ldr	r2, [r3]
	ldr	r3, .L8+24
	smull	r1, r3, r2, r3
	asr	r1, r3, #3
	asr	r3, r2, #31
	sub	r1, r1, r3
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	lsl	r3, r3, #5
	add	r3, r3, r1
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r2, .L8+16
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, .L8+20
	str	r3, [r2]
	ldr	r3, .L8+12
	ldr	r1, [r3]
	mov	r2, r1
	lsl	r2, r2, #1
	add	r2, r2, r1
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	add	r3, r3, r1
	ldr	r1, .L8+4
	add	r1, r3, r1
	ldr	r3, .L8+8
	smull	r2, r3, r1, r3
	asr	r2, r3, #18
	asr	r3, r1, #31
	sub	r0, r2, r3
	mov	r2, r0
	lsl	r2, r2, #1
	add	r2, r2, r0
	lsl	r3, r2, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r3, r0
	lsl	r2, r3, #6
	add	r3, r3, r2
	lsl	r2, r3, #6
	add	r3, r3, r2
	sub	r0, r1, r3
	ldr	r3, .L8+12
	str	r0, [r3]
	ldr	r3, .L8+12
	ldr	r2, [r3]
	ldr	r1, .L8+16
	ldr	r3, [fp, #-8]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, .L8+20
	ldr	r3, [r3]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L9:
	.align	2
.L8:
	.word	first.5881
	.word	150889
	.word	1576835415
	.word	x.5882
	.word	v.5884
	.word	y.5883
	.word	354224107
	.size	lran2, .-lran2
	.align	2
	.global	mem_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	mem_init, %function
mem_init:
	@ 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, #-20]
	cmp	r3, #0
	beq	.L17
	ldr	r3, [fp, #-20]
	cmp	r3, #4
	bls	.L13
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	eor	r2, r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, .L18
	str	r3, [fp, #-12]
	b	.L15
.L13:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L15
.L16:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	eor	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #8
	and	r1, r3, #255
	ldr	r3, [fp, #-8]
	and	r2, r3, #255
	ldr	r0, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #2032
	add	r3, r3, #15
	str	r3, [fp, #-12]
.L15:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcc	.L16
	ldr	r3, [fp, #-20]
	sub	r2, r3, #1
	ldr	r3, [fp, #-16]
	eor	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #8
	and	r1, r3, #255
	ldr	r3, [fp, #-8]
	and	r2, r3, #255
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	ldr	r0, [fp, #-16]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	b	.L10
.L17:
	nop
.L10:
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L19:
	.align	2
.L18:
	.word	2047
	.size	mem_init, .-mem_init
	.section	.rodata
	.align	2
.LC0:
	.ascii	"failed size check: expected %x, found %x!\012\000"
	.align	2
.LC1:
	.ascii	"failed last byte check: expected %x, found %x!\012\000"
	.text
	.align	2
	.global	mem_check
	.syntax unified
	.arm
	.fpu softvfp
	.type	mem_check, %function
mem_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]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L21
	mov	r3, #0
	b	.L22
.L21:
	ldr	r3, [fp, #-20]
	cmp	r3, #4
	bls	.L23
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r1, [fp, #-16]
	ldr	r3, [fp, #-20]
	eor	r3, r3, r1
	cmp	r2, r3
	beq	.L24
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-20]
	eor	r1, r2, r3
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r0, .L30
	bl	printf
	mov	r3, #1
	b	.L22
.L24:
	ldr	r3, .L30+4
	str	r3, [fp, #-12]
	b	.L26
.L23:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L26
.L28:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	eor	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-8]
	lsr	r2, r3, #8
	ldr	r3, [fp, #-8]
	eor	r3, r3, r2
	and	r3, r3, #255
	cmp	r1, r3
	beq	.L27
	mov	r3, #2
	b	.L22
.L27:
	ldr	r3, [fp, #-12]
	add	r3, r3, #2032
	add	r3, r3, #15
	str	r3, [fp, #-12]
.L26:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcc	.L28
	ldr	r3, [fp, #-20]
	sub	r2, r3, #1
	ldr	r3, [fp, #-16]
	eor	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-8]
	lsr	r2, r3, #8
	ldr	r3, [fp, #-8]
	eor	r3, r3, r2
	and	r3, r3, #255
	cmp	r1, r3
	beq	.L29
	ldr	r3, [fp, #-8]
	lsr	r2, r3, #8
	ldr	r3, [fp, #-8]
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L30+8
	bl	printf
	mov	r3, #3
	b	.L22
.L29:
	mov	r3, #0
.L22:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L31:
	.align	2
.L30:
	.word	.LC0
	.word	2047
	.word	.LC1
	.size	mem_check, .-mem_check
	.global	__aeabi_idivmod
	.align	2
	.global	random_size
	.syntax unified
	.arm
	.fpu softvfp
	.type	random_size, %function
random_size:
	@ 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]
	ldr	r3, [fp, #-24]
	add	r2, r3, #4080
	add	r2, r2, #15
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #12
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	ble	.L33
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	rsbs	r2, r3, #0
	lsl	r3, r3, #22
	lsr	r3, r3, #22
	lsl	r2, r2, #22
	lsr	r2, r2, #22
	rsbpl	r3, r2, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	and	r3, r3, #7
	lsl	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	cmp	r3, #512
	bge	.L34
	ldr	r3, [fp, #-12]
	asr	r3, r3, #6
	mov	r2, #1
	lsl	r3, r2, r3
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	b	.L35
.L34:
	ldr	r3, [fp, #-12]
	cmp	r3, #532
	bge	.L36
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	add	r3, r3, #1
	lsl	r2, r3, #12
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	sub	r3, r3, #16
	str	r3, [fp, #-20]
	b	.L35
.L36:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	add	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L35
.L33:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	ldr	r1, [fp, #-24]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L35:
	ldr	r3, [fp, #-20]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	random_size, .-random_size
	.section	.rodata
	.align	2
.LC2:
	.ascii	"bin_alloc: memory corrupt at %p, size=%lu!\012\000"
	.align	2
.LC3:
	.ascii	"realloc bug !\000"
	.align	2
.LC4:
	.ascii	"calloc bug !\000"
	.align	2
.LC5:
	.ascii	"out of memory!\000"
	.text
	.align	2
	.global	bin_alloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	bin_alloc, %function
bin_alloc:
	@ 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]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	mem_check
	mov	r3, r0
	cmp	r3, #0
	beq	.L39
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r2, r3
	ldr	r0, .L61
	bl	printf
	mov	r0, #1
	bl	exit
.L39:
	ldr	r3, .L61+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	sub	r3, r2, r3
	ldr	r2, .L61+4
	str	r3, [r2]
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	rsbs	r2, r3, #0
	lsl	r3, r3, #22
	lsr	r3, r3, #22
	lsl	r2, r2, #22
	lsr	r2, r2, #22
	rsbpl	r3, r2, #0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bge	.L40
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L41
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
.L41:
	ldr	r3, .L61+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	random_size
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	b	.L42
.L40:
	ldr	r3, [fp, #-16]
	cmp	r3, #47
	bgt	.L43
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L44
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]
.L44:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	rsbs	r2, r3, #0
	and	r3, r3, #255
	and	r2, r2, #255
	rsbpl	r3, r2, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L45
.L46:
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-24]
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r1, r3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L45:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bhi	.L46
	ldr	r3, .L61+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	random_size
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	realloc
	mov	r2, r0
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bls	.L47
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
.L47:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L48
.L50:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	eor	r3, r3, r2
	and	r3, r3, #255
	cmp	r1, r3
	beq	.L49
	ldr	r0, .L61+12
	bl	puts
	mov	r0, #1
	bl	exit
.L49:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L48:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bhi	.L50
	b	.L42
.L43:
	ldr	r3, [fp, #-16]
	cmp	r3, #47
	bgt	.L51
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L52
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
.L52:
	ldr	r3, .L61+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	random_size
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r1, #1
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L53
.L55:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L54
	ldr	r0, .L61+16
	bl	puts
	mov	r0, #1
	bl	exit
.L54:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L53:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bhi	.L55
	b	.L42
.L51:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L56
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
.L56:
	ldr	r3, .L61+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	random_size
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
.L42:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L57
	ldr	r0, .L61+20
	bl	puts
	mov	r0, #1
	bl	exit
.L57:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3, #4]
	ldr	r3, .L61+4
	ldr	r3, [r3]
	add	r3, r2, r3
	ldr	r2, .L61+4
	str	r3, [r2]
	ldr	r3, .L61+4
	ldr	r2, [r3]
	ldr	r3, .L61+24
	ldr	r3, [r3]
	cmp	r2, r3
	bls	.L58
	ldr	r3, .L61+4
	ldr	r3, [r3]
	ldr	r2, .L61+24
	str	r3, [r2]
.L58:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	mem_init
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, .L61+28
	ldr	r3, [r3]
	cmp	r2, r3
	bcs	.L60
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, .L61+28
	str	r3, [r2]
.L60:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L62:
	.align	2
.L61:
	.word	.LC2
	.word	total_size
	.word	size
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	total_size_max
	.word	base_ptr
	.size	bin_alloc, .-bin_alloc
	.section	.rodata
	.align	2
.LC6:
	.ascii	"bin_free: memory corrupt!\000"
	.text
	.align	2
	.global	bin_free
	.syntax unified
	.arm
	.fpu softvfp
	.type	bin_free, %function
bin_free:
	@ 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]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L67
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	mem_check
	mov	r3, r0
	cmp	r3, #0
	beq	.L66
	ldr	r0, .L68
	bl	puts
	mov	r0, #1
	bl	exit
.L66:
	ldr	r3, .L68+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	sub	r3, r2, r3
	ldr	r2, .L68+4
	str	r3, [r2]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	b	.L63
.L67:
	nop
.L63:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L69:
	.align	2
.L68:
	.word	.LC6
	.word	total_size
	.size	bin_free, .-bin_free
	.section	.rodata
	.align	2
.LC7:
	.ascii	"bin_test: memory corrupt! m[%d].ptr = %x, m[%d].siz"
	.ascii	"e = %ld\012\000"
	.align	2
.LC8:
	.ascii	"error = %d\012\000"
	.align	2
.LC9:
	.ascii	"bin_test: memory corrupt! sm[%d].ptr = %x, sm[%d].s"
	.ascii	"ize = %ld\012\000"
	.text
	.align	2
	.global	bin_test
	.syntax unified
	.arm
	.fpu softvfp
	.type	bin_test, %function
bin_test:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L71
.L73:
	ldr	r2, .L77
	ldr	r3, [fp, #-12]
	ldr	r2, [r2, r3, lsl #3]
	ldr	r1, .L77
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	mem_check
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L72
	ldr	r2, .L77
	ldr	r3, [fp, #-12]
	ldr	r2, [r2, r3, lsl #3]
	ldr	r1, .L77
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, .L77+4
	bl	printf
	ldr	r1, [fp, #-8]
	ldr	r0, .L77+8
	bl	printf
	mov	r0, #1
	bl	exit
.L72:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L71:
	ldr	r3, .L77+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L73
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L74
.L76:
	ldr	r2, .L77+16
	ldr	r3, [fp, #-12]
	ldr	r2, [r2, r3, lsl #3]
	ldr	r1, .L77+16
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	mov	r1, r3
	mov	r0, r2
	bl	mem_check
	mov	r3, r0
	cmp	r3, #0
	beq	.L75
	ldr	r2, .L77+16
	ldr	r3, [fp, #-12]
	ldr	r2, [r2, r3, lsl #3]
	ldr	r1, .L77+16
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	str	r3, [sp]
	ldr	r3, [fp, #-12]
	ldr	r1, [fp, #-12]
	ldr	r0, .L77+20
	bl	printf
	mov	r0, #1
	bl	exit
.L75:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L74:
	ldr	r3, .L77+24
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	bcc	.L76
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L78:
	.align	2
.L77:
	.word	m
	.word	.LC7
	.word	.LC8
	.word	bins
	.word	sm
	.word	.LC9
	.word	sbins
	.size	bin_test, .-bin_test
	.section	.rodata
	.align	2
.LC10:
	.ascii	" u=%ld.%06ldsec\000"
	.align	2
.LC11:
	.ascii	" s=%ld.%06ldsec\000"
	.align	2
.LC12:
	.ascii	" t=%ld.%06ldsec\000"
	.align	2
.LC13:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	print_times
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_times, %function
print_times:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	ldr	r3, .L82
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #80
	mov	r1, r3
	mov	r0, #0
	bl	getrusage
	ldr	r3, [fp, #-80]
	ldr	r2, [fp, #-76]
	mov	r1, r3
	ldr	r0, .L82+4
	bl	printf
	ldr	r3, [fp, #-72]
	ldr	r2, [fp, #-68]
	mov	r1, r3
	ldr	r0, .L82+8
	bl	printf
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-68]
	add	r3, r2, r3
	str	r3, [fp, #-84]
	ldr	r2, [fp, #-80]
	ldr	r3, [fp, #-72]
	add	r3, r2, r3
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-84]
	ldr	r2, .L82+12
	cmp	r3, r2
	blt	.L80
	ldr	r3, [fp, #-84]
	sub	r3, r3, #999424
	sub	r3, r3, #576
	str	r3, [fp, #-84]
	ldr	r3, [fp, #-88]
	add	r3, r3, #1
	str	r3, [fp, #-88]
.L80:
	ldr	r2, [fp, #-84]
	ldr	r1, [fp, #-88]
	ldr	r0, .L82+16
	bl	printf
	nop
	ldr	r3, .L82
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L81
	bl	__stack_chk_fail
.L81:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L83:
	.align	2
.L82:
	.word	.LC13
	.word	.LC10
	.word	.LC11
	.word	1000000
	.word	.LC12
	.size	print_times, .-print_times
	.global	__aeabi_uidiv
	.global	__aeabi_uidivmod
	.global	__aeabi_i2d
	.global	__aeabi_dadd
	.global	__aeabi_ui2d
	.global	__aeabi_dmul
	.global	__aeabi_dsub
	.global	__aeabi_ddiv
	.section	.rodata
	.align	2
.LC14:
	.ascii	"size=%7ld waste=%7.3f%%\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #64
	str	r0, [fp, #-72]
	str	r1, [fp, #-76]
	ldr	r3, .L100
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-72]
	cmp	r3, #1
	ble	.L85
	ldr	r3, [fp, #-76]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	str	r0, [fp, #-52]
.L85:
	ldr	r3, [fp, #-72]
	cmp	r3, #2
	ble	.L86
	ldr	r3, [fp, #-76]
	add	r3, r3, #8
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L100+4
	str	r2, [r3]
.L86:
	ldr	r2, [fp, #-52]
	ldr	r3, .L100+4
	ldr	r3, [r3]
	eor	r3, r3, r2
	mov	r0, r3
	bl	lran2
	ldr	r3, .L100+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L100+8
	bl	__aeabi_uidiv
	mov	r3, r0
	lsl	r3, r3, #2
	ldr	r2, .L100+12
	str	r3, [r2]
	ldr	r3, .L100+12
	ldr	r3, [r3]
	cmp	r3, #32768
	bls	.L87
	ldr	r3, .L100+12
	mov	r2, #32768
	str	r2, [r3]
.L87:
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L88
.L91:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L89
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #3
	ldr	r2, .L100+16
	add	r3, r3, r2
	mov	r0, r3
	bl	bin_alloc
	b	.L90
.L89:
	ldr	r2, .L100+16
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #3
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #4]
.L90:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L88:
	ldr	r3, .L100+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-48]
	cmp	r2, r3
	bcc	.L91
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-56]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-60]
	str	r3, [fp, #-68]
	b	.L92
.L98:
	bl	bin_test
	mov	r0, #0
	bl	lran2
	mov	r2, r0
	ldr	r3, .L100+20
	smull	r1, r3, r2, r3
	asr	r1, r3, #4
	asr	r3, r2, #31
	sub	r1, r1, r3
	mov	r3, r1
	lsl	r3, r3, #2
	add	r3, r3, r1
	lsl	r1, r3, #2
	add	r3, r3, r1
	lsl	r3, r3, #1
	sub	r3, r2, r3
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L93
.L94:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L100+12
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidivmod
	mov	r3, r1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #3
	ldr	r2, .L100+16
	add	r3, r3, r2
	mov	r0, r3
	bl	bin_free
	bl	bin_test
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	str	r3, [fp, #-64]
.L93:
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	blt	.L94
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-68]
	mov	r0, #0
	bl	lran2
	mov	r2, r0
	ldr	r3, .L100+20
	smull	r1, r3, r2, r3
	asr	r1, r3, #4
	asr	r3, r2, #31
	sub	r1, r1, r3
	mov	r3, r1
	lsl	r3, r3, #2
	add	r3, r3, r1
	lsl	r1, r3, #2
	add	r3, r3, r1
	lsl	r3, r3, #1
	sub	r3, r2, r3
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L95
.L96:
	mov	r0, #0
	bl	lran2
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L100+12
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_uidivmod
	mov	r3, r1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #3
	ldr	r2, .L100+16
	add	r3, r3, r2
	mov	r0, r3
	bl	bin_alloc
	bl	bin_test
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	str	r3, [fp, #-64]
.L95:
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	blt	.L96
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-68]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-60]
	cmp	r2, r3
	blt	.L92
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
	mov	r0, #0
	bl	sbrk
	mov	r3, r0
	str	r3, [fp, #-32]
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-44]
	cmp	r2, r3
	ble	.L97
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-44]
.L97:
	ldr	r0, [fp, #-32]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_ui2d
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_dadd
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-60]
	add	r3, r3, #200
	str	r3, [fp, #-60]
.L92:
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	ble	.L98
	ldr	r3, .L100+28
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-44]
	sub	r3, r3, r2
	str	r3, [fp, #-44]
	ldr	r0, [fp, #-56]
	bl	__aeabi_i2d
	mov	r4, r0
	mov	r5, r1
	ldr	r3, .L100+28
	ldr	r3, [r3]
	mov	r0, r3
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, r4
	mov	r1, r5
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L100+4
	ldr	r4, [r3]
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	ldr	r1, .L100+32
	bl	__aeabi_dsub
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	mov	r2, #0
	ldr	r3, .L100+36
	bl	__aeabi_dmul
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L100+40
	bl	printf
	bl	print_times
	mov	r0, #10
	bl	putchar
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L101:
	.align	2
.L100:
	.word	5000
	.word	size
	.word	4000000
	.word	bins
	.word	m
	.word	1374389535
	.word	total_size
	.word	base_ptr
	.word	1072693248
	.word	1079574528
	.word	.LC14
	.size	main, .-main
	.data
	.align	2
	.type	first.5881, %object
	.size	first.5881, 4
first.5881:
	.word	1
	.local	x.5882
	.comm	x.5882,4,4
	.local	v.5884
	.comm	v.5884,388,4
	.local	y.5883
	.comm	y.5883,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
