
# EStrAdd(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1:LONG)

	.text
	.global	_EStrAdd

_EStrAdd:
	lhz	r6,-2(r3)
	lhz	r7,-4(r3)
	mr	r3,r8
	sub	r7,r7,r6
	add	r8,r8,r6
	cmpw	r7,r5
	bge	.skip
	mr	r5,r7
.skip:	mr.	r5,r9
	beq	.finish
	subi	r5,r5,1
	subi	r3,r3,1
	subi	r4,r4,1
.loop:	lbzu	r0,1(r4)
	stbu	r0,1(r3)
	mr.	r0,r0
	beq	.done
	subi	r5,r5,1
	mr.	r5,r5
	bne	.loop
	li	r0,0
	stb	r0,1(r3)
.done:	addi	r5,r5,1
	sub	r9,r9,r5
	add	r9,r9,r6
	sth	r9,-2(r3)
.finish:	blr			# r3 contains destination string pointer

	.type	_EStrAdd,@function
	.size	_EStrAdd,$-_EStrAdd
