1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident	"sparcv8plus.s, Version 1.4"
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.ident	"SPARC v9 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 UltraSPARC 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 * Questions-n-answers.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. How to compile?
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. With SC4.x/SC5.x:
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	cc -xarch=v8plus -c bn_asm.sparc.v8plus.S -o bn_asm.o
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    and with gcc:
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	gcc -mcpu=ultrasparc -c bn_asm.sparc.v8plus.S -o bn_asm.o
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    or if above fails (it does if you have gas installed):
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	gcc -E bn_asm.sparc.v8plus.S | as -xarch=v8plus /dev/fd/0 -o bn_asm.o
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    Quick-n-dirty way to fuse the module into the library.
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    Provided that the library is already configured and built
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    (in 0.9.2 case with no-asm option):
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cd crypto/bn
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cp /some/place/bn_asm.sparc.v8plus.S .
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cc -xarch=v8plus -c bn_asm.sparc.v8plus.S -o bn_asm.o
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# make
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cd ../..
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# make; make test
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    Quick-n-dirty way to get rid of it:
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cd crypto/bn
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# touch bn_asm.c
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# make
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# cd ../..
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	# make; make test
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. V8plus achitecture? What kind of beast is that?
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Well, it's rather a programming model than an architecture...
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    It's actually v9-compliant, i.e. *any* UltraSPARC, CPU under
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    special conditions, namely when kernel doesn't preserve upper
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    32 bits of otherwise 64-bit registers during a context switch.
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. Why just UltraSPARC? What about SuperSPARC?
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Original release did target UltraSPARC only. Now SuperSPARC
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    version is provided along. Both version share bn_*comba[48]
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    implementations (see comment later in code for explanation).
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    But what's so special about this UltraSPARC implementation?
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    Why didn't I let compiler do the job? Trouble is that most of
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    available compilers (well, SC5.0 is the only exception) don't
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    attempt to take advantage of UltraSPARC's 64-bitness under
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    32-bit kernels even though it's perfectly possible (see next
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    question).
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. 64-bit registers under 32-bit kernels? Didn't you just say it
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    doesn't work?
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. You can't adress *all* registers as 64-bit wide:-( The catch is
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    that you actually may rely upon %o0-%o5 and %g1-%g4 being fully
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    preserved if you're in a leaf function, i.e. such never calling
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    any other functions. All functions in this module are leaf and
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    10 registers is a handful. And as a matter of fact none-"comba"
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    routines don't require even that much and I could even afford to
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    not allocate own stack frame for 'em:-)
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. What about 64-bit kernels?
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. What about 'em? Just kidding:-) Pure 64-bit version is currently
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    under evaluation and development...
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. What about shared libraries?
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. What about 'em? Kidding again:-) Code does *not* contain any
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    code position dependencies and it's safe to include it into
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    shared library as is.
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Q. How much faster does it go?
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * A. Do you have a good benchmark? In either case below is what I
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    experience with crypto/bn/expspeed.c test program:
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	v8plus module on U10/300MHz against bn_asm.c compiled with:
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	cc-5.0 -xarch=v8plus -xO5 -xdepend	+7-12%
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	cc-4.2 -xarch=v8plus -xO5 -xdepend	+25-35%
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	egcs-1.1.2 -mcpu=ultrasparc -O3		+35-45%
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	v8 module on SS10/60MHz against bn_asm.c compiled with:
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	cc-5.0 -xarch=v8 -xO5 -xdepend		+7-10%
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	cc-4.2 -xarch=v8 -xO5 -xdepend		+10%
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	egcs-1.1.2 -mv8 -O3			+35-45%
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    As you can see it's damn hard to beat the new Sun C compiler
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    and it's in first place GNU C users who will appreciate this
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    assembler implementation:-)
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Revision history.
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.0	- initial release;
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.1	- new loop unrolling model(*);
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	- some more fine tuning;
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.2	- made gas friendly;
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	- updates to documentation concerning v9;
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	- new performance comparison matrix;
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.3	- fixed problem with /usr/ccs/lib/cpp;
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1.4	- native V9 bn_*_comba[48] implementation (15% more efficient)
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	  resulting in slight overall performance kick;
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	- some retunes;
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	- support for GNU as added;
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (*)	Originally unrolled loop looked like this:
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    for (;;) {
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+0); if (--n==0) break;
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+1); if (--n==0) break;
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+2); if (--n==0) break;
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+3); if (--n==0) break;
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		p+=4;
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    }
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	I unroll according to following:
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    while (n&~3) {
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+0); op(p+1); op(p+2); op(p+3);
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		p+=4; n=-4;
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    }
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    if (n) {
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+0); if (--n==0) return;
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+2); if (--n==0) return;
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *		op(p+3); return;
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *	    }
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
147221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#if defined(__SUNPRO_C) && defined(__sparcv9)
148221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  /* They've said -xarch=v9 at command line */
149221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  .register	%g2,#scratch
150221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  .register	%g3,#scratch
151221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define	FRAME_SIZE	-192
152221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#elif defined(__GNUC__) && defined(__arch64__)
153221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  /* They've said -m64 at command line */
154221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  .register	%g2,#scratch
155221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom  .register	%g3,#scratch
156221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define	FRAME_SIZE	-192
157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#else
158221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom# define	FRAME_SIZE	-96
159221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * GNU assembler can't stand stuw:-(
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define stuw st
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.section	".text",#alloc,#execinstr
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.file		"bn_asm.sparc.v8plus.S"
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_add_words
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_add_words(rp,ap,num,w)
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap;
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num;
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w;
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_add_words:
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sra	%o2,%g0,%o2	! signx %o2
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brgz,a	%o2,.L_bn_mul_add_words_proceed
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_proceed:
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srl	%o3,%g0,%o3	! clruw	%o3
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz,pn	%icc,.L_bn_mul_add_words_tail
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o5
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_loop:	! wow! 32 aligned!
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0],%g1
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g3
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g2,%o4
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0+4],%g1
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g3,%g3
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g3,%o4
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+4]
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0+8],%g1
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+12],%g3
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g2,%o4
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0+12],%g1
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g3,%g3
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g3,%o4
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0-4]
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a,pt	%icc,.L_bn_mul_add_words_loop
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pn	%o2,.L_bn_mul_add_words_tail
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_return:
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%o5,%o0
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_add_words_tail:
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0],%g1
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g2,%o4
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_mul_add_words_return
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g2
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0+4],%g1
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g2,%o4
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_mul_add_words_return
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+4]
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o0+8],%g1
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g1,%o5,%o4
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%o4,%g2,%o4
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o0
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_add_words,#function
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_add_words,(.-bn_mul_add_words)
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_words
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_mul_words(rp,ap,num,w)
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap;
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int num;
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG w;
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_words:
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sra	%o2,%g0,%o2	! signx %o2
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brgz,a	%o2,.L_bn_mul_words_proceeed
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_proceeed:
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srl	%o3,%g0,%o3	! clruw	%o3
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz,pn	%icc,.L_bn_mul_words_tail
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o5
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_loop:		! wow! 32 aligned!
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g3
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g2,%o5,%o4
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g3,%g3
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g3,%o5,%o4
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+4]
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+12],%g3
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g2,%o5,%o4
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g3,%g3
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g3,%o5,%o4
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0-4]
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a,pt	%icc,.L_bn_mul_words_loop
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pn	%o2,.L_bn_mul_words_tail
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_return:
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	%o5,%o0
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_mul_words_tail:
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g2,%o5,%o4
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_mul_words_return
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g2
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g2,%o5,%o4
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_mul_words_return
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+4]
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%o3,%g2,%g2
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	%g2,%o5,%o4
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o0
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_words,#function
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_words,(.-bn_mul_words)
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align  32
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global	bn_sqr_words
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_words(r,a,n)
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a;
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_words:
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sra	%o2,%g0,%o2	! signx %o2
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brgz,a	%o2,.L_bn_sqr_words_proceeed
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_proceeed:
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g0
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz,pn	%icc,.L_bn_sqr_words_tail
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_loop:		! wow! 32 aligned!
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g3
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g2,%g2,%o4
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+4]
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g3,%g3,%o4
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o2
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+12]
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+12],%g3
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g2,%g2,%o4
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+16]
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+20]
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g3,%g3,%o4
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	32,%o0
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0-8]
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o2,-4,%g2
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0-4]
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bnz,a,pt	%icc,.L_bn_sqr_words_loop
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pn	%o2,.L_bn_sqr_words_tail
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%g2
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_return:
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sqr_words_tail:
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g2,%g2,%o4
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0]
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_sqr_words_return
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+4]
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g2
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g2,%g2,%o4
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o2
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+8]
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o2,.L_bn_sqr_words_return
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+12]
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g2
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	%g2,%g2,%o4
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	%o4,32,%o5
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o4,[%o0+16]
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+20]
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_words,#function
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_words,(.-bn_sqr_words)
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_div_words
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_div_words(h,l,d)
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG h,l,d;
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_div_words:
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sllx	%o0,32,%o0
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	%o0,%o1,%o0
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	udivx	%o0,%o2,%o0
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srl	%o0,%g0,%o0	! clruw	%o0
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_div_words,#function
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_div_words,(.-bn_div_words)
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_add_words
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_add_words(rp,ap,bp,n)
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp;
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_add_words:
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sra	%o3,%g0,%o3	! signx %o3
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brgz,a	%o3,.L_bn_add_words_proceed
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_proceed:
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz,pn	%icc,.L_bn_add_words_tail
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g0,0,%g0	! clear carry flag
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_loop:		! wow! 32 aligned!
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o3
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2],%o5
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g1
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+4],%g2
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g3
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+8],%g4
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%o5,%o4,%o5
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0]
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+12],%o4
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+12],%o5
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%g1,%g2,%g1
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%g1,[%o0+4]
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o2
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%g3,%g4,%g3
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%g3,[%o0+8]
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%o5,%o4,%o5
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0-4]
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	%o3,-4,%g1
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pt	%g1,.L_bn_add_words_loop
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pn	%o3,.L_bn_add_words_tail
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_return:
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	movcs	%icc,1,%o0
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_add_words_tail:
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2],%o5
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o3
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%o5,%o4,%o5
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o3,.L_bn_add_words_return
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0]
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%o4
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+4],%o5
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o3
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%o5,%o4,%o5
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o3,.L_bn_add_words_return
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+4]
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%o4
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+8],%o5
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addccc	%o5,%o4,%o5
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+8]
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	movcs	%icc,1,%o0
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_add_words,#function
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_add_words,(.-bn_add_words)
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sub_words
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG bn_sub_words(rp,ap,bp,n)
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *rp,*ap,*bp;
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * int n;
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sub_words:
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sra	%o3,%g0,%o3	! signx %o3
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brgz,a	%o3,.L_bn_sub_words_proceed
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_proceed:
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	andcc	%o3,-4,%g0
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bz,pn	%icc,.L_bn_sub_words_tail
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	%g0,0,%g0	! clear carry flag
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_loop:		! wow! 32 aligned!
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	4,%o3
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2],%o5
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%g1
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+4],%g2
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%g3
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+8],%g4
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%o4,%o5,%o5
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0]
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+12],%o4
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+12],%o5
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o1
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%g1,%g2,%g2
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%g2,[%o0+4]
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o2
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%g3,%g4,%g4
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%g4,[%o0+8]
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	inc	16,%o0
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%o4,%o5,%o5
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0-4]
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	and	%o3,-4,%g1
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pt	%g1,.L_bn_sub_words_loop
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brnz,a,pn	%o3,.L_bn_sub_words_tail
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1],%o4
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_return:
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	movcs	%icc,1,%o0
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	nop
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L_bn_sub_words_tail:		! wow! 32 aligned!
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2],%o5
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o3
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%o4,%o5,%o5
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o3,.L_bn_sub_words_return
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0]
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+4],%o4
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+4],%o5
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dec	%o3
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%o4,%o5,%o5
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	brz,pt	%o3,.L_bn_sub_words_return
609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+4]
610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o1+8],%o4
612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	[%o2+8],%o5
613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	subccc	%o4,%o5,%o5
614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	%o5,[%o0+8]
615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	%o0
616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	retl
617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	movcs	%icc,1,%o0
618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sub_words,#function
620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sub_words,(.-bn_sub_words)
621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Code below depends on the fact that upper parts of the %l0-%l7
624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and %i0-%i7 are zeroed by kernel after context switch. In
625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * previous versions this comment stated that "the trouble is that
626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * it's not feasible to implement the mumbo-jumbo in less V9
627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * instructions:-(" which apparently isn't true thanks to
628656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 'bcs,a %xcc,.+8; inc %rd' pair. But the performance improvement
629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * results not from the shorter code, but from elimination of
630656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * multicycle none-pairable 'rd %y,%rd' instructions.
631656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *							Andy.
633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Here is register usage map for *all* routines below.
637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define t_1	%o0
639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	t_2	%o1
640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_12	%o2
641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define c_3	%o3
642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define ap(I)	[%i1+4*I]
644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define bp(I)	[%i2+4*I]
645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define rp(I)	[%i0+4*I]
646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_0	%l0
648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_1	%l1
649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_2	%l2
650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_3	%l3
651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_4	%l4
652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_5	%l5
653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_6	%l6
654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	a_7	%l7
655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_0	%i3
657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_1	%i4
658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_2	%i5
659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_3	%o4
660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_4	%o5
661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_5	%o7
662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_6	%g1
663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define	b_7	%g4
664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba8
667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba8(r,a,b)
669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b;
670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba8:
672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	1,t_2
674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(0),a_0
675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sllx	t_2,32,t_2
676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(0),b_0	!=
677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(1),b_1
678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_0,t_1	!mul_add_c(a[0],b[0],c1,c2,c3);
679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(0)	!=!r[0]=c1;
681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(1),a_1
683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_1,t_1	!mul_add_c(a[0],b[1],c2,c3,c1);
684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3		!=
686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(2),a_2
689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_0,t_1	!=!mul_add_c(a[1],b[0],c2,c3,c1);
690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(1)	!r[1]=c2;
695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_0,t_1	!mul_add_c(a[2],b[0],c3,c1,c2);
698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(2),b_2	!=
703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_1,t_1	!mul_add_c(a[1],b[1],c3,c1,c2);
704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(3),b_3
708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_2,t_1	!mul_add_c(a[0],b[2],c3,c1,c2);
709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
710656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(2)	!r[2]=c3;
714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_3,t_1	!mul_add_c(a[0],b[3],c1,c2,c3);
717656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_2,t_1	!=!mul_add_c(a[1],b[2],c1,c2,c3);
722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(3),a_3
726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_1,t_1	!mul_add_c(a[2],b[1],c1,c2,c3);
727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(4),a_4
731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_0,t_1	!=!mul_add_c(a[3],b[0],c1,c2,c3);!=
732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(3)	!r[3]=c1;
737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_0,t_1	!mul_add_c(a[4],b[0],c2,c3,c1);
740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_1,t_1	!=!mul_add_c(a[3],b[1],c2,c3,c1);
745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_2,t_1	!=!mul_add_c(a[2],b[2],c2,c3,c1);
749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(4),b_4	!=
753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_3,t_1	!mul_add_c(a[1],b[3],c2,c3,c1);
754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(5),b_5
758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_4,t_1	!mul_add_c(a[0],b[4],c2,c3,c1);
759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(4)	!r[4]=c2;
764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_5,t_1	!mul_add_c(a[0],b[5],c3,c1,c2);
767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_4,t_1	!mul_add_c(a[1],b[4],c3,c1,c2);
772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_3,t_1	!mul_add_c(a[2],b[3],c3,c1,c2);
776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_2,t_1	!mul_add_c(a[3],b[2],c3,c1,c2);
780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(5),a_5
784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_1,t_1	!mul_add_c(a[4],b[1],c3,c1,c2);
785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(6),a_6
789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_0,t_1	!=!mul_add_c(a[5],b[0],c3,c1,c2);
790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(5)	!r[5]=c3;
795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_0,t_1	!mul_add_c(a[6],b[0],c1,c2,c3);
798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_1,t_1	!=!mul_add_c(a[5],b[1],c1,c2,c3);
803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_2,t_1	!=!mul_add_c(a[4],b[2],c1,c2,c3);
807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_3,t_1	!=!mul_add_c(a[3],b[3],c1,c2,c3);
811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_4,t_1	!=!mul_add_c(a[2],b[4],c1,c2,c3);
815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(6),b_6	!=
819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_5,t_1	!mul_add_c(a[1],b[5],c1,c2,c3);
820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(7),b_7
824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_6,t_1	!mul_add_c(a[0],b[6],c1,c2,c3);
825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(6)	!r[6]=c1;
830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_7,t_1	!mul_add_c(a[0],b[7],c2,c3,c1);
833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_6,t_1	!mul_add_c(a[1],b[6],c2,c3,c1);
838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_5,t_1	!mul_add_c(a[2],b[5],c2,c3,c1);
842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_4,t_1	!mul_add_c(a[3],b[4],c2,c3,c1);
846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_3,t_1	!mul_add_c(a[4],b[3],c2,c3,c1);
850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_2,t_1	!mul_add_c(a[5],b[2],c2,c3,c1);
854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(7),a_7
858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_1,t_1	!=!mul_add_c(a[6],b[1],c2,c3,c1);
859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_0,t_1	!=!mul_add_c(a[7],b[0],c2,c3,c1);
863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(7)	!r[7]=c2;
868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_1,t_1	!=!mul_add_c(a[7],b[1],c3,c1,c2);
871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_2,t_1	!mul_add_c(a[6],b[2],c3,c1,c2);
876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_3,t_1	!mul_add_c(a[5],b[3],c3,c1,c2);
880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_4,t_1	!mul_add_c(a[4],b[4],c3,c1,c2);
884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_5,t_1	!mul_add_c(a[3],b[5],c3,c1,c2);
888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_6,t_1	!mul_add_c(a[2],b[6],c3,c1,c2);
892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_7,t_1	!mul_add_c(a[1],b[7],c3,c1,c2);
896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(8)	!r[8]=c3;
901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_7,t_1	!=!mul_add_c(a[2],b[7],c1,c2,c3);
904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_6,t_1	!mul_add_c(a[3],b[6],c1,c2,c3);
909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_5,t_1	!mul_add_c(a[4],b[5],c1,c2,c3);
913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_4,t_1	!mul_add_c(a[5],b[4],c1,c2,c3);
917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_3,t_1	!mul_add_c(a[6],b[3],c1,c2,c3);
921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_2,t_1	!mul_add_c(a[7],b[2],c1,c2,c3);
925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(9)	!r[9]=c1;
930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
931656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_3,t_1	!mul_add_c(a[7],b[3],c2,c3,c1);
933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_4,t_1	!mul_add_c(a[6],b[4],c2,c3,c1);
938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_5,t_1	!mul_add_c(a[5],b[5],c2,c3,c1);
942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_6,t_1	!mul_add_c(a[4],b[6],c2,c3,c1);
946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_7,t_1	!mul_add_c(a[3],b[7],c2,c3,c1);
950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(10)	!r[10]=c2;
955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,b_7,t_1	!mul_add_c(a[4],b[7],c3,c1,c2);
958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_6,t_1	!mul_add_c(a[5],b[6],c3,c1,c2);
963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
965656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
966656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_5,t_1	!mul_add_c(a[6],b[5],c3,c1,c2);
967656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
968656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_4,t_1	!mul_add_c(a[7],b[4],c3,c1,c2);
971656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
973656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
975656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(11)	!r[11]=c3;
976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_5,t_1	!mul_add_c(a[7],b[5],c1,c2,c3);
979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
980656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
981656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_6,t_1	!mul_add_c(a[6],b[6],c1,c2,c3);
984656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
986656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,b_7,t_1	!mul_add_c(a[5],b[7],c1,c2,c3);
988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
989656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
990656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
991656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(12)	!r[12]=c1;
993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,b_7,t_1	!mul_add_c(a[6],b[7],c2,c3,c1);
996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
998656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1000656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_6,t_1	!mul_add_c(a[7],b[6],c2,c3,c1);
1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	t_1,rp(13)	!r[13]=c2;
1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
1007656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,b_7,t_1	!mul_add_c(a[7],b[7],c3,c1,c2);
1009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(14)	!r[14]=c3;
1012656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	c_12,rp(15)	!r[15]=c1;
1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1014656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0	!=
1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_comba8,#function
1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_comba8,(.-bn_mul_comba8)
1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1021656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_mul_comba4
1023656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_mul_comba4(r,a,b)
1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a,*b;
1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_mul_comba4:
1028656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(0),a_0
1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	1,t_2
1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(0),b_0
1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sllx	t_2,32,t_2	!=
1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(1),b_1
1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_0,t_1	!mul_add_c(a[0],b[0],c1,c2,c3);
1035656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1036656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(0)	!=!r[0]=c1;
1037656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(1),a_1
1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_1,t_1	!mul_add_c(a[0],b[1],c2,c3,c1);
1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3		!=
1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(2),a_2
1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_0,t_1	!=!mul_add_c(a[1],b[0],c2,c3,c1);
1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1048656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(1)	!r[1]=c2;
1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1053656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_0,t_1	!mul_add_c(a[2],b[0],c3,c1,c2);
1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
1055656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1057656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(2),b_2	!=
1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_1,t_1	!mul_add_c(a[1],b[1],c3,c1,c2);
1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1062656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3	!=
1063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	bp(3),b_3
1064656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_2,t_1	!mul_add_c(a[0],b[2],c3,c1,c2);
1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(2)	!r[2]=c3;
1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12	!=
1071656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1072656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,b_3,t_1	!mul_add_c(a[0],b[3],c1,c2,c3);
1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1075656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
1076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1077656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_2,t_1	!mul_add_c(a[1],b[2],c1,c2,c3);
1078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1079656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8	!=
1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(3),a_3
1082656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_1,t_1	!mul_add_c(a[2],b[1],c1,c2,c3);
1083656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
1084656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1085656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_0,t_1	!mul_add_c(a[3],b[0],c1,c2,c3);!=
1087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1	!=
1088656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1090656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(3)	!=!r[3]=c1;
1092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1093656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1094656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_1,t_1	!mul_add_c(a[3],b[1],c2,c3,c1);
1095656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1096656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3		!=
1097656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1098656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1099656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_2,t_1	!mul_add_c(a[2],b[2],c2,c3,c1);
1100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12	!=
1101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,b_3,t_1	!mul_add_c(a[1],b[3],c2,c3,c1);
1104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1	!=
1105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(4)	!=!r[4]=c2;
1109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,b_3,t_1	!mul_add_c(a[2],b[3],c3,c1,c2);
1112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3		!=
1114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_2,t_1	!mul_add_c(a[3],b[2],c3,c1,c2);
1117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1	!=
1118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(5)	!=!r[5]=c3;
1122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,b_3,t_1	!mul_add_c(a[3],b[3],c1,c2,c3);
1125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12	!=
1127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(6)	!r[6]=c1;
1128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	c_12,rp(7)	!r[7]=c2;
1129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_mul_comba4,#function
1134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_mul_comba4,(.-bn_mul_comba4)
1135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba8
1139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba8:
1140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
1141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	1,t_2
1142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(0),a_0
1143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sllx	t_2,32,t_2
1144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(1),a_1
1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_0,t_1	!sqr_add_c(a,0,c1,c2,c3);
1146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(0)	!r[0]=c1;
1148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(2),a_2
1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_1,t_1	!=!sqr_add_c2(a,1,0,c2,c3,c1);
1151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(1)	!r[1]=c2;
1160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_0,t_1	!sqr_add_c2(a,2,0,c3,c1,c2);
1163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(3),a_3
1171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_1,t_1	!sqr_add_c(a,1,c3,c1,c2);
1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(2)	!r[2]=c3;
1177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_3,t_1	!sqr_add_c2(a,3,0,c1,c2,c3);
1180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(4),a_4
1188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_2,t_1	!sqr_add_c2(a,2,1,c1,c2,c3);
1189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	st	t_1,rp(3)	!r[3]=c1;
1197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,a_0,t_1	!sqr_add_c2(a,4,0,c2,c3,c1);
1200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_1,t_1	!sqr_add_c2(a,3,1,c2,c3,c1);
1208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(5),a_5
1215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_2,t_1	!sqr_add_c(a,2,c2,c3,c1);
1216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(4)	!r[4]=c2;
1221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_5,t_1	!sqr_add_c2(a,5,0,c3,c1,c2);
1224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_4,t_1	!sqr_add_c2(a,4,1,c3,c1,c2);
1232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(6),a_6
1239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_3,t_1	!sqr_add_c2(a,3,2,c3,c1,c2);
1240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(5)	!r[5]=c3;
1248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,a_0,t_1	!sqr_add_c2(a,6,0,c1,c2,c3);
1251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,a_1,t_1	!sqr_add_c2(a,5,1,c1,c2,c3);
1259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,a_2,t_1	!sqr_add_c2(a,4,2,c1,c2,c3);
1266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(7),a_7
1273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_3,t_1	!=!sqr_add_c(a,3,c1,c2,c3);
1274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(6)	!r[6]=c1;
1279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_7,t_1	!sqr_add_c2(a,7,0,c2,c3,c1);
1282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_6,t_1	!sqr_add_c2(a,6,1,c2,c3,c1);
1290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_5,t_1	!sqr_add_c2(a,5,2,c2,c3,c1);
1297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_4,t_1	!sqr_add_c2(a,4,3,c2,c3,c1);
1304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(7)	!r[7]=c2;
1312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,a_1,t_1	!sqr_add_c2(a,7,1,c3,c1,c2);
1315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,a_2,t_1	!sqr_add_c2(a,6,2,c3,c1,c2);
1323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,a_3,t_1	!sqr_add_c2(a,5,3,c3,c1,c2);
1330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,a_4,t_1	!sqr_add_c(a,4,c3,c1,c2);
1337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(8)	!r[8]=c3;
1342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_7,t_1	!sqr_add_c2(a,7,2,c1,c2,c3);
1345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_6,t_1	!sqr_add_c2(a,6,3,c1,c2,c3);
1353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,a_5,t_1	!sqr_add_c2(a,5,4,c1,c2,c3);
1360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(9)	!r[9]=c1;
1368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,a_3,t_1	!sqr_add_c2(a,7,3,c2,c3,c1);
1371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,a_4,t_1	!sqr_add_c2(a,6,4,c2,c3,c1);
1379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,a_5,t_1	!sqr_add_c(a,5,c2,c3,c1);
1386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(10)	!r[10]=c2;
1391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_4,a_7,t_1	!sqr_add_c2(a,7,4,c3,c1,c2);
1394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_5,a_6,t_1	!sqr_add_c2(a,6,5,c3,c1,c2);
1402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(11)	!r[11]=c3;
1410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,a_5,t_1	!sqr_add_c2(a,7,5,c1,c2,c3);
1413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,a_6,t_1	!sqr_add_c(a,6,c1,c2,c3);
1421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(12)	!r[12]=c1;
1426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_6,a_7,t_1	!sqr_add_c2(a,7,6,c2,c3,c1);
1429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(13)	!r[13]=c2;
1438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_7,a_7,t_1	!sqr_add_c(a,7,c3,c1,c2);
1441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(14)	!r[14]=c3;
1444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	c_12,rp(15)	!r[15]=c1;
1445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_comba8,#function
1450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_comba8,(.-bn_sqr_comba8)
1451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global bn_sqr_comba4
1455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*
1456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * void bn_sqr_comba4(r,a)
1457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * BN_ULONG *r,*a;
1458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
1459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectbn_sqr_comba4:
1460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	save	%sp,FRAME_SIZE,%sp
1461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mov	1,t_2
1462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(0),a_0
1463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sllx	t_2,32,t_2
1464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(1),a_1
1465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_0,t_1	!sqr_add_c(a,0,c1,c2,c3);
1466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(0)	!r[0]=c1;
1468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(2),a_2
1470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_1,t_1	!sqr_add_c2(a,1,0,c2,c3,c1);
1471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(1)	!r[1]=c2;
1480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_0,t_1	!sqr_add_c2(a,2,0,c3,c1,c2);
1483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	lduw	ap(3),a_3
1491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_1,t_1	!sqr_add_c(a,1,c3,c1,c2);
1492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(2)	!r[2]=c3;
1497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_0,a_3,t_1	!sqr_add_c2(a,3,0,c1,c2,c3);
1500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_1,a_2,t_1	!sqr_add_c2(a,2,1,c1,c2,c3);
1508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(3)	!r[3]=c1;
1516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_1,t_1	!sqr_add_c2(a,3,1,c2,c3,c1);
1519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_2,t_1	!sqr_add_c(a,2,c2,c3,c1);
1527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(4)	!r[4]=c2;
1532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_2,a_3,t_1	!sqr_add_c2(a,3,2,c3,c1,c2);
1535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,c_12
1536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	clr	c_3
1537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	bcs,a	%xcc,.+8
1541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	c_3,t_2,c_3
1542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(5)	!r[5]=c3;
1544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	or	c_12,c_3,c_12
1545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	mulx	a_3,a_3,t_1	!sqr_add_c(a,3,c1,c2,c3);
1547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	addcc	c_12,t_1,t_1
1548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	srlx	t_1,32,c_12
1549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	t_1,rp(6)	!r[6]=c1;
1550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	stuw	c_12,rp(7)	!r[7]=c2;
1551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret
1553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	restore	%g0,%g0,%o0
1554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type	bn_sqr_comba4,#function
1556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size	bn_sqr_comba4,(.-bn_sqr_comba4)
1557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
1558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align	32
1559