




	.csect [ro]
S.&mFNAME:
	.string    	"&mFNAME"
S.&mFNAM2.&mFNAME:
	.string    	"&mFNAM2"
.csect &mFNAME[ds] ; .globl &mFNAME[ds] ; .llong &mFNAME.ptrentry , TOC[tc0] , 0
	.toc
T.ftp.&mFNAME:
        .tc               ftp.&mFNAME[tc], 0
T.&mFNAME:
	.tc  		&mFNAME[tc], &mFNAME[ds]
T.S.&mFNAME:
	.tc    		S.&mFNAME[tc], S.&mFNAME
T.S.&mFNAM2.&mFNAME:
	.tc    		S.&mFNAM2.&mFNAME[tc], S.&mFNAM2.&mFNAME
	.csect  	.&mFNAME[gl]
	.globl   	.&mFNAME[gl]
&mFNAME.code_start:
	std	 2, 40(1)
&mFNAME.ptrentry:
	ld	11, T.ftp.&mFNAME(2)
	cmpi	 0, 1, 11, 0
	bne	 0, &mFNAME.lab_set
	mflr	12		# Save original lr
	std	 3,48+0*8(1)
	std	 4,48+1*8(1)
	std	 5,48+2*8(1)
	std	 6,48+3*8(1)
	std	 7,48+4*8(1)
	std	 8,48+5*8(1)
	std	 9,48+6*8(1)
	std	10,48+7*8(1)
	std	12,16(1)
	stdu	 1,-112(1)
	ld	 3,T.S.&mFNAM2.&mFNAME(2)
	ld	 4,T.S.&mFNAME(2)
	ld	 5,T.&mFNAME(2)
	la	 6,T.ftp.&mFNAME(2)
	li	 7,&mFflag
	.extern    	._mFdynload
	bl	._mFdynload
	nop
	la	 1,112(1)
	mr	11, 3
	ld	12,16(1)
	ld	 3,48+0*8(1)
	ld	 4,48+1*8(1)
	ld	 5,48+2*8(1)
	ld	 6,48+3*8(1)
	mtlr	12		# Restore original lr
	ld	 7,48+4*8(1)
	ld	 8,48+5*8(1)
	ld	 9,48+6*8(1)
	ld	10,48+7*8(1)
&mFNAME.lab_set:
	ld	 0,0(11)
	ld	 2,8(11)
	mtctr	 0
	bctr
&mFNAME.tbtab:
	.long	0		# trace back table marker
	.byte	0		# version 0
	.byte	12		# assembler
	.byte	0x20		# has codelen
	.byte	0x41		# name present, saves LR
	.byte	0x80		# saves back chain, no FPR saved
	.byte	0		# no GPR saved
	.byte	8		# Lets say 8 params
	.byte	0		# no FPR params, don't save param on stack
	.long	0		# all param fixed
	.long	&mFNAME.tbtab - &mFNAME.ptrentry	# codelen
	.short	&mFNAME.name_end - &mFNAME.name_start	# namelen
&mFNAME.name_start:
	.string "preload.&mFNAME"
&mFNAME.name_end:
	.align 2
