

UncryHeader	move.l	a0,-(sp)
	sf	-1(a0,d0.w)
	IFNE	ASMONE
	move.l	SysBase,a6
	ELSE
	move.l	SysBase.w,a6
	ENDC
	move.l	ThisTask(a6),a4
	tst.l	pr_CLI(a4)
	bne.s	uShellStart
	lea	pr_MsgPort(a4),a0
	CALL	WaitPort
	lea	pr_MsgPort(a4),a0
	CALL	GetMsg
	move.l	d0,a1
	addq.b	#1,IDNestCnt(a6)
	CALL	ReplyMsg
uError	addq.w	#4,sp
	moveq	#0,d0
	rts


uShellStart	moveq	#OS204,d0
	cmp.w	LIB_VERSION(a6),d0
	bgt.s	uError

	lea	uData(pc),a4
	move.l	a4,a1
	cmp.l	#"CRU!",(a1)+
	bne.s	.1
	move.l	a1,a0
	add.l	4(a1),a0
	lea	3*4(a0),a0
	bsr	uDepack
	move.l	a0,a4

.1	lea	uARexxPortName(pc),a1
	CALL	FindPort
	move.l	d0,d7
	beq.s	uError

	lea	uRexxSysName(pc),a1
	moveq	#36,d0
	CALL	OpenLibrary
	move.l	d0,d6
	beq.s	uError

	CALL	CreateMsgPort
	move.l	d0,d5
	beq.s	uMsgPortError

	move.l	d0,a0
	sub.l	a1,a1
	moveq	#0,d0
	move.l	d6,a6
	CALL	CreateRexxMsg
	move.l	d0,d4
	beq.s	uNoRexxMsg

	move.l	a4,rm_Args(a0)
	move.l	(sp),rm_Args+4(a0)
	moveq	#2,d0
	moveq	#0,d1
	CALL	FillRexxMsg
	tst.l	d0
	beq.s	uFillMsgError

	move.l	d4,a0
	move.l	#RXFUNC+RXFF_STRING+1,rm_Action(a0)
	IFNE	ASMONE
	move.l	SysBase,a6
	ELSE
	move.l	SysBase.w,a6
	ENDC
	addq.b	#1,IDNestCnt(a6)
	move.l	d7,a0
	move.l	d4,a1
	CALL	PutMsg
	move.l	d5,a0
	CALL	WaitPort
	subq.b	#1,IDNestCnt(a6)

uFillMsgError	move.l	d6,a6
	move.l	d4,a0
	moveq	#2,d0
	CALL	ClearRexxMsg
	move.l	d4,a0
	CALL	DeleteRexxMsg
uNoRexxMsg	move.l	d5,a0
	IFNE	ASMONE
	move.l	SysBase,a6
	ELSE
	move.l	SysBase.w,a6
	ENDC
	CALL	DeleteMsgPort
uMsgPortError	move.l	d6,a1
	CALL	CloseLibrary
	bra	uError

	INCLUDE	"RC:rcincludes/s404_uncryp.asm"

	dc.w	0
uRexxSysName	dc.b	"rexxsyslib.library",0
uARexxPortName	ds.b	20+1
uData
uhl	EQU	*-UncryHeader
uHUNKLENGTH	EQU	(uhl>>2+1)+7	;+ null terminator
