1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident	"sparcv8.s, Version 1.4"
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident	"SPARC v8 ISA artwork by Andy Polyakov <appro@fy.chalmers.se>"
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Rights for redistribution and usage in source and binary forms are
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * granted according to the OpenSSL license. Warranty of any kind is
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * disclaimed.
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This is my modest contributon to OpenSSL project (see
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * http://www.openssl.org/ for more information about it) and is
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * a drop-in SuperSPARC ISA replacement for crypto/bn/bn_asm.c
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * module. For updates see http://fy.chalmers.se/~appro/hpe/.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * See bn_asm.sparc.v8plus.S for more details.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Revision history.
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.1	- new loop unrolling model(*);
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.2	- made gas friendly;
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.3	- fixed problem with /usr/ccs/lib/cpp;
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.4	- some retunes;
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (*)	see bn_asm.sparc.v8plus.S for details
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.section	".text",#alloc,#execinstr
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.file		"bn_asm.sparc.v8.S"
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_add_words
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_add_words(rp,ap,num,w)
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap;
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num;
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w;
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_add_words:
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	%o2,0
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bg,a	.L_bn_mul_add_words_proceed
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_proceed:
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_add_words_tail
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o5
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_loop:
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0],%o4
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g3
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g2,%o4
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0]
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0+4],%o4
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g3,%g3
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g3,%o4
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+4]
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0+8],%o4
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+12],%g3
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g2,%o4
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+8]
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0+12],%o4
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g3,%g3
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g3,%o4
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0-4]
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_mul_add_words_loop
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	%o2
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_mul_add_words_tail
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_return:
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%o5,%o0
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_tail:
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0],%o4
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g2,%o4
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_add_words_return
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0]
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g2
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0+4],%o4
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g2,%o4
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_add_words_return
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+4]
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o0+8],%o4
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%o5,%o4
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%g1
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%o4,%g2,%o4
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+8]
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o0
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_add_words,#function
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_add_words,(.-bn_mul_add_words)
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_words
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_words(rp,ap,num,w)
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap;
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num;
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w;
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_words:
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	%o2,0
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bg,a	.L_bn_mul_words_proceeed
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_proceeed:
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_words_tail
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o5
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_loop:
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g3
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g2,%o5,%g2
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g2,[%o0]
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g3,%g3
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g3,%o5,%g3
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g3,[%o0+4]
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+12],%g3
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g2,%o5,%g2
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g2,[%o0+8]
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g3,%g3
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g3,%o5,%g3
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g3,[%o0-4]
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_mul_words_loop
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	%o2
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_mul_words_tail
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_return:
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%o5,%o0
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_tail:
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g2,%o5,%g2
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_words_return
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g2,[%o0]
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g2
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g2,%o5,%g2
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o5
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_mul_words_return
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g2,[%o0+4]
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%o3,%g2,%g2
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g2,%o5,%g2
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%g1
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g2,[%o0+8]
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g1,0,%o0
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_words,#function
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_words,(.-bn_mul_words)
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align  32
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global	bn_sqr_words
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_words(r,a,n)
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a;
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_words:
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	%o2,0
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bg,a	.L_bn_sqr_words_proceeed
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_proceeed:
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sqr_words_tail
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o5
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_loop:
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g3
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g2,%g2,%o4
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0]
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+4]
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g3,%g3,%o4
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+8]
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+12]
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+12],%g3
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g2,%g2,%o4
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+16]
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+20]
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g3,%g3,%o4
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	32,%o0
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0-8]
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0-4]
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g2
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_sqr_words_loop
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	%o2
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_sqr_words_tail
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%g2
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_return:
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_tail:
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g2,%g2,%o4
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0]
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sqr_words_return
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+4]
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g2
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g2,%g2,%o4
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+8]
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o2
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sqr_words_return
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+12]
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%g2
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	%g2,%g2,%o4
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o4,[%o0+16]
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,%o5
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+20]
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_words,#function
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_words,(.-bn_sqr_words)
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_div_words
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_div_words(h,l,d)
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG h,l,d;
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_div_words:
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	wr	%o0,%y
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	udiv	%o1,%o2,%o0
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_div_words,#function
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_div_words,(.-bn_div_words)
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_add_words
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_add_words(rp,ap,bp,n)
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp;
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_add_words:
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	%o3,0
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bg,a	.L_bn_add_words_proceed
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_proceed:
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_add_words_tail
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%g1
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ba	.L_bn_add_words_warn_loop
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g0,0,%g0	! clear carry flag
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_loop:
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_warn_loop:
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2],%o5
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g3
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+4],%g4
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o3
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%o5,%o4,%o5
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0]
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%o4
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+8],%o5
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g3,%g4,%g3
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g3,[%o0+4]
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1-4],%g3
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+12],%g4
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o2
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%o5,%o4,%o5
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+8]
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g3,%g4,%g3
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g3,[%o0-4]
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_add_words_loop
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	%o3
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_add_words_tail
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_return:
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%g1,%o0
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_tail:
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2],%o5
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%o5,%o4,%o5
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o3
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_add_words_return
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0]
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%o4
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+4],%o5
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%o5,%o4,%o5
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o3
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_add_words_return
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+4]
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%o4
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+8],%o5
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%o5,%o4,%o5
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+8]
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%o0
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_add_words,#function
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_add_words,(.-bn_add_words)
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sub_words
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_sub_words(rp,ap,bp,n)
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp;
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sub_words:
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cmp	%o3,0
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bg,a	.L_bn_sub_words_proceed
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_proceed:
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sub_words_tail
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%g1
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ba	.L_bn_sub_words_warm_loop
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g0,0,%g0	! clear carry flag
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_loop:
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_warm_loop:
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2],%o5
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%g3
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+4],%g4
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o3
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%o4,%o5,%o5
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0]
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%o4
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+8],%o5
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%g3,%g4,%g4
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g4,[%o0+4]
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1-4],%g3
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+12],%g4
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o2
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%o4,%o5,%o5
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+8]
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%g3,%g4,%g4
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%g4,[%o0-4]
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_sub_words_loop
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tst	%o3
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a	.L_bn_sub_words_tail
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1],%o4
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_return:
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%g1,%o0
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_tail:
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2],%o5
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%o4,%o5,%o5
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o3
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sub_words_return
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0]
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+4],%o4
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+4],%o5
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%o4,%o5,%o5
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%g1
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	deccc	%o3
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz	.L_bn_sub_words_return
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+4]
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o1+8],%o4
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g1,-1,%g0
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	[%o2+8],%o5
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subxcc	%o4,%o5,%o5
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	%o5,[%o0+8]
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,0,%o0
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sub_words,#function
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sub_words,(.-bn_sub_words)
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define FRAME_SIZE	-96
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Here is register usage map for *all* routines below.
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define t_1	%o0
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	t_2	%o1
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_1	%o2
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_2	%o3
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_3	%o4
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ap(I)	[%i1+4*I]
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define bp(I)	[%i2+4*I]
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define rp(I)	[%i0+4*I]
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_0	%l0
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_1	%l1
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_2	%l2
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_3	%l3
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_4	%l4
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_5	%l5
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_6	%l6
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_7	%l7
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_0	%i3
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_1	%i4
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_2	%i5
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_3	%o5
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_4	%g1
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_5	%g2
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_6	%g3
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_7	%g4
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba8
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba8(r,a,b)
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b;
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba8:
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(0),a_0
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(0),b_0
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_0,c_1	!=!mul_add_c(a[0],b[0],c1,c2,c3);
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(1),b_1
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,c_2
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(0)	!r[0]=c1;
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_1,t_1	!=!mul_add_c(a[0],b[1],c2,c3,c1);
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(1),a_1
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g0,t_2,c_3	!=
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(2),a_2
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_0,t_1	!mul_add_c(a[1],b[0],c2,c3,c1);
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(1)	!r[1]=c2;
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_0,t_1	!mul_add_c(a[2],b[0],c3,c1,c2);
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(2),b_2
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_1,t_1	!mul_add_c(a[1],b[1],c3,c1,c2);
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(3),b_3
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_2,t_1	!mul_add_c(a[0],b[2],c3,c1,c2);
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(2)	!r[2]=c3;
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_3,t_1	!mul_add_c(a[0],b[3],c1,c2,c3);
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_2,t_1	!=!mul_add_c(a[1],b[2],c1,c2,c3);
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(3),a_3
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_1,t_1	!mul_add_c(a[2],b[1],c1,c2,c3);
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(4),a_4
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_0,t_1	!mul_add_c(a[3],b[0],c1,c2,c3);!=
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(3)	!r[3]=c1;
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_0,t_1	!mul_add_c(a[4],b[0],c2,c3,c1);
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_1,t_1	!mul_add_c(a[3],b[1],c2,c3,c1);
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_2,t_1	!=!mul_add_c(a[2],b[2],c2,c3,c1);
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(4),b_4
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_3,t_1	!mul_add_c(a[1],b[3],c2,c3,c1);
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(5),b_5
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_4,t_1	!=!mul_add_c(a[0],b[4],c2,c3,c1);
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(4)	!r[4]=c2;
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_5,t_1	!mul_add_c(a[0],b[5],c3,c1,c2);
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_4,t_1	!mul_add_c(a[1],b[4],c3,c1,c2);
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_3,t_1	!=!mul_add_c(a[2],b[3],c3,c1,c2);
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_2,t_1	!mul_add_c(a[3],b[2],c3,c1,c2);
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(5),a_5
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_1,t_1	!mul_add_c(a[4],b[1],c3,c1,c2);
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(6),a_6
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_0,t_1	!mul_add_c(a[5],b[0],c3,c1,c2);
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(5)	!r[5]=c3;
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_0,t_1	!mul_add_c(a[6],b[0],c1,c2,c3);
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_1,t_1	!=!mul_add_c(a[5],b[1],c1,c2,c3);
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_2,t_1	!mul_add_c(a[4],b[2],c1,c2,c3);
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_3,t_1	!mul_add_c(a[3],b[3],c1,c2,c3);
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_4,t_1	!mul_add_c(a[2],b[4],c1,c2,c3);
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(6),b_6
718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_5,t_1	!mul_add_c(a[1],b[5],c1,c2,c3);
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(7),b_7
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_6,t_1	!mul_add_c(a[0],b[6],c1,c2,c3);
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(6)	!r[6]=c1;
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_7,t_1	!mul_add_c(a[0],b[7],c2,c3,c1);
733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_6,t_1	!mul_add_c(a[1],b[6],c2,c3,c1);
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_5,t_1	!mul_add_c(a[2],b[5],c2,c3,c1);
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_4,t_1	!=!mul_add_c(a[3],b[4],c2,c3,c1);
748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_3,t_1	!mul_add_c(a[4],b[3],c2,c3,c1);
753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_2,t_1	!mul_add_c(a[5],b[2],c2,c3,c1);
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(7),a_7
763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_1,t_1	!=!mul_add_c(a[6],b[1],c2,c3,c1);
764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_0,t_1	!mul_add_c(a[7],b[0],c2,c3,c1);
769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(7)	!r[7]=c2;
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_1,t_1	!mul_add_c(a[7],b[1],c3,c1,c2);
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_2,t_1	!=!mul_add_c(a[6],b[2],c3,c1,c2);
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_3,t_1	!mul_add_c(a[5],b[3],c3,c1,c2);
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_4,t_1	!mul_add_c(a[4],b[4],c3,c1,c2);
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_5,t_1	!mul_add_c(a[3],b[5],c3,c1,c2);
796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_6,t_1	!=!mul_add_c(a[2],b[6],c3,c1,c2);
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_7,t_1	!mul_add_c(a[1],b[7],c3,c1,c2);
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(8)	!r[8]=c3;
811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_7,t_1	!mul_add_c(a[2],b[7],c1,c2,c3);
813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_6,t_1	!=!mul_add_c(a[3],b[6],c1,c2,c3);
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_5,t_1	!mul_add_c(a[4],b[5],c1,c2,c3);
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_4,t_1	!mul_add_c(a[5],b[4],c1,c2,c3);
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_3,t_1	!mul_add_c(a[6],b[3],c1,c2,c3);
833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_2,t_1	!=!mul_add_c(a[7],b[2],c1,c2,c3);
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(9)	!r[9]=c1;
843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_3,t_1	!mul_add_c(a[7],b[3],c2,c3,c1);
845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_4,t_1	!mul_add_c(a[6],b[4],c2,c3,c1);
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_5,t_1	!=!mul_add_c(a[5],b[5],c2,c3,c1);
855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_6,t_1	!mul_add_c(a[4],b[6],c2,c3,c1);
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_7,t_1	!mul_add_c(a[3],b[7],c2,c3,c1);
865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(10)	!r[10]=c2;
870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,b_7,t_1	!=!mul_add_c(a[4],b[7],c3,c1,c2);
872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2	!=
876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_6,t_1	!mul_add_c(a[5],b[6],c3,c1,c2);
877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_5,t_1	!mul_add_c(a[6],b[5],c3,c1,c2);
882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_4,t_1	!mul_add_c(a[7],b[4],c3,c1,c2);
887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(11)	!r[11]=c3;
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_5,t_1	!mul_add_c(a[7],b[5],c1,c2,c3);
894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_6,t_1	!mul_add_c(a[6],b[6],c1,c2,c3);
899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,b_7,t_1	!mul_add_c(a[5],b[7],c1,c2,c3);
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(12)	!r[12]=c1;
908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,b_7,t_1	!mul_add_c(a[6],b[7],c2,c3,c1);
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_6,t_1	!mul_add_c(a[7],b[6],c2,c3,c1);
916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(13)	!r[13]=c2;
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,b_7,t_1	!=!mul_add_c(a[7],b[7],c3,c1,c2);
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop			!=
927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(14)	!r[14]=c3;
928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(15)	!r[15]=c1;
929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_comba8,#function
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_comba8,(.-bn_mul_comba8)
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba4
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba4(r,a,b)
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b;
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba4:
944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(0),a_0
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(0),b_0
947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_0,c_1	!=!mul_add_c(a[0],b[0],c1,c2,c3);
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(1),b_1
949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,c_2
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(0)	!r[0]=c1;
951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_1,t_1	!=!mul_add_c(a[0],b[1],c2,c3,c1);
953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(1),a_1
954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g0,t_2,c_3
957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(2),a_2
959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_0,t_1	!=!mul_add_c(a[1],b[0],c2,c3,c1);
960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(1)	!r[1]=c2;
965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_0,t_1	!mul_add_c(a[2],b[0],c3,c1,c2);
967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(2),b_2
972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_1,t_1	!=!mul_add_c(a[1],b[1],c3,c1,c2);
973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	bp(3),b_3
978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_2,t_1	!mul_add_c(a[0],b[2],c3,c1,c2);
979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(2)	!r[2]=c3;
984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,b_3,t_1	!=!mul_add_c(a[0],b[3],c1,c2,c3);
986656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
989656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3	!=
990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_2,t_1	!mul_add_c(a[1],b[2],c1,c2,c3);
991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(3),a_3
996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_1,t_1	!mul_add_c(a[2],b[1],c1,c2,c3);
997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_0,t_1	!=!mul_add_c(a[3],b[0],c1,c2,c3);
1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(3)	!r[3]=c1;
1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_1,t_1	!mul_add_c(a[3],b[1],c2,c3,c1);
1009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_2,t_1	!mul_add_c(a[2],b[2],c2,c3,c1);
1014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,b_3,t_1	!=!mul_add_c(a[1],b[3],c2,c3,c1);
1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
1023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(4)	!r[4]=c2;
1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,b_3,t_1	!mul_add_c(a[2],b[3],c3,c1,c2);
1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_2,t_1	!mul_add_c(a[3],b[2],c3,c1,c2);
1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(5)	!r[5]=c3;
1035656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1036656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1037656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,b_3,t_1	!mul_add_c(a[3],b[3],c1,c2,c3);
1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(6)	!r[6]=c1;
1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(7)	!r[7]=c2;
1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_comba4,#function
1048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_comba4,(.-bn_mul_comba4)
1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba8
1053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba8:
1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
1055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(0),a_0
1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(1),a_1
1057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_0,c_1	!=!sqr_add_c(a,0,c1,c2,c3);
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,c_2
1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(0)	!r[0]=c1;
1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(2),a_2
1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_1,t_1	!=!sqr_add_c2(a,1,0,c2,c3,c1);
1063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g0,t_2,c_3
1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1	!=
1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(1)	!r[1]=c2;
1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
1071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_0,t_1	!sqr_add_c2(a,2,0,c3,c1,c2);
1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1075656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
1077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(3),a_3
1081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_1,t_1	!sqr_add_c(a,1,c3,c1,c2);
1082656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1083656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1085656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(2)	!r[2]=c3;
1087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1088656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_3,t_1	!=!sqr_add_c2(a,3,0,c1,c2,c3);
1089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3	!=
1093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(4),a_4
1096656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_2,t_1	!sqr_add_c2(a,2,1,c1,c2,c3);
1098656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(3)	!r[3]=c1;
1106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,a_0,t_1	!sqr_add_c2(a,4,0,c2,c3,c1);
1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_1,t_1	!sqr_add_c2(a,3,1,c2,c3,c1);
1116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(5),a_5
1124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_2,t_1	!sqr_add_c(a,2,c2,c3,c1);
1125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(4)	!r[4]=c2;
1129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
1130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_5,t_1	!sqr_add_c2(a,5,0,c3,c1,c2);
1132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
1136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_4,t_1	!sqr_add_c2(a,4,1,c3,c1,c2);
1140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(6),a_6
1148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_3,t_1	!sqr_add_c2(a,3,2,c3,c1,c2);
1149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(5)	!r[5]=c3;
1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,a_0,t_1	!sqr_add_c2(a,6,0,c1,c2,c3);
1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
1163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,a_1,t_1	!sqr_add_c2(a,5,1,c1,c2,c3);
1167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,a_2,t_1	!sqr_add_c2(a,4,2,c1,c2,c3);
1175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1	!=
1180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(7),a_7
1183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_3,t_1	!=!sqr_add_c(a,3,c1,c2,c3);
1184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(6)	!r[6]=c1;
1189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_7,t_1	!sqr_add_c2(a,7,0,c2,c3,c1);
1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_6,t_1	!sqr_add_c2(a,6,1,c2,c3,c1);
1199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_5,t_1	!sqr_add_c2(a,5,2,c2,c3,c1);
1207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_4,t_1	!sqr_add_c2(a,4,3,c2,c3,c1);
1215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(7)	!r[7]=c2;
1223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,a_1,t_1	!sqr_add_c2(a,7,1,c3,c1,c2);
1225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
1229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,a_2,t_1	!sqr_add_c2(a,6,2,c3,c1,c2);
1233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,a_3,t_1	!sqr_add_c2(a,5,3,c3,c1,c2);
1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,a_4,t_1	!sqr_add_c(a,4,c3,c1,c2);
1249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(8)	!r[8]=c3;
1253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_7,t_1	!sqr_add_c2(a,7,2,c1,c2,c3);
1256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
1260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_6,t_1	!sqr_add_c2(a,6,3,c1,c2,c3);
1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,a_5,t_1	!sqr_add_c2(a,5,4,c1,c2,c3);
1272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(9)	!r[9]=c1;
1280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,a_3,t_1	!sqr_add_c2(a,7,3,c2,c3,c1);
1282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,a_4,t_1	!sqr_add_c2(a,6,4,c2,c3,c1);
1290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,a_5,t_1	!sqr_add_c(a,5,c2,c3,c1);
1298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(10)	!r[10]=c2;
1303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_4,a_7,t_1	!=!sqr_add_c2(a,7,4,c3,c1,c2);
1305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2	!=
1309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_5,a_6,t_1	!=!sqr_add_c2(a,6,5,c3,c1,c2);
1313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(11)	!r[11]=c3;
1320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,a_5,t_1	!sqr_add_c2(a,7,5,c1,c2,c3);
1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
1327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,a_6,t_1	!sqr_add_c(a,6,c1,c2,c3);
1331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(12)	!r[12]=c1;
1336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_6,a_7,t_1	!sqr_add_c2(a,7,6,c2,c3,c1);
1338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
1339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2	!=
1343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(13)	!r[13]=c2;
1345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
1346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_7,a_7,t_1	!sqr_add_c(a,7,c3,c1,c2);
1348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(14)	!r[14]=c3;
1352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(15)	!r[15]=c1;
1353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_comba8,#function
1358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_comba8,(.-bn_sqr_comba8)
1359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba4
1363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
1364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_comba4(r,a)
1365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a;
1366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
1367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba4:
1368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
1369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(0),a_0
1370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_0,c_1	!sqr_add_c(a,0,c1,c2,c3);
1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(1),a_1	!=
1372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,c_2
1373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(0)	!r[0]=c1;
1374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(2),a_2
1376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_1,t_1	!=!sqr_add_c2(a,1,0,c2,c3,c1);
1377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	%g0,t_2,c_3
1380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1	!=
1381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1	!=
1384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(1)	!r[1]=c2;
1385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_0,t_1	!sqr_add_c2(a,2,0,c3,c1,c2);
1387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2
1391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1	!=
1393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2
1394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ld	ap(3),a_3
1395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_1,t_1	!sqr_add_c(a,1,c3,c1,c2);
1396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3	!=
1397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(2)	!r[2]=c3;
1400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_0,a_3,t_1	!sqr_add_c2(a,3,0,c1,c2,c3);
1403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_3
1407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_1,a_2,t_1	!sqr_add_c2(a,2,1,c1,c2,c3);
1411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3
1415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2
1417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_3,%g0,c_3	!=
1418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(3)	!r[3]=c1;
1419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_1,t_1	!sqr_add_c2(a,3,1,c2,c3,c1);
1421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_1
1425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3	!=
1427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_2,t_1	!sqr_add_c(a,2,c2,c3,c1);
1429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_2,t_1,c_2
1430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2		!=
1431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_3,t_2,c_3
1432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_1,%g0,c_1
1433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(4)	!r[4]=c2;
1434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_2,a_3,t_1	!=!sqr_add_c2(a,3,2,c3,c1,c2);
1436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	%g0,%g0,c_2	!=
1440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_3,t_1,c_3
1441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_1,t_2,c_1
1442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_3,rp(5)	!r[5]=c3;
1443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addx	c_2,%g0,c_2	!=
1444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	umul	a_3,a_3,t_1	!sqr_add_c(a,3,c1,c2,c3);
1446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_1,t_1,c_1
1447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	rd	%y,t_2
1448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addxcc	c_2,t_2,c_2	!=
1449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_1,rp(6)	!r[6]=c1;
1450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	c_2,rp(7)	!r[7]=c2;
1451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_comba4,#function
1456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_comba4,(.-bn_sqr_comba4)
1457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1459