NetBSD-5.0.2/lib/libcrypto/arch/powerpc/ppc-mont.S

.machine	"any"
.text

.globl	bn_mul_mont
.type	bn_mul_mont,@function
.align	4
bn_mul_mont:
	cmpwi	8,4
	mr	9,3
	li	3,0
	bclr	12,0

	slwi	8,8,2
	li	12,-4096
	addi	3,8,288
	subf	3,3,1
	and	3,3,12
	subf	3,1,3
	srwi	8,8,2
	stwux	1,1,3

	stw	14,16(1)
	stw	15,20(1)
	stw	16,24(1)
	stw	17,28(1)
	stw	18,32(1)
	stw	19,36(1)
	stw	20,40(1)
	stw	21,44(1)
	stw	22,48(1)
	stw	23,52(1)
	stw	24,56(1)
	stw	25,60(1)

	lwz	7,0(7)
	addi	8,8,-2

	lwz	17,0(5)
	lwz	10,0(4)
	addi	16,1,64
	mullw	19,10,17
	mulhwu	20,10,17

	lwz	10,4(4)
	lwz	11,0(6)

	mullw	18,19,7

	mullw	23,10,17
	mulhwu	24,10,17

	mullw	21,11,18
	mulhwu	22,11,18
	lwz	11,4(6)
	addc	21,21,19
	addze	22,22

	mullw	25,11,18
	mulhwu	0,11,18

	mtctr	8
	li	15,8
.align	4
.L1st:
	lwzx	10,4,15
	addc	19,23,20
	lwzx	11,6,15
	addze	20,24
	mullw	23,10,17
	addc	21,25,22
	mulhwu	24,10,17
	addze	22,0
	mullw	25,11,18
	addc	21,21,19
	mulhwu	0,11,18
	addze	22,22
	stw	21,0(16)

	addi	15,15,4
	addi	16,16,4
	bdnz+	.L1st

	addc	19,23,20
	addze	20,24

	addc	21,25,22
	addze	22,0
	addc	21,21,19
	addze	22,22
	stw	21,0(16)

	li	3,0
	addc	22,22,20
	addze	3,3
	stw	22,4(16)

	li	14,4
.align	4
.Louter:
	lwzx	17,5,14
	lwz	10,0(4)
	addi	16,1,64
	lwz	12,64(1)
	mullw	19,10,17
	mulhwu	20,10,17
	lwz	10,4(4)
	lwz	11,0(6)
	addc	19,19,12
	mullw	23,10,17
	addze	20,20
	mullw	18,19,7
	mulhwu	24,10,17
	mullw	21,11,18
	mulhwu	22,11,18
	lwz	11,4(6)
	addc	21,21,19
	mullw	25,11,18
	addze	22,22
	mulhwu	0,11,18

	mtctr	8
	li	15,8
.align	4
.Linner:
	lwzx	10,4,15
	addc	19,23,20
	lwz	12,4(16)
	addze	20,24
	lwzx	11,6,15
	addc	21,25,22
	mullw	23,10,17
	addze	22,0
	mulhwu	24,10,17
	addc	19,19,12
	mullw	25,11,18
	addze	20,20
	mulhwu	0,11,18
	addc	21,21,19
	addi	15,15,4
	addze	22,22
	stw	21,0(16)
	addi	16,16,4
	bdnz+	.Linner

	lwz	12,4(16)
	addc	19,23,20
	addze	20,24
	addc	19,19,12
	addze	20,20

	addc	21,25,22
	addze	22,0
	addc	21,21,19
	addze	22,22
	stw	21,0(16)

	addic	3,3,-1
	li	3,0
	adde	22,22,20
	addze	3,3
	stw	22,4(16)

	slwi	12,8,2
	.long	0x7c0e6040
	addi	14,14,4
	ble-	.Louter

	addi	8,8,2
	subfc	15,15,15
	addi	16,1,64
	mtctr	8

.align	4
.Lsub:	lwzx	12,16,15
	lwzx	11,6,15
	subfe	10,11,12
	stwx	10,9,15
	addi	15,15,4
	bdnz+	.Lsub

	li	15,0
	mtctr	8
	subfe	3,15,3
	and	4,16,3
	andc	6,9,3
	or	4,4,6

.align	4
.Lcopy:
	lwzx	12,4,15
	stwx	12,9,15
	stwx	15,16,15
	addi	15,15,4
	bdnz+	.Lcopy

	lwz	14,16(1)
	lwz	15,20(1)
	lwz	16,24(1)
	lwz	17,28(1)
	lwz	18,32(1)
	lwz	19,36(1)
	lwz	20,40(1)
	lwz	21,44(1)
	lwz	22,48(1)
	lwz	23,52(1)
	lwz	24,56(1)
	lwz	25,60(1)
	lwz	1,0(1)
	li	3,1
	blr	
.long	0
.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,102,121,46,99,104,97,108,109,101,114,115,46,115,101,62,0
.align	2