@ r0 = destination
@ r1 = source
@ r2 = start, until first store
@ length beginning immediately after
	.section	.text
	.global	strinsert
	.type	strinsert, %function
strinsert:
	ldrb	r3, [r1]		@ source, dereferenced (byte)
	cmp	r2, r3
	bhi	end			@ start > byte
	ldrb	r3, [r1]		@ source, dereferenced (byte)
	sub	sp, sp, #4
	str	r2, [sp]		@ Save start
	sub	r2, r3, r2		@ length = byte - start
	strb	r2, [r0]		@ destination, dereferened = length
	add	r0, r0, #1		@ destination = destination + 1
	ldr	r3, [sp]
	add	sp, sp, #4
	add	r3, r3, #1		@ r3 = start + 1
	add	r1, r3, r1		@ source = source + r3
	b	loop
copy_byte:
	ldrb	r3, [r1]		@ source, dereferenced
	strb	r3, [r0]		@ copy to destination, dereferenced
	sub	r2, r2, #1		@ length = length - 1
	add	r0, r0, #1		@ destination = destination + 1
	add	r1, r1, #1		@ source = source + 1
loop:
	cmp	r2, #0
	bne	copy_byte		@ length <> 0
end:
	mov	pc, lr		@ Return
