xref: /onnv-gate/usr/src/common/openssl/crypto/md5/asm/md5-sparcv9.S (revision 0:68f95e015346)
1*0Sstevel@tonic-gate.ident	"md5-sparcv9.S, Version 1.0"
2*0Sstevel@tonic-gate.ident	"SPARC V9 ISA artwork by Andy Polyakov <appro@fy.chalmers.se>"
3*0Sstevel@tonic-gate.file	"md5-sparcv9.S"
4*0Sstevel@tonic-gate
5*0Sstevel@tonic-gate/*
6*0Sstevel@tonic-gate * ====================================================================
7*0Sstevel@tonic-gate * Copyright (c) 1999 Andy Polyakov <appro@fy.chalmers.se>.
8*0Sstevel@tonic-gate *
9*0Sstevel@tonic-gate * Rights for redistribution and usage in source and binary forms are
10*0Sstevel@tonic-gate * granted as long as above copyright notices are retained. Warranty
11*0Sstevel@tonic-gate * of any kind is (of course:-) disclaimed.
12*0Sstevel@tonic-gate * ====================================================================
13*0Sstevel@tonic-gate */
14*0Sstevel@tonic-gate
15*0Sstevel@tonic-gate/*
16*0Sstevel@tonic-gate * This is my modest contribution to OpenSSL project (see
17*0Sstevel@tonic-gate * http://www.openssl.org/ for more information about it) and is an
18*0Sstevel@tonic-gate * assembler implementation of MD5 block hash function. I've hand-coded
19*0Sstevel@tonic-gate * this for the sole reason to reach UltraSPARC-specific "load in
20*0Sstevel@tonic-gate * little-endian byte order" instruction. This gives up to 15%
21*0Sstevel@tonic-gate * performance improvement for cases when input message is aligned at
22*0Sstevel@tonic-gate * 32 bits boundary. The module was tested under both 32 *and* 64 bit
23*0Sstevel@tonic-gate * kernels. For updates see http://fy.chalmers.se/~appro/hpe/.
24*0Sstevel@tonic-gate *
25*0Sstevel@tonic-gate * To compile with SC4.x/SC5.x:
26*0Sstevel@tonic-gate *
27*0Sstevel@tonic-gate *	cc -xarch=v[9|8plus] -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
28*0Sstevel@tonic-gate *		-c md5-sparcv9.S
29*0Sstevel@tonic-gate *
30*0Sstevel@tonic-gate * and with gcc:
31*0Sstevel@tonic-gate *
32*0Sstevel@tonic-gate *	gcc -mcpu=ultrasparc -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
33*0Sstevel@tonic-gate *		-c md5-sparcv9.S
34*0Sstevel@tonic-gate *
35*0Sstevel@tonic-gate * or if above fails (it does if you have gas):
36*0Sstevel@tonic-gate *
37*0Sstevel@tonic-gate *	gcc -E -DOPENSSL_SYSNAMEULTRASPARC -DMD5_BLOCK_DATA_ORDER md5_block.sparc.S | \
38*0Sstevel@tonic-gate *		as -xarch=v8plus /dev/fd/0 -o md5-sparcv9.o
39*0Sstevel@tonic-gate */
40*0Sstevel@tonic-gate
41*0Sstevel@tonic-gate#include <openssl/e_os2.h>
42*0Sstevel@tonic-gate
43*0Sstevel@tonic-gate#define	A	%o0
44*0Sstevel@tonic-gate#define B	%o1
45*0Sstevel@tonic-gate#define	C	%o2
46*0Sstevel@tonic-gate#define	D	%o3
47*0Sstevel@tonic-gate#define	T1	%o4
48*0Sstevel@tonic-gate#define	T2	%o5
49*0Sstevel@tonic-gate
50*0Sstevel@tonic-gate#define	R0	%l0
51*0Sstevel@tonic-gate#define	R1	%l1
52*0Sstevel@tonic-gate#define	R2	%l2
53*0Sstevel@tonic-gate#define	R3	%l3
54*0Sstevel@tonic-gate#define	R4	%l4
55*0Sstevel@tonic-gate#define	R5	%l5
56*0Sstevel@tonic-gate#define	R6	%l6
57*0Sstevel@tonic-gate#define	R7	%l7
58*0Sstevel@tonic-gate#define	R8	%i3
59*0Sstevel@tonic-gate#define	R9	%i4
60*0Sstevel@tonic-gate#define	R10	%i5
61*0Sstevel@tonic-gate#define	R11	%g1
62*0Sstevel@tonic-gate#define R12	%g2
63*0Sstevel@tonic-gate#define	R13	%g3
64*0Sstevel@tonic-gate#define RX	%g4
65*0Sstevel@tonic-gate
66*0Sstevel@tonic-gate#define Aptr	%i0+0
67*0Sstevel@tonic-gate#define Bptr	%i0+4
68*0Sstevel@tonic-gate#define Cptr	%i0+8
69*0Sstevel@tonic-gate#define Dptr	%i0+12
70*0Sstevel@tonic-gate
71*0Sstevel@tonic-gate#define Aval	R5	/* those not used at the end of the last round */
72*0Sstevel@tonic-gate#define Bval	R6
73*0Sstevel@tonic-gate#define Cval	R7
74*0Sstevel@tonic-gate#define Dval	R8
75*0Sstevel@tonic-gate
76*0Sstevel@tonic-gate#if defined(MD5_BLOCK_DATA_ORDER)
77*0Sstevel@tonic-gate# if defined(OPENSSL_SYSNAME_ULTRASPARC)
78*0Sstevel@tonic-gate#  define	LOAD			lda
79*0Sstevel@tonic-gate#  define	X(i)			[%i1+i*4]%asi
80*0Sstevel@tonic-gate#  define	md5_block		md5_block_asm_data_order_aligned
81*0Sstevel@tonic-gate#  define	ASI_PRIMARY_LITTLE	0x88
82*0Sstevel@tonic-gate# else
83*0Sstevel@tonic-gate#  error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!"
84*0Sstevel@tonic-gate# endif
85*0Sstevel@tonic-gate#else
86*0Sstevel@tonic-gate# define	LOAD			ld
87*0Sstevel@tonic-gate# define	X(i)			[%i1+i*4]
88*0Sstevel@tonic-gate# define	md5_block		md5_block_asm_host_order
89*0Sstevel@tonic-gate#endif
90*0Sstevel@tonic-gate
91*0Sstevel@tonic-gate.section        ".text",#alloc,#execinstr
92*0Sstevel@tonic-gate
93*0Sstevel@tonic-gate#if defined(__SUNPRO_C) && defined(__sparcv9)
94*0Sstevel@tonic-gate  /* They've said -xarch=v9 at command line */
95*0Sstevel@tonic-gate  .register	%g2,#scratch
96*0Sstevel@tonic-gate  .register	%g3,#scratch
97*0Sstevel@tonic-gate# define	FRAME	-192
98*0Sstevel@tonic-gate#elif defined(__GNUC__) && defined(__arch64__)
99*0Sstevel@tonic-gate  /* They've said -m64 at command line */
100*0Sstevel@tonic-gate  .register     %g2,#scratch
101*0Sstevel@tonic-gate  .register     %g3,#scratch
102*0Sstevel@tonic-gate# define        FRAME   -192
103*0Sstevel@tonic-gate#else
104*0Sstevel@tonic-gate# define	FRAME	-96
105*0Sstevel@tonic-gate#endif
106*0Sstevel@tonic-gate
107*0Sstevel@tonic-gate.align  32
108*0Sstevel@tonic-gate
109*0Sstevel@tonic-gate.global md5_block
110*0Sstevel@tonic-gatemd5_block:
111*0Sstevel@tonic-gate	save	%sp,FRAME,%sp
112*0Sstevel@tonic-gate
113*0Sstevel@tonic-gate	ld	[Dptr],D
114*0Sstevel@tonic-gate	ld	[Cptr],C
115*0Sstevel@tonic-gate	ld	[Bptr],B
116*0Sstevel@tonic-gate	ld	[Aptr],A
117*0Sstevel@tonic-gate#ifdef ASI_PRIMARY_LITTLE
118*0Sstevel@tonic-gate	rd	%asi,%o7	! How dare I? Well, I just do:-)
119*0Sstevel@tonic-gate	wr	%g0,ASI_PRIMARY_LITTLE,%asi
120*0Sstevel@tonic-gate#endif
121*0Sstevel@tonic-gate	LOAD	X(0),R0
122*0Sstevel@tonic-gate
123*0Sstevel@tonic-gate.Lmd5_block_loop:
124*0Sstevel@tonic-gate
125*0Sstevel@tonic-gate!!!!!!!!Round 0
126*0Sstevel@tonic-gate
127*0Sstevel@tonic-gate	xor	C,D,T1
128*0Sstevel@tonic-gate	sethi	%hi(0xd76aa478),T2
129*0Sstevel@tonic-gate	and	T1,B,T1
130*0Sstevel@tonic-gate	or	T2,%lo(0xd76aa478),T2	!=
131*0Sstevel@tonic-gate	xor	T1,D,T1
132*0Sstevel@tonic-gate	add	T1,R0,T1
133*0Sstevel@tonic-gate	LOAD	X(1),R1
134*0Sstevel@tonic-gate	add	T1,T2,T1		!=
135*0Sstevel@tonic-gate	add	A,T1,A
136*0Sstevel@tonic-gate	sll	A,7,T2
137*0Sstevel@tonic-gate	srl	A,32-7,A
138*0Sstevel@tonic-gate	or	A,T2,A			!=
139*0Sstevel@tonic-gate	 xor	 B,C,T1
140*0Sstevel@tonic-gate	add	A,B,A
141*0Sstevel@tonic-gate
142*0Sstevel@tonic-gate	sethi	%hi(0xe8c7b756),T2
143*0Sstevel@tonic-gate	and	T1,A,T1			!=
144*0Sstevel@tonic-gate	or	T2,%lo(0xe8c7b756),T2
145*0Sstevel@tonic-gate	xor	T1,C,T1
146*0Sstevel@tonic-gate	LOAD	X(2),R2
147*0Sstevel@tonic-gate	add	T1,R1,T1		!=
148*0Sstevel@tonic-gate	add	T1,T2,T1
149*0Sstevel@tonic-gate	add	D,T1,D
150*0Sstevel@tonic-gate	sll	D,12,T2
151*0Sstevel@tonic-gate	srl	D,32-12,D		!=
152*0Sstevel@tonic-gate	or	D,T2,D
153*0Sstevel@tonic-gate	 xor	 A,B,T1
154*0Sstevel@tonic-gate	add	D,A,D
155*0Sstevel@tonic-gate
156*0Sstevel@tonic-gate	sethi	%hi(0x242070db),T2	!=
157*0Sstevel@tonic-gate	and	T1,D,T1
158*0Sstevel@tonic-gate	or	T2,%lo(0x242070db),T2
159*0Sstevel@tonic-gate	xor	T1,B,T1
160*0Sstevel@tonic-gate	add	T1,R2,T1		!=
161*0Sstevel@tonic-gate	LOAD	X(3),R3
162*0Sstevel@tonic-gate	add	T1,T2,T1
163*0Sstevel@tonic-gate	add	C,T1,C
164*0Sstevel@tonic-gate	sll	C,17,T2			!=
165*0Sstevel@tonic-gate	srl	C,32-17,C
166*0Sstevel@tonic-gate	or	C,T2,C
167*0Sstevel@tonic-gate	 xor	 D,A,T1
168*0Sstevel@tonic-gate	add	C,D,C			!=
169*0Sstevel@tonic-gate
170*0Sstevel@tonic-gate	sethi	%hi(0xc1bdceee),T2
171*0Sstevel@tonic-gate	and	T1,C,T1
172*0Sstevel@tonic-gate	or	T2,%lo(0xc1bdceee),T2
173*0Sstevel@tonic-gate	xor	T1,A,T1			!=
174*0Sstevel@tonic-gate	add	T1,R3,T1
175*0Sstevel@tonic-gate	LOAD	X(4),R4
176*0Sstevel@tonic-gate	add	T1,T2,T1
177*0Sstevel@tonic-gate	add	B,T1,B			!=
178*0Sstevel@tonic-gate	sll	B,22,T2
179*0Sstevel@tonic-gate	srl	B,32-22,B
180*0Sstevel@tonic-gate	or	B,T2,B
181*0Sstevel@tonic-gate	 xor	 C,D,T1			!=
182*0Sstevel@tonic-gate	add	B,C,B
183*0Sstevel@tonic-gate
184*0Sstevel@tonic-gate	sethi	%hi(0xf57c0faf),T2
185*0Sstevel@tonic-gate	and	T1,B,T1
186*0Sstevel@tonic-gate	or	T2,%lo(0xf57c0faf),T2	!=
187*0Sstevel@tonic-gate	xor	T1,D,T1
188*0Sstevel@tonic-gate	add	T1,R4,T1
189*0Sstevel@tonic-gate	LOAD	X(5),R5
190*0Sstevel@tonic-gate	add	T1,T2,T1		!=
191*0Sstevel@tonic-gate	add	A,T1,A
192*0Sstevel@tonic-gate	sll	A,7,T2
193*0Sstevel@tonic-gate	srl	A,32-7,A
194*0Sstevel@tonic-gate	or	A,T2,A			!=
195*0Sstevel@tonic-gate	 xor	 B,C,T1
196*0Sstevel@tonic-gate	add	A,B,A
197*0Sstevel@tonic-gate
198*0Sstevel@tonic-gate	sethi	%hi(0x4787c62a),T2
199*0Sstevel@tonic-gate	and	T1,A,T1			!=
200*0Sstevel@tonic-gate	or	T2,%lo(0x4787c62a),T2
201*0Sstevel@tonic-gate	xor	T1,C,T1
202*0Sstevel@tonic-gate	LOAD	X(6),R6
203*0Sstevel@tonic-gate	add	T1,R5,T1		!=
204*0Sstevel@tonic-gate	add	T1,T2,T1
205*0Sstevel@tonic-gate	add	D,T1,D
206*0Sstevel@tonic-gate	sll	D,12,T2
207*0Sstevel@tonic-gate	srl	D,32-12,D		!=
208*0Sstevel@tonic-gate	or	D,T2,D
209*0Sstevel@tonic-gate	 xor	 A,B,T1
210*0Sstevel@tonic-gate	add	D,A,D
211*0Sstevel@tonic-gate
212*0Sstevel@tonic-gate	sethi	%hi(0xa8304613),T2	!=
213*0Sstevel@tonic-gate	and	T1,D,T1
214*0Sstevel@tonic-gate	or	T2,%lo(0xa8304613),T2
215*0Sstevel@tonic-gate	xor	T1,B,T1
216*0Sstevel@tonic-gate	add	T1,R6,T1		!=
217*0Sstevel@tonic-gate	LOAD	X(7),R7
218*0Sstevel@tonic-gate	add	T1,T2,T1
219*0Sstevel@tonic-gate	add	C,T1,C
220*0Sstevel@tonic-gate	sll	C,17,T2			!=
221*0Sstevel@tonic-gate	srl	C,32-17,C
222*0Sstevel@tonic-gate	or	C,T2,C
223*0Sstevel@tonic-gate	 xor	 D,A,T1
224*0Sstevel@tonic-gate	add	C,D,C			!=
225*0Sstevel@tonic-gate
226*0Sstevel@tonic-gate	sethi	%hi(0xfd469501),T2
227*0Sstevel@tonic-gate	and	T1,C,T1
228*0Sstevel@tonic-gate	or	T2,%lo(0xfd469501),T2
229*0Sstevel@tonic-gate	xor	T1,A,T1			!=
230*0Sstevel@tonic-gate	add	T1,R7,T1
231*0Sstevel@tonic-gate	LOAD	X(8),R8
232*0Sstevel@tonic-gate	add	T1,T2,T1
233*0Sstevel@tonic-gate	add	B,T1,B			!=
234*0Sstevel@tonic-gate	sll	B,22,T2
235*0Sstevel@tonic-gate	srl	B,32-22,B
236*0Sstevel@tonic-gate	or	B,T2,B
237*0Sstevel@tonic-gate	 xor	 C,D,T1			!=
238*0Sstevel@tonic-gate	add	B,C,B
239*0Sstevel@tonic-gate
240*0Sstevel@tonic-gate	sethi	%hi(0x698098d8),T2
241*0Sstevel@tonic-gate	and	T1,B,T1
242*0Sstevel@tonic-gate	or	T2,%lo(0x698098d8),T2	!=
243*0Sstevel@tonic-gate	xor	T1,D,T1
244*0Sstevel@tonic-gate	add	T1,R8,T1
245*0Sstevel@tonic-gate	LOAD	X(9),R9
246*0Sstevel@tonic-gate	add	T1,T2,T1		!=
247*0Sstevel@tonic-gate	add	A,T1,A
248*0Sstevel@tonic-gate	sll	A,7,T2
249*0Sstevel@tonic-gate	srl	A,32-7,A
250*0Sstevel@tonic-gate	or	A,T2,A			!=
251*0Sstevel@tonic-gate	 xor	 B,C,T1
252*0Sstevel@tonic-gate	add	A,B,A
253*0Sstevel@tonic-gate
254*0Sstevel@tonic-gate	sethi	%hi(0x8b44f7af),T2
255*0Sstevel@tonic-gate	and	T1,A,T1			!=
256*0Sstevel@tonic-gate	or	T2,%lo(0x8b44f7af),T2
257*0Sstevel@tonic-gate	xor	T1,C,T1
258*0Sstevel@tonic-gate	LOAD	X(10),R10
259*0Sstevel@tonic-gate	add	T1,R9,T1		!=
260*0Sstevel@tonic-gate	add	T1,T2,T1
261*0Sstevel@tonic-gate	add	D,T1,D
262*0Sstevel@tonic-gate	sll	D,12,T2
263*0Sstevel@tonic-gate	srl	D,32-12,D		!=
264*0Sstevel@tonic-gate	or	D,T2,D
265*0Sstevel@tonic-gate	 xor	 A,B,T1
266*0Sstevel@tonic-gate	add	D,A,D
267*0Sstevel@tonic-gate
268*0Sstevel@tonic-gate	sethi	%hi(0xffff5bb1),T2	!=
269*0Sstevel@tonic-gate	and	T1,D,T1
270*0Sstevel@tonic-gate	or	T2,%lo(0xffff5bb1),T2
271*0Sstevel@tonic-gate	xor	T1,B,T1
272*0Sstevel@tonic-gate	add	T1,R10,T1		!=
273*0Sstevel@tonic-gate	LOAD	X(11),R11
274*0Sstevel@tonic-gate	add	T1,T2,T1
275*0Sstevel@tonic-gate	add	C,T1,C
276*0Sstevel@tonic-gate	sll	C,17,T2			!=
277*0Sstevel@tonic-gate	srl	C,32-17,C
278*0Sstevel@tonic-gate	or	C,T2,C
279*0Sstevel@tonic-gate	 xor	 D,A,T1
280*0Sstevel@tonic-gate	add	C,D,C			!=
281*0Sstevel@tonic-gate
282*0Sstevel@tonic-gate	sethi	%hi(0x895cd7be),T2
283*0Sstevel@tonic-gate	and	T1,C,T1
284*0Sstevel@tonic-gate	or	T2,%lo(0x895cd7be),T2
285*0Sstevel@tonic-gate	xor	T1,A,T1			!=
286*0Sstevel@tonic-gate	add	T1,R11,T1
287*0Sstevel@tonic-gate	LOAD	X(12),R12
288*0Sstevel@tonic-gate	add	T1,T2,T1
289*0Sstevel@tonic-gate	add	B,T1,B			!=
290*0Sstevel@tonic-gate	sll	B,22,T2
291*0Sstevel@tonic-gate	srl	B,32-22,B
292*0Sstevel@tonic-gate	or	B,T2,B
293*0Sstevel@tonic-gate	 xor	 C,D,T1			!=
294*0Sstevel@tonic-gate	add	B,C,B
295*0Sstevel@tonic-gate
296*0Sstevel@tonic-gate	sethi	%hi(0x6b901122),T2
297*0Sstevel@tonic-gate	and	T1,B,T1
298*0Sstevel@tonic-gate	or	T2,%lo(0x6b901122),T2	!=
299*0Sstevel@tonic-gate	xor	T1,D,T1
300*0Sstevel@tonic-gate	add	T1,R12,T1
301*0Sstevel@tonic-gate	LOAD	X(13),R13
302*0Sstevel@tonic-gate	add	T1,T2,T1		!=
303*0Sstevel@tonic-gate	add	A,T1,A
304*0Sstevel@tonic-gate	sll	A,7,T2
305*0Sstevel@tonic-gate	srl	A,32-7,A
306*0Sstevel@tonic-gate	or	A,T2,A			!=
307*0Sstevel@tonic-gate	 xor	 B,C,T1
308*0Sstevel@tonic-gate	add	A,B,A
309*0Sstevel@tonic-gate
310*0Sstevel@tonic-gate	sethi	%hi(0xfd987193),T2
311*0Sstevel@tonic-gate	and	T1,A,T1			!=
312*0Sstevel@tonic-gate	or	T2,%lo(0xfd987193),T2
313*0Sstevel@tonic-gate	xor	T1,C,T1
314*0Sstevel@tonic-gate	LOAD	X(14),RX
315*0Sstevel@tonic-gate	add	T1,R13,T1		!=
316*0Sstevel@tonic-gate	add	T1,T2,T1
317*0Sstevel@tonic-gate	add	D,T1,D
318*0Sstevel@tonic-gate	sll	D,12,T2
319*0Sstevel@tonic-gate	srl	D,32-12,D		!=
320*0Sstevel@tonic-gate	or	D,T2,D
321*0Sstevel@tonic-gate	 xor	 A,B,T1
322*0Sstevel@tonic-gate	add	D,A,D
323*0Sstevel@tonic-gate
324*0Sstevel@tonic-gate	sethi	%hi(0xa679438e),T2	!=
325*0Sstevel@tonic-gate	and	T1,D,T1
326*0Sstevel@tonic-gate	or	T2,%lo(0xa679438e),T2
327*0Sstevel@tonic-gate	xor	T1,B,T1
328*0Sstevel@tonic-gate	add	T1,RX,T1		!=
329*0Sstevel@tonic-gate	LOAD	X(15),RX
330*0Sstevel@tonic-gate	add	T1,T2,T1
331*0Sstevel@tonic-gate	add	C,T1,C
332*0Sstevel@tonic-gate	sll	C,17,T2			!=
333*0Sstevel@tonic-gate	srl	C,32-17,C
334*0Sstevel@tonic-gate	or	C,T2,C
335*0Sstevel@tonic-gate	 xor	 D,A,T1
336*0Sstevel@tonic-gate	add	C,D,C			!=
337*0Sstevel@tonic-gate
338*0Sstevel@tonic-gate	sethi	%hi(0x49b40821),T2
339*0Sstevel@tonic-gate	and	T1,C,T1
340*0Sstevel@tonic-gate	or	T2,%lo(0x49b40821),T2
341*0Sstevel@tonic-gate	xor	T1,A,T1			!=
342*0Sstevel@tonic-gate	add	T1,RX,T1
343*0Sstevel@tonic-gate	!pre-LOADed	X(1),R1
344*0Sstevel@tonic-gate	add	T1,T2,T1
345*0Sstevel@tonic-gate	add	B,T1,B
346*0Sstevel@tonic-gate	sll	B,22,T2			!=
347*0Sstevel@tonic-gate	srl	B,32-22,B
348*0Sstevel@tonic-gate	or	B,T2,B
349*0Sstevel@tonic-gate	add	B,C,B
350*0Sstevel@tonic-gate
351*0Sstevel@tonic-gate!!!!!!!!Round 1
352*0Sstevel@tonic-gate
353*0Sstevel@tonic-gate	xor	B,C,T1			!=
354*0Sstevel@tonic-gate	sethi	%hi(0xf61e2562),T2
355*0Sstevel@tonic-gate	and	T1,D,T1
356*0Sstevel@tonic-gate	or	T2,%lo(0xf61e2562),T2
357*0Sstevel@tonic-gate	xor	T1,C,T1			!=
358*0Sstevel@tonic-gate	add	T1,R1,T1
359*0Sstevel@tonic-gate	!pre-LOADed	X(6),R6
360*0Sstevel@tonic-gate	add	T1,T2,T1
361*0Sstevel@tonic-gate	add	A,T1,A
362*0Sstevel@tonic-gate	sll	A,5,T2			!=
363*0Sstevel@tonic-gate	srl	A,32-5,A
364*0Sstevel@tonic-gate	or	A,T2,A
365*0Sstevel@tonic-gate	add	A,B,A
366*0Sstevel@tonic-gate
367*0Sstevel@tonic-gate	xor	A,B,T1			!=
368*0Sstevel@tonic-gate	sethi	%hi(0xc040b340),T2
369*0Sstevel@tonic-gate	and	T1,C,T1
370*0Sstevel@tonic-gate	or	T2,%lo(0xc040b340),T2
371*0Sstevel@tonic-gate	xor	T1,B,T1			!=
372*0Sstevel@tonic-gate	add	T1,R6,T1
373*0Sstevel@tonic-gate	!pre-LOADed	X(11),R11
374*0Sstevel@tonic-gate	add	T1,T2,T1
375*0Sstevel@tonic-gate	add	D,T1,D
376*0Sstevel@tonic-gate	sll	D,9,T2			!=
377*0Sstevel@tonic-gate	srl	D,32-9,D
378*0Sstevel@tonic-gate	or	D,T2,D
379*0Sstevel@tonic-gate	add	D,A,D
380*0Sstevel@tonic-gate
381*0Sstevel@tonic-gate	xor	D,A,T1			!=
382*0Sstevel@tonic-gate	sethi	%hi(0x265e5a51),T2
383*0Sstevel@tonic-gate	and	T1,B,T1
384*0Sstevel@tonic-gate	or	T2,%lo(0x265e5a51),T2
385*0Sstevel@tonic-gate	xor	T1,A,T1			!=
386*0Sstevel@tonic-gate	add	T1,R11,T1
387*0Sstevel@tonic-gate	!pre-LOADed	X(0),R0
388*0Sstevel@tonic-gate	add	T1,T2,T1
389*0Sstevel@tonic-gate	add	C,T1,C
390*0Sstevel@tonic-gate	sll	C,14,T2			!=
391*0Sstevel@tonic-gate	srl	C,32-14,C
392*0Sstevel@tonic-gate	or	C,T2,C
393*0Sstevel@tonic-gate	add	C,D,C
394*0Sstevel@tonic-gate
395*0Sstevel@tonic-gate	xor	C,D,T1			!=
396*0Sstevel@tonic-gate	sethi	%hi(0xe9b6c7aa),T2
397*0Sstevel@tonic-gate	and	T1,A,T1
398*0Sstevel@tonic-gate	or	T2,%lo(0xe9b6c7aa),T2
399*0Sstevel@tonic-gate	xor	T1,D,T1			!=
400*0Sstevel@tonic-gate	add	T1,R0,T1
401*0Sstevel@tonic-gate	!pre-LOADed	X(5),R5
402*0Sstevel@tonic-gate	add	T1,T2,T1
403*0Sstevel@tonic-gate	add	B,T1,B
404*0Sstevel@tonic-gate	sll	B,20,T2			!=
405*0Sstevel@tonic-gate	srl	B,32-20,B
406*0Sstevel@tonic-gate	or	B,T2,B
407*0Sstevel@tonic-gate	add	B,C,B
408*0Sstevel@tonic-gate
409*0Sstevel@tonic-gate	xor	B,C,T1			!=
410*0Sstevel@tonic-gate	sethi	%hi(0xd62f105d),T2
411*0Sstevel@tonic-gate	and	T1,D,T1
412*0Sstevel@tonic-gate	or	T2,%lo(0xd62f105d),T2
413*0Sstevel@tonic-gate	xor	T1,C,T1			!=
414*0Sstevel@tonic-gate	add	T1,R5,T1
415*0Sstevel@tonic-gate	!pre-LOADed	X(10),R10
416*0Sstevel@tonic-gate	add	T1,T2,T1
417*0Sstevel@tonic-gate	add	A,T1,A
418*0Sstevel@tonic-gate	sll	A,5,T2			!=
419*0Sstevel@tonic-gate	srl	A,32-5,A
420*0Sstevel@tonic-gate	or	A,T2,A
421*0Sstevel@tonic-gate	add	A,B,A
422*0Sstevel@tonic-gate
423*0Sstevel@tonic-gate	xor	A,B,T1			!=
424*0Sstevel@tonic-gate	sethi	%hi(0x02441453),T2
425*0Sstevel@tonic-gate	and	T1,C,T1
426*0Sstevel@tonic-gate	or	T2,%lo(0x02441453),T2
427*0Sstevel@tonic-gate	xor	T1,B,T1			!=
428*0Sstevel@tonic-gate	add	T1,R10,T1
429*0Sstevel@tonic-gate	LOAD	X(15),RX
430*0Sstevel@tonic-gate	add	T1,T2,T1
431*0Sstevel@tonic-gate	add	D,T1,D			!=
432*0Sstevel@tonic-gate	sll	D,9,T2
433*0Sstevel@tonic-gate	srl	D,32-9,D
434*0Sstevel@tonic-gate	or	D,T2,D
435*0Sstevel@tonic-gate	add	D,A,D			!=
436*0Sstevel@tonic-gate
437*0Sstevel@tonic-gate	xor	D,A,T1
438*0Sstevel@tonic-gate	sethi	%hi(0xd8a1e681),T2
439*0Sstevel@tonic-gate	and	T1,B,T1
440*0Sstevel@tonic-gate	or	T2,%lo(0xd8a1e681),T2	!=
441*0Sstevel@tonic-gate	xor	T1,A,T1
442*0Sstevel@tonic-gate	add	T1,RX,T1
443*0Sstevel@tonic-gate	!pre-LOADed	X(4),R4
444*0Sstevel@tonic-gate	add	T1,T2,T1
445*0Sstevel@tonic-gate	add	C,T1,C			!=
446*0Sstevel@tonic-gate	sll	C,14,T2
447*0Sstevel@tonic-gate	srl	C,32-14,C
448*0Sstevel@tonic-gate	or	C,T2,C
449*0Sstevel@tonic-gate	add	C,D,C			!=
450*0Sstevel@tonic-gate
451*0Sstevel@tonic-gate	xor	C,D,T1
452*0Sstevel@tonic-gate	sethi	%hi(0xe7d3fbc8),T2
453*0Sstevel@tonic-gate	and	T1,A,T1
454*0Sstevel@tonic-gate	or	T2,%lo(0xe7d3fbc8),T2	!=
455*0Sstevel@tonic-gate	xor	T1,D,T1
456*0Sstevel@tonic-gate	add	T1,R4,T1
457*0Sstevel@tonic-gate	!pre-LOADed	X(9),R9
458*0Sstevel@tonic-gate	add	T1,T2,T1
459*0Sstevel@tonic-gate	add	B,T1,B			!=
460*0Sstevel@tonic-gate	sll	B,20,T2
461*0Sstevel@tonic-gate	srl	B,32-20,B
462*0Sstevel@tonic-gate	or	B,T2,B
463*0Sstevel@tonic-gate	add	B,C,B			!=
464*0Sstevel@tonic-gate
465*0Sstevel@tonic-gate	xor	B,C,T1
466*0Sstevel@tonic-gate	sethi	%hi(0x21e1cde6),T2
467*0Sstevel@tonic-gate	and	T1,D,T1
468*0Sstevel@tonic-gate	or	T2,%lo(0x21e1cde6),T2	!=
469*0Sstevel@tonic-gate	xor	T1,C,T1
470*0Sstevel@tonic-gate	add	T1,R9,T1
471*0Sstevel@tonic-gate	LOAD	X(14),RX
472*0Sstevel@tonic-gate	add	T1,T2,T1		!=
473*0Sstevel@tonic-gate	add	A,T1,A
474*0Sstevel@tonic-gate	sll	A,5,T2
475*0Sstevel@tonic-gate	srl	A,32-5,A
476*0Sstevel@tonic-gate	or	A,T2,A			!=
477*0Sstevel@tonic-gate	add	A,B,A
478*0Sstevel@tonic-gate
479*0Sstevel@tonic-gate	xor	A,B,T1
480*0Sstevel@tonic-gate	sethi	%hi(0xc33707d6),T2
481*0Sstevel@tonic-gate	and	T1,C,T1			!=
482*0Sstevel@tonic-gate	or	T2,%lo(0xc33707d6),T2
483*0Sstevel@tonic-gate	xor	T1,B,T1
484*0Sstevel@tonic-gate	add	T1,RX,T1
485*0Sstevel@tonic-gate	!pre-LOADed	X(3),R3
486*0Sstevel@tonic-gate	add	T1,T2,T1		!=
487*0Sstevel@tonic-gate	add	D,T1,D
488*0Sstevel@tonic-gate	sll	D,9,T2
489*0Sstevel@tonic-gate	srl	D,32-9,D
490*0Sstevel@tonic-gate	or	D,T2,D			!=
491*0Sstevel@tonic-gate	add	D,A,D
492*0Sstevel@tonic-gate
493*0Sstevel@tonic-gate	xor	D,A,T1
494*0Sstevel@tonic-gate	sethi	%hi(0xf4d50d87),T2
495*0Sstevel@tonic-gate	and	T1,B,T1			!=
496*0Sstevel@tonic-gate	or	T2,%lo(0xf4d50d87),T2
497*0Sstevel@tonic-gate	xor	T1,A,T1
498*0Sstevel@tonic-gate	add	T1,R3,T1
499*0Sstevel@tonic-gate	!pre-LOADed	X(8),R8
500*0Sstevel@tonic-gate	add	T1,T2,T1		!=
501*0Sstevel@tonic-gate	add	C,T1,C
502*0Sstevel@tonic-gate	sll	C,14,T2
503*0Sstevel@tonic-gate	srl	C,32-14,C
504*0Sstevel@tonic-gate	or	C,T2,C			!=
505*0Sstevel@tonic-gate	add	C,D,C
506*0Sstevel@tonic-gate
507*0Sstevel@tonic-gate	xor	C,D,T1
508*0Sstevel@tonic-gate	sethi	%hi(0x455a14ed),T2
509*0Sstevel@tonic-gate	and	T1,A,T1			!=
510*0Sstevel@tonic-gate	or	T2,%lo(0x455a14ed),T2
511*0Sstevel@tonic-gate	xor	T1,D,T1
512*0Sstevel@tonic-gate	add	T1,R8,T1
513*0Sstevel@tonic-gate	!pre-LOADed	X(13),R13
514*0Sstevel@tonic-gate	add	T1,T2,T1		!=
515*0Sstevel@tonic-gate	add	B,T1,B
516*0Sstevel@tonic-gate	sll	B,20,T2
517*0Sstevel@tonic-gate	srl	B,32-20,B
518*0Sstevel@tonic-gate	or	B,T2,B			!=
519*0Sstevel@tonic-gate	add	B,C,B
520*0Sstevel@tonic-gate
521*0Sstevel@tonic-gate	xor	B,C,T1
522*0Sstevel@tonic-gate	sethi	%hi(0xa9e3e905),T2
523*0Sstevel@tonic-gate	and	T1,D,T1			!=
524*0Sstevel@tonic-gate	or	T2,%lo(0xa9e3e905),T2
525*0Sstevel@tonic-gate	xor	T1,C,T1
526*0Sstevel@tonic-gate	add	T1,R13,T1
527*0Sstevel@tonic-gate	!pre-LOADed	X(2),R2
528*0Sstevel@tonic-gate	add	T1,T2,T1		!=
529*0Sstevel@tonic-gate	add	A,T1,A
530*0Sstevel@tonic-gate	sll	A,5,T2
531*0Sstevel@tonic-gate	srl	A,32-5,A
532*0Sstevel@tonic-gate	or	A,T2,A			!=
533*0Sstevel@tonic-gate	add	A,B,A
534*0Sstevel@tonic-gate
535*0Sstevel@tonic-gate	xor	A,B,T1
536*0Sstevel@tonic-gate	sethi	%hi(0xfcefa3f8),T2
537*0Sstevel@tonic-gate	and	T1,C,T1			!=
538*0Sstevel@tonic-gate	or	T2,%lo(0xfcefa3f8),T2
539*0Sstevel@tonic-gate	xor	T1,B,T1
540*0Sstevel@tonic-gate	add	T1,R2,T1
541*0Sstevel@tonic-gate	!pre-LOADed	X(7),R7
542*0Sstevel@tonic-gate	add	T1,T2,T1		!=
543*0Sstevel@tonic-gate	add	D,T1,D
544*0Sstevel@tonic-gate	sll	D,9,T2
545*0Sstevel@tonic-gate	srl	D,32-9,D
546*0Sstevel@tonic-gate	or	D,T2,D			!=
547*0Sstevel@tonic-gate	add	D,A,D
548*0Sstevel@tonic-gate
549*0Sstevel@tonic-gate	xor	D,A,T1
550*0Sstevel@tonic-gate	sethi	%hi(0x676f02d9),T2
551*0Sstevel@tonic-gate	and	T1,B,T1			!=
552*0Sstevel@tonic-gate	or	T2,%lo(0x676f02d9),T2
553*0Sstevel@tonic-gate	xor	T1,A,T1
554*0Sstevel@tonic-gate	add	T1,R7,T1
555*0Sstevel@tonic-gate	!pre-LOADed	X(12),R12
556*0Sstevel@tonic-gate	add	T1,T2,T1		!=
557*0Sstevel@tonic-gate	add	C,T1,C
558*0Sstevel@tonic-gate	sll	C,14,T2
559*0Sstevel@tonic-gate	srl	C,32-14,C
560*0Sstevel@tonic-gate	or	C,T2,C			!=
561*0Sstevel@tonic-gate	add	C,D,C
562*0Sstevel@tonic-gate
563*0Sstevel@tonic-gate	xor	C,D,T1
564*0Sstevel@tonic-gate	sethi	%hi(0x8d2a4c8a),T2
565*0Sstevel@tonic-gate	and	T1,A,T1			!=
566*0Sstevel@tonic-gate	or	T2,%lo(0x8d2a4c8a),T2
567*0Sstevel@tonic-gate	xor	T1,D,T1
568*0Sstevel@tonic-gate	add	T1,R12,T1
569*0Sstevel@tonic-gate	!pre-LOADed	X(5),R5
570*0Sstevel@tonic-gate	add	T1,T2,T1		!=
571*0Sstevel@tonic-gate	add	B,T1,B
572*0Sstevel@tonic-gate	sll	B,20,T2
573*0Sstevel@tonic-gate	srl	B,32-20,B
574*0Sstevel@tonic-gate	or	B,T2,B			!=
575*0Sstevel@tonic-gate	add	B,C,B
576*0Sstevel@tonic-gate
577*0Sstevel@tonic-gate!!!!!!!!Round 2
578*0Sstevel@tonic-gate
579*0Sstevel@tonic-gate	xor	B,C,T1
580*0Sstevel@tonic-gate	sethi	%hi(0xfffa3942),T2
581*0Sstevel@tonic-gate	xor	T1,D,T1			!=
582*0Sstevel@tonic-gate	or	T2,%lo(0xfffa3942),T2
583*0Sstevel@tonic-gate	add	T1,R5,T1
584*0Sstevel@tonic-gate	!pre-LOADed	X(8),R8
585*0Sstevel@tonic-gate	add	T1,T2,T1
586*0Sstevel@tonic-gate	add	A,T1,A			!=
587*0Sstevel@tonic-gate	sll	A,4,T2
588*0Sstevel@tonic-gate	srl	A,32-4,A
589*0Sstevel@tonic-gate	or	A,T2,A
590*0Sstevel@tonic-gate	add	A,B,A			!=
591*0Sstevel@tonic-gate
592*0Sstevel@tonic-gate	xor	A,B,T1
593*0Sstevel@tonic-gate	sethi	%hi(0x8771f681),T2
594*0Sstevel@tonic-gate	xor	T1,C,T1
595*0Sstevel@tonic-gate	or	T2,%lo(0x8771f681),T2	!=
596*0Sstevel@tonic-gate	add	T1,R8,T1
597*0Sstevel@tonic-gate	!pre-LOADed	X(11),R11
598*0Sstevel@tonic-gate	add	T1,T2,T1
599*0Sstevel@tonic-gate	add	D,T1,D
600*0Sstevel@tonic-gate	sll	D,11,T2			!=
601*0Sstevel@tonic-gate	srl	D,32-11,D
602*0Sstevel@tonic-gate	or	D,T2,D
603*0Sstevel@tonic-gate	add	D,A,D
604*0Sstevel@tonic-gate
605*0Sstevel@tonic-gate	xor	D,A,T1			!=
606*0Sstevel@tonic-gate	sethi	%hi(0x6d9d6122),T2
607*0Sstevel@tonic-gate	xor	T1,B,T1
608*0Sstevel@tonic-gate	or	T2,%lo(0x6d9d6122),T2
609*0Sstevel@tonic-gate	add	T1,R11,T1		!=
610*0Sstevel@tonic-gate	LOAD	X(14),RX
611*0Sstevel@tonic-gate	add	T1,T2,T1
612*0Sstevel@tonic-gate	add	C,T1,C
613*0Sstevel@tonic-gate	sll	C,16,T2			!=
614*0Sstevel@tonic-gate	srl	C,32-16,C
615*0Sstevel@tonic-gate	or	C,T2,C
616*0Sstevel@tonic-gate	add	C,D,C
617*0Sstevel@tonic-gate
618*0Sstevel@tonic-gate	xor	C,D,T1			!=
619*0Sstevel@tonic-gate	sethi	%hi(0xfde5380c),T2
620*0Sstevel@tonic-gate	xor	T1,A,T1
621*0Sstevel@tonic-gate	or	T2,%lo(0xfde5380c),T2
622*0Sstevel@tonic-gate	add	T1,RX,T1		!=
623*0Sstevel@tonic-gate	!pre-LOADed	X(1),R1
624*0Sstevel@tonic-gate	add	T1,T2,T1
625*0Sstevel@tonic-gate	add	B,T1,B
626*0Sstevel@tonic-gate	sll	B,23,T2
627*0Sstevel@tonic-gate	srl	B,32-23,B		!=
628*0Sstevel@tonic-gate	or	B,T2,B
629*0Sstevel@tonic-gate	add	B,C,B
630*0Sstevel@tonic-gate
631*0Sstevel@tonic-gate	xor	B,C,T1
632*0Sstevel@tonic-gate	sethi	%hi(0xa4beea44),T2	!=
633*0Sstevel@tonic-gate	xor	T1,D,T1
634*0Sstevel@tonic-gate	or	T2,%lo(0xa4beea44),T2
635*0Sstevel@tonic-gate	add	T1,R1,T1
636*0Sstevel@tonic-gate	!pre-LOADed	X(4),R4
637*0Sstevel@tonic-gate	add	T1,T2,T1		!=
638*0Sstevel@tonic-gate	add	A,T1,A
639*0Sstevel@tonic-gate	sll	A,4,T2
640*0Sstevel@tonic-gate	srl	A,32-4,A
641*0Sstevel@tonic-gate	or	A,T2,A			!=
642*0Sstevel@tonic-gate	add	A,B,A
643*0Sstevel@tonic-gate
644*0Sstevel@tonic-gate	xor	A,B,T1
645*0Sstevel@tonic-gate	sethi	%hi(0x4bdecfa9),T2
646*0Sstevel@tonic-gate	xor	T1,C,T1			!=
647*0Sstevel@tonic-gate	or	T2,%lo(0x4bdecfa9),T2
648*0Sstevel@tonic-gate	add	T1,R4,T1
649*0Sstevel@tonic-gate	!pre-LOADed	X(7),R7
650*0Sstevel@tonic-gate	add	T1,T2,T1
651*0Sstevel@tonic-gate	add	D,T1,D			!=
652*0Sstevel@tonic-gate	sll	D,11,T2
653*0Sstevel@tonic-gate	srl	D,32-11,D
654*0Sstevel@tonic-gate	or	D,T2,D
655*0Sstevel@tonic-gate	add	D,A,D			!=
656*0Sstevel@tonic-gate
657*0Sstevel@tonic-gate	xor	D,A,T1
658*0Sstevel@tonic-gate	sethi	%hi(0xf6bb4b60),T2
659*0Sstevel@tonic-gate	xor	T1,B,T1
660*0Sstevel@tonic-gate	or	T2,%lo(0xf6bb4b60),T2	!=
661*0Sstevel@tonic-gate	add	T1,R7,T1
662*0Sstevel@tonic-gate	!pre-LOADed	X(10),R10
663*0Sstevel@tonic-gate	add	T1,T2,T1
664*0Sstevel@tonic-gate	add	C,T1,C
665*0Sstevel@tonic-gate	sll	C,16,T2			!=
666*0Sstevel@tonic-gate	srl	C,32-16,C
667*0Sstevel@tonic-gate	or	C,T2,C
668*0Sstevel@tonic-gate	add	C,D,C
669*0Sstevel@tonic-gate
670*0Sstevel@tonic-gate	xor	C,D,T1			!=
671*0Sstevel@tonic-gate	sethi	%hi(0xbebfbc70),T2
672*0Sstevel@tonic-gate	xor	T1,A,T1
673*0Sstevel@tonic-gate	or	T2,%lo(0xbebfbc70),T2
674*0Sstevel@tonic-gate	add	T1,R10,T1		!=
675*0Sstevel@tonic-gate	!pre-LOADed	X(13),R13
676*0Sstevel@tonic-gate	add	T1,T2,T1
677*0Sstevel@tonic-gate	add	B,T1,B
678*0Sstevel@tonic-gate	sll	B,23,T2
679*0Sstevel@tonic-gate	srl	B,32-23,B		!=
680*0Sstevel@tonic-gate	or	B,T2,B
681*0Sstevel@tonic-gate	add	B,C,B
682*0Sstevel@tonic-gate
683*0Sstevel@tonic-gate	xor	B,C,T1
684*0Sstevel@tonic-gate	sethi	%hi(0x289b7ec6),T2	!=
685*0Sstevel@tonic-gate	xor	T1,D,T1
686*0Sstevel@tonic-gate	or	T2,%lo(0x289b7ec6),T2
687*0Sstevel@tonic-gate	add	T1,R13,T1
688*0Sstevel@tonic-gate	!pre-LOADed	X(0),R0
689*0Sstevel@tonic-gate	add	T1,T2,T1		!=
690*0Sstevel@tonic-gate	add	A,T1,A
691*0Sstevel@tonic-gate	sll	A,4,T2
692*0Sstevel@tonic-gate	srl	A,32-4,A
693*0Sstevel@tonic-gate	or	A,T2,A			!=
694*0Sstevel@tonic-gate	add	A,B,A
695*0Sstevel@tonic-gate
696*0Sstevel@tonic-gate	xor	A,B,T1
697*0Sstevel@tonic-gate	sethi	%hi(0xeaa127fa),T2
698*0Sstevel@tonic-gate	xor	T1,C,T1			!=
699*0Sstevel@tonic-gate	or	T2,%lo(0xeaa127fa),T2
700*0Sstevel@tonic-gate	add	T1,R0,T1
701*0Sstevel@tonic-gate	!pre-LOADed	X(3),R3
702*0Sstevel@tonic-gate	add	T1,T2,T1
703*0Sstevel@tonic-gate	add	D,T1,D			!=
704*0Sstevel@tonic-gate	sll	D,11,T2
705*0Sstevel@tonic-gate	srl	D,32-11,D
706*0Sstevel@tonic-gate	or	D,T2,D
707*0Sstevel@tonic-gate	add	D,A,D			!=
708*0Sstevel@tonic-gate
709*0Sstevel@tonic-gate	xor	D,A,T1
710*0Sstevel@tonic-gate	sethi	%hi(0xd4ef3085),T2
711*0Sstevel@tonic-gate	xor	T1,B,T1
712*0Sstevel@tonic-gate	or	T2,%lo(0xd4ef3085),T2	!=
713*0Sstevel@tonic-gate	add	T1,R3,T1
714*0Sstevel@tonic-gate	!pre-LOADed	X(6),R6
715*0Sstevel@tonic-gate	add	T1,T2,T1
716*0Sstevel@tonic-gate	add	C,T1,C
717*0Sstevel@tonic-gate	sll	C,16,T2			!=
718*0Sstevel@tonic-gate	srl	C,32-16,C
719*0Sstevel@tonic-gate	or	C,T2,C
720*0Sstevel@tonic-gate	add	C,D,C
721*0Sstevel@tonic-gate
722*0Sstevel@tonic-gate	xor	C,D,T1			!=
723*0Sstevel@tonic-gate	sethi	%hi(0x04881d05),T2
724*0Sstevel@tonic-gate	xor	T1,A,T1
725*0Sstevel@tonic-gate	or	T2,%lo(0x04881d05),T2
726*0Sstevel@tonic-gate	add	T1,R6,T1		!=
727*0Sstevel@tonic-gate	!pre-LOADed	X(9),R9
728*0Sstevel@tonic-gate	add	T1,T2,T1
729*0Sstevel@tonic-gate	add	B,T1,B
730*0Sstevel@tonic-gate	sll	B,23,T2
731*0Sstevel@tonic-gate	srl	B,32-23,B		!=
732*0Sstevel@tonic-gate	or	B,T2,B
733*0Sstevel@tonic-gate	add	B,C,B
734*0Sstevel@tonic-gate
735*0Sstevel@tonic-gate	xor	B,C,T1
736*0Sstevel@tonic-gate	sethi	%hi(0xd9d4d039),T2	!=
737*0Sstevel@tonic-gate	xor	T1,D,T1
738*0Sstevel@tonic-gate	or	T2,%lo(0xd9d4d039),T2
739*0Sstevel@tonic-gate	add	T1,R9,T1
740*0Sstevel@tonic-gate	!pre-LOADed	X(12),R12
741*0Sstevel@tonic-gate	add	T1,T2,T1		!=
742*0Sstevel@tonic-gate	add	A,T1,A
743*0Sstevel@tonic-gate	sll	A,4,T2
744*0Sstevel@tonic-gate	srl	A,32-4,A
745*0Sstevel@tonic-gate	or	A,T2,A			!=
746*0Sstevel@tonic-gate	add	A,B,A
747*0Sstevel@tonic-gate
748*0Sstevel@tonic-gate	xor	A,B,T1
749*0Sstevel@tonic-gate	sethi	%hi(0xe6db99e5),T2
750*0Sstevel@tonic-gate	xor	T1,C,T1			!=
751*0Sstevel@tonic-gate	or	T2,%lo(0xe6db99e5),T2
752*0Sstevel@tonic-gate	add	T1,R12,T1
753*0Sstevel@tonic-gate	LOAD	X(15),RX
754*0Sstevel@tonic-gate	add	T1,T2,T1		!=
755*0Sstevel@tonic-gate	add	D,T1,D
756*0Sstevel@tonic-gate	sll	D,11,T2
757*0Sstevel@tonic-gate	srl	D,32-11,D
758*0Sstevel@tonic-gate	or	D,T2,D			!=
759*0Sstevel@tonic-gate	add	D,A,D
760*0Sstevel@tonic-gate
761*0Sstevel@tonic-gate	xor	D,A,T1
762*0Sstevel@tonic-gate	sethi	%hi(0x1fa27cf8),T2
763*0Sstevel@tonic-gate	xor	T1,B,T1			!=
764*0Sstevel@tonic-gate	or	T2,%lo(0x1fa27cf8),T2
765*0Sstevel@tonic-gate	add	T1,RX,T1
766*0Sstevel@tonic-gate	!pre-LOADed	X(2),R2
767*0Sstevel@tonic-gate	add	T1,T2,T1
768*0Sstevel@tonic-gate	add	C,T1,C			!=
769*0Sstevel@tonic-gate	sll	C,16,T2
770*0Sstevel@tonic-gate	srl	C,32-16,C
771*0Sstevel@tonic-gate	or	C,T2,C
772*0Sstevel@tonic-gate	add	C,D,C			!=
773*0Sstevel@tonic-gate
774*0Sstevel@tonic-gate	xor	C,D,T1
775*0Sstevel@tonic-gate	sethi	%hi(0xc4ac5665),T2
776*0Sstevel@tonic-gate	xor	T1,A,T1
777*0Sstevel@tonic-gate	or	T2,%lo(0xc4ac5665),T2	!=
778*0Sstevel@tonic-gate	add	T1,R2,T1
779*0Sstevel@tonic-gate	!pre-LOADed	X(0),R0
780*0Sstevel@tonic-gate	add	T1,T2,T1
781*0Sstevel@tonic-gate	add	B,T1,B
782*0Sstevel@tonic-gate	sll	B,23,T2			!=
783*0Sstevel@tonic-gate	srl	B,32-23,B
784*0Sstevel@tonic-gate	or	B,T2,B
785*0Sstevel@tonic-gate	add	B,C,B
786*0Sstevel@tonic-gate
787*0Sstevel@tonic-gate!!!!!!!!Round 3
788*0Sstevel@tonic-gate
789*0Sstevel@tonic-gate	orn	B,D,T1			!=
790*0Sstevel@tonic-gate	sethi	%hi(0xf4292244),T2
791*0Sstevel@tonic-gate	xor	T1,C,T1
792*0Sstevel@tonic-gate	or	T2,%lo(0xf4292244),T2
793*0Sstevel@tonic-gate	add	T1,R0,T1		!=
794*0Sstevel@tonic-gate	!pre-LOADed	X(7),R7
795*0Sstevel@tonic-gate	add	T1,T2,T1
796*0Sstevel@tonic-gate	add	A,T1,A
797*0Sstevel@tonic-gate	sll	A,6,T2
798*0Sstevel@tonic-gate	srl	A,32-6,A		!=
799*0Sstevel@tonic-gate	or	A,T2,A
800*0Sstevel@tonic-gate	add	A,B,A
801*0Sstevel@tonic-gate
802*0Sstevel@tonic-gate	orn	A,C,T1
803*0Sstevel@tonic-gate	sethi	%hi(0x432aff97),T2	!=
804*0Sstevel@tonic-gate	xor	T1,B,T1
805*0Sstevel@tonic-gate	or	T2,%lo(0x432aff97),T2
806*0Sstevel@tonic-gate	LOAD	X(14),RX
807*0Sstevel@tonic-gate	add	T1,R7,T1		!=
808*0Sstevel@tonic-gate	add	T1,T2,T1
809*0Sstevel@tonic-gate	add	D,T1,D
810*0Sstevel@tonic-gate	sll	D,10,T2
811*0Sstevel@tonic-gate	srl	D,32-10,D		!=
812*0Sstevel@tonic-gate	or	D,T2,D
813*0Sstevel@tonic-gate	add	D,A,D
814*0Sstevel@tonic-gate
815*0Sstevel@tonic-gate	orn	D,B,T1
816*0Sstevel@tonic-gate	sethi	%hi(0xab9423a7),T2	!=
817*0Sstevel@tonic-gate	xor	T1,A,T1
818*0Sstevel@tonic-gate	or	T2,%lo(0xab9423a7),T2
819*0Sstevel@tonic-gate	add	T1,RX,T1
820*0Sstevel@tonic-gate	!pre-LOADed	X(5),R5
821*0Sstevel@tonic-gate	add	T1,T2,T1		!=
822*0Sstevel@tonic-gate	add	C,T1,C
823*0Sstevel@tonic-gate	sll	C,15,T2
824*0Sstevel@tonic-gate	srl	C,32-15,C
825*0Sstevel@tonic-gate	or	C,T2,C			!=
826*0Sstevel@tonic-gate	add	C,D,C
827*0Sstevel@tonic-gate
828*0Sstevel@tonic-gate	orn	C,A,T1
829*0Sstevel@tonic-gate	sethi	%hi(0xfc93a039),T2
830*0Sstevel@tonic-gate	xor	T1,D,T1			!=
831*0Sstevel@tonic-gate	or	T2,%lo(0xfc93a039),T2
832*0Sstevel@tonic-gate	add	T1,R5,T1
833*0Sstevel@tonic-gate	!pre-LOADed	X(12),R12
834*0Sstevel@tonic-gate	add	T1,T2,T1
835*0Sstevel@tonic-gate	add	B,T1,B			!=
836*0Sstevel@tonic-gate	sll	B,21,T2
837*0Sstevel@tonic-gate	srl	B,32-21,B
838*0Sstevel@tonic-gate	or	B,T2,B
839*0Sstevel@tonic-gate	add	B,C,B			!=
840*0Sstevel@tonic-gate
841*0Sstevel@tonic-gate	orn	B,D,T1
842*0Sstevel@tonic-gate	sethi	%hi(0x655b59c3),T2
843*0Sstevel@tonic-gate	xor	T1,C,T1
844*0Sstevel@tonic-gate	or	T2,%lo(0x655b59c3),T2	!=
845*0Sstevel@tonic-gate	add	T1,R12,T1
846*0Sstevel@tonic-gate	!pre-LOADed	X(3),R3
847*0Sstevel@tonic-gate	add	T1,T2,T1
848*0Sstevel@tonic-gate	add	A,T1,A
849*0Sstevel@tonic-gate	sll	A,6,T2			!=
850*0Sstevel@tonic-gate	srl	A,32-6,A
851*0Sstevel@tonic-gate	or	A,T2,A
852*0Sstevel@tonic-gate	add	A,B,A
853*0Sstevel@tonic-gate
854*0Sstevel@tonic-gate	orn	A,C,T1			!=
855*0Sstevel@tonic-gate	sethi	%hi(0x8f0ccc92),T2
856*0Sstevel@tonic-gate	xor	T1,B,T1
857*0Sstevel@tonic-gate	or	T2,%lo(0x8f0ccc92),T2
858*0Sstevel@tonic-gate	add	T1,R3,T1		!=
859*0Sstevel@tonic-gate	!pre-LOADed	X(10),R10
860*0Sstevel@tonic-gate	add	T1,T2,T1
861*0Sstevel@tonic-gate	add	D,T1,D
862*0Sstevel@tonic-gate	sll	D,10,T2
863*0Sstevel@tonic-gate	srl	D,32-10,D		!=
864*0Sstevel@tonic-gate	or	D,T2,D
865*0Sstevel@tonic-gate	add	D,A,D
866*0Sstevel@tonic-gate
867*0Sstevel@tonic-gate	orn	D,B,T1
868*0Sstevel@tonic-gate	sethi	%hi(0xffeff47d),T2	!=
869*0Sstevel@tonic-gate	xor	T1,A,T1
870*0Sstevel@tonic-gate	or	T2,%lo(0xffeff47d),T2
871*0Sstevel@tonic-gate	add	T1,R10,T1
872*0Sstevel@tonic-gate	!pre-LOADed	X(1),R1
873*0Sstevel@tonic-gate	add	T1,T2,T1		!=
874*0Sstevel@tonic-gate	add	C,T1,C
875*0Sstevel@tonic-gate	sll	C,15,T2
876*0Sstevel@tonic-gate	srl	C,32-15,C
877*0Sstevel@tonic-gate	or	C,T2,C			!=
878*0Sstevel@tonic-gate	add	C,D,C
879*0Sstevel@tonic-gate
880*0Sstevel@tonic-gate	orn	C,A,T1
881*0Sstevel@tonic-gate	sethi	%hi(0x85845dd1),T2
882*0Sstevel@tonic-gate	xor	T1,D,T1			!=
883*0Sstevel@tonic-gate	or	T2,%lo(0x85845dd1),T2
884*0Sstevel@tonic-gate	add	T1,R1,T1
885*0Sstevel@tonic-gate	!pre-LOADed	X(8),R8
886*0Sstevel@tonic-gate	add	T1,T2,T1
887*0Sstevel@tonic-gate	add	B,T1,B			!=
888*0Sstevel@tonic-gate	sll	B,21,T2
889*0Sstevel@tonic-gate	srl	B,32-21,B
890*0Sstevel@tonic-gate	or	B,T2,B
891*0Sstevel@tonic-gate	add	B,C,B			!=
892*0Sstevel@tonic-gate
893*0Sstevel@tonic-gate	orn	B,D,T1
894*0Sstevel@tonic-gate	sethi	%hi(0x6fa87e4f),T2
895*0Sstevel@tonic-gate	xor	T1,C,T1
896*0Sstevel@tonic-gate	or	T2,%lo(0x6fa87e4f),T2	!=
897*0Sstevel@tonic-gate	add	T1,R8,T1
898*0Sstevel@tonic-gate	LOAD	X(15),RX
899*0Sstevel@tonic-gate	add	T1,T2,T1
900*0Sstevel@tonic-gate	add	A,T1,A			!=
901*0Sstevel@tonic-gate	sll	A,6,T2
902*0Sstevel@tonic-gate	srl	A,32-6,A
903*0Sstevel@tonic-gate	or	A,T2,A
904*0Sstevel@tonic-gate	add	A,B,A			!=
905*0Sstevel@tonic-gate
906*0Sstevel@tonic-gate	orn	A,C,T1
907*0Sstevel@tonic-gate	sethi	%hi(0xfe2ce6e0),T2
908*0Sstevel@tonic-gate	xor	T1,B,T1
909*0Sstevel@tonic-gate	or	T2,%lo(0xfe2ce6e0),T2	!=
910*0Sstevel@tonic-gate	add	T1,RX,T1
911*0Sstevel@tonic-gate	!pre-LOADed	X(6),R6
912*0Sstevel@tonic-gate	add	T1,T2,T1
913*0Sstevel@tonic-gate	add	D,T1,D
914*0Sstevel@tonic-gate	sll	D,10,T2			!=
915*0Sstevel@tonic-gate	srl	D,32-10,D
916*0Sstevel@tonic-gate	or	D,T2,D
917*0Sstevel@tonic-gate	add	D,A,D
918*0Sstevel@tonic-gate
919*0Sstevel@tonic-gate	orn	D,B,T1			!=
920*0Sstevel@tonic-gate	sethi	%hi(0xa3014314),T2
921*0Sstevel@tonic-gate	xor	T1,A,T1
922*0Sstevel@tonic-gate	or	T2,%lo(0xa3014314),T2
923*0Sstevel@tonic-gate	add	T1,R6,T1		!=
924*0Sstevel@tonic-gate	!pre-LOADed	X(13),R13
925*0Sstevel@tonic-gate	add	T1,T2,T1
926*0Sstevel@tonic-gate	add	C,T1,C
927*0Sstevel@tonic-gate	sll	C,15,T2
928*0Sstevel@tonic-gate	srl	C,32-15,C		!=
929*0Sstevel@tonic-gate	or	C,T2,C
930*0Sstevel@tonic-gate	add	C,D,C
931*0Sstevel@tonic-gate
932*0Sstevel@tonic-gate	orn	C,A,T1
933*0Sstevel@tonic-gate	sethi	%hi(0x4e0811a1),T2	!=
934*0Sstevel@tonic-gate	xor	T1,D,T1
935*0Sstevel@tonic-gate	or	T2,%lo(0x4e0811a1),T2
936*0Sstevel@tonic-gate	!pre-LOADed	X(4),R4
937*0Sstevel@tonic-gate	 ld	 [Aptr],Aval
938*0Sstevel@tonic-gate	add	T1,R13,T1		!=
939*0Sstevel@tonic-gate	add	T1,T2,T1
940*0Sstevel@tonic-gate	add	B,T1,B
941*0Sstevel@tonic-gate	sll	B,21,T2
942*0Sstevel@tonic-gate	srl	B,32-21,B		!=
943*0Sstevel@tonic-gate	or	B,T2,B
944*0Sstevel@tonic-gate	add	B,C,B
945*0Sstevel@tonic-gate
946*0Sstevel@tonic-gate	orn	B,D,T1
947*0Sstevel@tonic-gate	sethi	%hi(0xf7537e82),T2	!=
948*0Sstevel@tonic-gate	xor	T1,C,T1
949*0Sstevel@tonic-gate	or	T2,%lo(0xf7537e82),T2
950*0Sstevel@tonic-gate	!pre-LOADed	X(11),R11
951*0Sstevel@tonic-gate	 ld	 [Dptr],Dval
952*0Sstevel@tonic-gate	add	T1,R4,T1		!=
953*0Sstevel@tonic-gate	add	T1,T2,T1
954*0Sstevel@tonic-gate	add	A,T1,A
955*0Sstevel@tonic-gate	sll	A,6,T2
956*0Sstevel@tonic-gate	srl	A,32-6,A		!=
957*0Sstevel@tonic-gate	or	A,T2,A
958*0Sstevel@tonic-gate	add	A,B,A
959*0Sstevel@tonic-gate
960*0Sstevel@tonic-gate	orn	A,C,T1
961*0Sstevel@tonic-gate	sethi	%hi(0xbd3af235),T2	!=
962*0Sstevel@tonic-gate	xor	T1,B,T1
963*0Sstevel@tonic-gate	or	T2,%lo(0xbd3af235),T2
964*0Sstevel@tonic-gate	!pre-LOADed	X(2),R2
965*0Sstevel@tonic-gate	 ld	 [Cptr],Cval
966*0Sstevel@tonic-gate	add	T1,R11,T1		!=
967*0Sstevel@tonic-gate	add	T1,T2,T1
968*0Sstevel@tonic-gate	add	D,T1,D
969*0Sstevel@tonic-gate	sll	D,10,T2
970*0Sstevel@tonic-gate	srl	D,32-10,D		!=
971*0Sstevel@tonic-gate	or	D,T2,D
972*0Sstevel@tonic-gate	add	D,A,D
973*0Sstevel@tonic-gate
974*0Sstevel@tonic-gate	orn	D,B,T1
975*0Sstevel@tonic-gate	sethi	%hi(0x2ad7d2bb),T2	!=
976*0Sstevel@tonic-gate	xor	T1,A,T1
977*0Sstevel@tonic-gate	or	T2,%lo(0x2ad7d2bb),T2
978*0Sstevel@tonic-gate	!pre-LOADed	X(9),R9
979*0Sstevel@tonic-gate	 ld	 [Bptr],Bval
980*0Sstevel@tonic-gate	add	T1,R2,T1		!=
981*0Sstevel@tonic-gate	 add	 Aval,A,Aval
982*0Sstevel@tonic-gate	add	T1,T2,T1
983*0Sstevel@tonic-gate	 st	 Aval,[Aptr]
984*0Sstevel@tonic-gate	add	C,T1,C			!=
985*0Sstevel@tonic-gate	sll	C,15,T2
986*0Sstevel@tonic-gate	 add	 Dval,D,Dval
987*0Sstevel@tonic-gate	srl	C,32-15,C
988*0Sstevel@tonic-gate	or	C,T2,C			!=
989*0Sstevel@tonic-gate	 st	 Dval,[Dptr]
990*0Sstevel@tonic-gate	add	C,D,C
991*0Sstevel@tonic-gate
992*0Sstevel@tonic-gate	orn	C,A,T1
993*0Sstevel@tonic-gate	sethi	%hi(0xeb86d391),T2	!=
994*0Sstevel@tonic-gate	xor	T1,D,T1
995*0Sstevel@tonic-gate	or	T2,%lo(0xeb86d391),T2
996*0Sstevel@tonic-gate	add	T1,R9,T1
997*0Sstevel@tonic-gate	!pre-LOADed	X(0),R0
998*0Sstevel@tonic-gate	 mov	 Aval,A			!=
999*0Sstevel@tonic-gate	add	T1,T2,T1
1000*0Sstevel@tonic-gate	 mov	 Dval,D
1001*0Sstevel@tonic-gate	add	B,T1,B
1002*0Sstevel@tonic-gate	sll	B,21,T2			!=
1003*0Sstevel@tonic-gate	 add	 Cval,C,Cval
1004*0Sstevel@tonic-gate	srl	B,32-21,B
1005*0Sstevel@tonic-gate	 st	 Cval,[Cptr]
1006*0Sstevel@tonic-gate	or	B,T2,B			!=
1007*0Sstevel@tonic-gate	add	B,C,B
1008*0Sstevel@tonic-gate
1009*0Sstevel@tonic-gate	deccc	%i2
1010*0Sstevel@tonic-gate	mov	Cval,C
1011*0Sstevel@tonic-gate	add	B,Bval,B		!=
1012*0Sstevel@tonic-gate	inc	64,%i1
1013*0Sstevel@tonic-gate	nop
1014*0Sstevel@tonic-gate	st	B,[Bptr]
1015*0Sstevel@tonic-gate	nop				!=
1016*0Sstevel@tonic-gate
1017*0Sstevel@tonic-gate#ifdef	OPENSSL_SYSNAME_ULTRASPARC
1018*0Sstevel@tonic-gate	bg,a,pt	%icc,.Lmd5_block_loop
1019*0Sstevel@tonic-gate#else
1020*0Sstevel@tonic-gate	bg,a	.Lmd5_block_loop
1021*0Sstevel@tonic-gate#endif
1022*0Sstevel@tonic-gate	LOAD	X(0),R0
1023*0Sstevel@tonic-gate
1024*0Sstevel@tonic-gate#ifdef ASI_PRIMARY_LITTLE
1025*0Sstevel@tonic-gate	wr	%g0,%o7,%asi
1026*0Sstevel@tonic-gate#endif
1027*0Sstevel@tonic-gate	ret
1028*0Sstevel@tonic-gate	restore	%g0,0,%o0
1029*0Sstevel@tonic-gate
1030*0Sstevel@tonic-gate.type	md5_block,#function
1031*0Sstevel@tonic-gate.size	md5_block,(.-md5_block)
1032