; a0 - pool
; a1 - source estring

	xdef	_DupEStrPooled

_DupEStrPooled
	movem.l	d2-d3/a2/a6,-(a7)
	move.l	a1,d3
	moveq	#0,d2
	move.w	(-2,a1),d2
	move.l	d2,d0
	addq.l	#6,d0		; header + zero byte
	move.l	d2,-(a7)
	movea.l	$4.w,a6
	jsr	(-708,a6)		; AllocPooled()
	move.l	(a7)+,d1
	tst.l	d0
	beq.s	.exit
	move.l	d0,a0
	moveq	#16,d0
	lsl.l	d0,d1		; max, len=0
	move.l	d1,(a0)+
	move.l	a0,d0

	move.l	d3,a2
.loop	move.b	(a2)+,(a1)+	; copy src to dst
	bne.s	.loop
	suba.l	a0,a1
	move.w	a1,(-2,a0)

	movem.l	(a7)+,d2-d3/a2/a6
.exit	rts
