Sync usage with man page.
[netbsd-mini2440.git] / crypto / external / bsd / openssl / lib / libcrypto / arch / sparc64 / sha512-sparcv9.S
blob0ec1d87cc12ae4372546e5888a6a782e8bb22ae8
1 .section        ".text",#alloc,#execinstr
3 .align  64
4 K256:
5 .type   K256,#object
6         .long   0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
7         .long   0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
8         .long   0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
9         .long   0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
10         .long   0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
11         .long   0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
12         .long   0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
13         .long   0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
14         .long   0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
15         .long   0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
16         .long   0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
17         .long   0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
18         .long   0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
19         .long   0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
20         .long   0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
21         .long   0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
22 .size   K256,.-K256
23 .globl  sha256_block_data_order
24 sha256_block_data_order:
25         save    %sp,-112,%sp
26         and     %i1,7,%i4
27         sllx    %i2,6,%i2
28         andn    %i1,7,%i1
29         sll     %i4,3,%i4
30         add     %i1,%i2,%i2
31 .Lpic:  call    .+8
32         sub     %o7,.Lpic-K256,%i3
34         ld      [%i0+0],%l0
35         ld      [%i0+4],%l1
36         ld      [%i0+8],%l2
37         ld      [%i0+12],%l3
38         ld      [%i0+16],%l4
39         ld      [%i0+20],%l5
40         ld      [%i0+24],%l6
41         ld      [%i0+28],%l7
43 .Lloop:
44         ldx     [%i1+0],%o0
45         ldx     [%i1+16],%o2
46         ldx     [%i1+32],%o4
47         ldx     [%i1+48],%g1
48         ldx     [%i1+8],%o1
49         ldx     [%i1+24],%o3
50         subcc   %g0,%i4,%i5 ! should be 64-%i4, but -%i4 works too
51         ldx     [%i1+40],%o5
52         bz,pt   %icc,.Laligned
53         ldx     [%i1+56],%o7
55         sllx    %o0,%i4,%o0
56         ldx     [%i1+64],%g2
57         srlx    %o1,%i5,%g4
58         sllx    %o1,%i4,%o1
59         or      %g4,%o0,%o0
60         srlx    %o2,%i5,%g4
61         sllx    %o2,%i4,%o2
62         or      %g4,%o1,%o1
63         srlx    %o3,%i5,%g4
64         sllx    %o3,%i4,%o3
65         or      %g4,%o2,%o2
66         srlx    %o4,%i5,%g4
67         sllx    %o4,%i4,%o4
68         or      %g4,%o3,%o3
69         srlx    %o5,%i5,%g4
70         sllx    %o5,%i4,%o5
71         or      %g4,%o4,%o4
72         srlx    %g1,%i5,%g4
73         sllx    %g1,%i4,%g1
74         or      %g4,%o5,%o5
75         srlx    %o7,%i5,%g4
76         sllx    %o7,%i4,%o7
77         or      %g4,%g1,%g1
78         srlx    %g2,%i5,%g2
79         or      %g2,%o7,%o7
80 .Laligned:
81         srlx    %o0,32,%g2
82         add     %l7,%g2,%g2
83         srl     %l4,6,%l7       !! 0
84         xor     %l5,%l6,%g5
85         sll     %l4,7,%g4
86         and     %l4,%g5,%g5
87         srl     %l4,11,%g3
88         xor     %g4,%l7,%l7
89         sll     %l4,21,%g4
90         xor     %g3,%l7,%l7
91         srl     %l4,25,%g3
92         xor     %g4,%l7,%l7
93         sll     %l4,26,%g4
94         xor     %g3,%l7,%l7
95         xor     %l6,%g5,%g5             ! Ch(e,f,g)
96         xor     %g4,%l7,%g3             ! Sigma1(e)
98         srl     %l0,2,%l7
99         add     %g5,%g2,%g2
100         ld      [%i3+0],%g5     ! K[0]
101         sll     %l0,10,%g4
102         add     %g3,%g2,%g2
103         srl     %l0,13,%g3
104         xor     %g4,%l7,%l7
105         sll     %l0,19,%g4
106         xor     %g3,%l7,%l7
107         srl     %l0,22,%g3
108         xor     %g4,%l7,%l7     
109         sll     %l0,30,%g4
110         xor     %g3,%l7,%l7
111         xor     %g4,%l7,%l7             ! Sigma0(a)
113         or      %l0,%l1,%g3
114         and     %l0,%l1,%g4
115         and     %l2,%g3,%g3
116         or      %g3,%g4,%g4     ! Maj(a,b,c)
117         add     %g5,%g2,%g2             ! +=K[0]
118         add     %g4,%l7,%l7
120         add     %g2,%l3,%l3
121         add     %g2,%l7,%l7
122         add     %o0,%l6,%g2
123         srl     %l3,6,%l6       !! 1
124         xor     %l4,%l5,%g5
125         sll     %l3,7,%g4
126         and     %l3,%g5,%g5
127         srl     %l3,11,%g3
128         xor     %g4,%l6,%l6
129         sll     %l3,21,%g4
130         xor     %g3,%l6,%l6
131         srl     %l3,25,%g3
132         xor     %g4,%l6,%l6
133         sll     %l3,26,%g4
134         xor     %g3,%l6,%l6
135         xor     %l5,%g5,%g5             ! Ch(e,f,g)
136         xor     %g4,%l6,%g3             ! Sigma1(e)
138         srl     %l7,2,%l6
139         add     %g5,%g2,%g2
140         ld      [%i3+4],%g5     ! K[1]
141         sll     %l7,10,%g4
142         add     %g3,%g2,%g2
143         srl     %l7,13,%g3
144         xor     %g4,%l6,%l6
145         sll     %l7,19,%g4
146         xor     %g3,%l6,%l6
147         srl     %l7,22,%g3
148         xor     %g4,%l6,%l6     
149         sll     %l7,30,%g4
150         xor     %g3,%l6,%l6
151         xor     %g4,%l6,%l6             ! Sigma0(a)
153         or      %l7,%l0,%g3
154         and     %l7,%l0,%g4
155         and     %l1,%g3,%g3
156         or      %g3,%g4,%g4     ! Maj(a,b,c)
157         add     %g5,%g2,%g2             ! +=K[1]
158         add     %g4,%l6,%l6
160         add     %g2,%l2,%l2
161         add     %g2,%l6,%l6
162         srlx    %o1,32,%g2
163         add     %l5,%g2,%g2
164         srl     %l2,6,%l5       !! 2
165         xor     %l3,%l4,%g5
166         sll     %l2,7,%g4
167         and     %l2,%g5,%g5
168         srl     %l2,11,%g3
169         xor     %g4,%l5,%l5
170         sll     %l2,21,%g4
171         xor     %g3,%l5,%l5
172         srl     %l2,25,%g3
173         xor     %g4,%l5,%l5
174         sll     %l2,26,%g4
175         xor     %g3,%l5,%l5
176         xor     %l4,%g5,%g5             ! Ch(e,f,g)
177         xor     %g4,%l5,%g3             ! Sigma1(e)
179         srl     %l6,2,%l5
180         add     %g5,%g2,%g2
181         ld      [%i3+8],%g5     ! K[2]
182         sll     %l6,10,%g4
183         add     %g3,%g2,%g2
184         srl     %l6,13,%g3
185         xor     %g4,%l5,%l5
186         sll     %l6,19,%g4
187         xor     %g3,%l5,%l5
188         srl     %l6,22,%g3
189         xor     %g4,%l5,%l5     
190         sll     %l6,30,%g4
191         xor     %g3,%l5,%l5
192         xor     %g4,%l5,%l5             ! Sigma0(a)
194         or      %l6,%l7,%g3
195         and     %l6,%l7,%g4
196         and     %l0,%g3,%g3
197         or      %g3,%g4,%g4     ! Maj(a,b,c)
198         add     %g5,%g2,%g2             ! +=K[2]
199         add     %g4,%l5,%l5
201         add     %g2,%l1,%l1
202         add     %g2,%l5,%l5
203         add     %o1,%l4,%g2
204         srl     %l1,6,%l4       !! 3
205         xor     %l2,%l3,%g5
206         sll     %l1,7,%g4
207         and     %l1,%g5,%g5
208         srl     %l1,11,%g3
209         xor     %g4,%l4,%l4
210         sll     %l1,21,%g4
211         xor     %g3,%l4,%l4
212         srl     %l1,25,%g3
213         xor     %g4,%l4,%l4
214         sll     %l1,26,%g4
215         xor     %g3,%l4,%l4
216         xor     %l3,%g5,%g5             ! Ch(e,f,g)
217         xor     %g4,%l4,%g3             ! Sigma1(e)
219         srl     %l5,2,%l4
220         add     %g5,%g2,%g2
221         ld      [%i3+12],%g5    ! K[3]
222         sll     %l5,10,%g4
223         add     %g3,%g2,%g2
224         srl     %l5,13,%g3
225         xor     %g4,%l4,%l4
226         sll     %l5,19,%g4
227         xor     %g3,%l4,%l4
228         srl     %l5,22,%g3
229         xor     %g4,%l4,%l4     
230         sll     %l5,30,%g4
231         xor     %g3,%l4,%l4
232         xor     %g4,%l4,%l4             ! Sigma0(a)
234         or      %l5,%l6,%g3
235         and     %l5,%l6,%g4
236         and     %l7,%g3,%g3
237         or      %g3,%g4,%g4     ! Maj(a,b,c)
238         add     %g5,%g2,%g2             ! +=K[3]
239         add     %g4,%l4,%l4
241         add     %g2,%l0,%l0
242         add     %g2,%l4,%l4
243         srlx    %o2,32,%g2
244         add     %l3,%g2,%g2
245         srl     %l0,6,%l3       !! 4
246         xor     %l1,%l2,%g5
247         sll     %l0,7,%g4
248         and     %l0,%g5,%g5
249         srl     %l0,11,%g3
250         xor     %g4,%l3,%l3
251         sll     %l0,21,%g4
252         xor     %g3,%l3,%l3
253         srl     %l0,25,%g3
254         xor     %g4,%l3,%l3
255         sll     %l0,26,%g4
256         xor     %g3,%l3,%l3
257         xor     %l2,%g5,%g5             ! Ch(e,f,g)
258         xor     %g4,%l3,%g3             ! Sigma1(e)
260         srl     %l4,2,%l3
261         add     %g5,%g2,%g2
262         ld      [%i3+16],%g5    ! K[4]
263         sll     %l4,10,%g4
264         add     %g3,%g2,%g2
265         srl     %l4,13,%g3
266         xor     %g4,%l3,%l3
267         sll     %l4,19,%g4
268         xor     %g3,%l3,%l3
269         srl     %l4,22,%g3
270         xor     %g4,%l3,%l3     
271         sll     %l4,30,%g4
272         xor     %g3,%l3,%l3
273         xor     %g4,%l3,%l3             ! Sigma0(a)
275         or      %l4,%l5,%g3
276         and     %l4,%l5,%g4
277         and     %l6,%g3,%g3
278         or      %g3,%g4,%g4     ! Maj(a,b,c)
279         add     %g5,%g2,%g2             ! +=K[4]
280         add     %g4,%l3,%l3
282         add     %g2,%l7,%l7
283         add     %g2,%l3,%l3
284         add     %o2,%l2,%g2
285         srl     %l7,6,%l2       !! 5
286         xor     %l0,%l1,%g5
287         sll     %l7,7,%g4
288         and     %l7,%g5,%g5
289         srl     %l7,11,%g3
290         xor     %g4,%l2,%l2
291         sll     %l7,21,%g4
292         xor     %g3,%l2,%l2
293         srl     %l7,25,%g3
294         xor     %g4,%l2,%l2
295         sll     %l7,26,%g4
296         xor     %g3,%l2,%l2
297         xor     %l1,%g5,%g5             ! Ch(e,f,g)
298         xor     %g4,%l2,%g3             ! Sigma1(e)
300         srl     %l3,2,%l2
301         add     %g5,%g2,%g2
302         ld      [%i3+20],%g5    ! K[5]
303         sll     %l3,10,%g4
304         add     %g3,%g2,%g2
305         srl     %l3,13,%g3
306         xor     %g4,%l2,%l2
307         sll     %l3,19,%g4
308         xor     %g3,%l2,%l2
309         srl     %l3,22,%g3
310         xor     %g4,%l2,%l2     
311         sll     %l3,30,%g4
312         xor     %g3,%l2,%l2
313         xor     %g4,%l2,%l2             ! Sigma0(a)
315         or      %l3,%l4,%g3
316         and     %l3,%l4,%g4
317         and     %l5,%g3,%g3
318         or      %g3,%g4,%g4     ! Maj(a,b,c)
319         add     %g5,%g2,%g2             ! +=K[5]
320         add     %g4,%l2,%l2
322         add     %g2,%l6,%l6
323         add     %g2,%l2,%l2
324         srlx    %o3,32,%g2
325         add     %l1,%g2,%g2
326         srl     %l6,6,%l1       !! 6
327         xor     %l7,%l0,%g5
328         sll     %l6,7,%g4
329         and     %l6,%g5,%g5
330         srl     %l6,11,%g3
331         xor     %g4,%l1,%l1
332         sll     %l6,21,%g4
333         xor     %g3,%l1,%l1
334         srl     %l6,25,%g3
335         xor     %g4,%l1,%l1
336         sll     %l6,26,%g4
337         xor     %g3,%l1,%l1
338         xor     %l0,%g5,%g5             ! Ch(e,f,g)
339         xor     %g4,%l1,%g3             ! Sigma1(e)
341         srl     %l2,2,%l1
342         add     %g5,%g2,%g2
343         ld      [%i3+24],%g5    ! K[6]
344         sll     %l2,10,%g4
345         add     %g3,%g2,%g2
346         srl     %l2,13,%g3
347         xor     %g4,%l1,%l1
348         sll     %l2,19,%g4
349         xor     %g3,%l1,%l1
350         srl     %l2,22,%g3
351         xor     %g4,%l1,%l1     
352         sll     %l2,30,%g4
353         xor     %g3,%l1,%l1
354         xor     %g4,%l1,%l1             ! Sigma0(a)
356         or      %l2,%l3,%g3
357         and     %l2,%l3,%g4
358         and     %l4,%g3,%g3
359         or      %g3,%g4,%g4     ! Maj(a,b,c)
360         add     %g5,%g2,%g2             ! +=K[6]
361         add     %g4,%l1,%l1
363         add     %g2,%l5,%l5
364         add     %g2,%l1,%l1
365         add     %o3,%l0,%g2
366         srl     %l5,6,%l0       !! 7
367         xor     %l6,%l7,%g5
368         sll     %l5,7,%g4
369         and     %l5,%g5,%g5
370         srl     %l5,11,%g3
371         xor     %g4,%l0,%l0
372         sll     %l5,21,%g4
373         xor     %g3,%l0,%l0
374         srl     %l5,25,%g3
375         xor     %g4,%l0,%l0
376         sll     %l5,26,%g4
377         xor     %g3,%l0,%l0
378         xor     %l7,%g5,%g5             ! Ch(e,f,g)
379         xor     %g4,%l0,%g3             ! Sigma1(e)
381         srl     %l1,2,%l0
382         add     %g5,%g2,%g2
383         ld      [%i3+28],%g5    ! K[7]
384         sll     %l1,10,%g4
385         add     %g3,%g2,%g2
386         srl     %l1,13,%g3
387         xor     %g4,%l0,%l0
388         sll     %l1,19,%g4
389         xor     %g3,%l0,%l0
390         srl     %l1,22,%g3
391         xor     %g4,%l0,%l0     
392         sll     %l1,30,%g4
393         xor     %g3,%l0,%l0
394         xor     %g4,%l0,%l0             ! Sigma0(a)
396         or      %l1,%l2,%g3
397         and     %l1,%l2,%g4
398         and     %l3,%g3,%g3
399         or      %g3,%g4,%g4     ! Maj(a,b,c)
400         add     %g5,%g2,%g2             ! +=K[7]
401         add     %g4,%l0,%l0
403         add     %g2,%l4,%l4
404         add     %g2,%l0,%l0
405         srlx    %o4,32,%g2
406         add     %l7,%g2,%g2
407         srl     %l4,6,%l7       !! 8
408         xor     %l5,%l6,%g5
409         sll     %l4,7,%g4
410         and     %l4,%g5,%g5
411         srl     %l4,11,%g3
412         xor     %g4,%l7,%l7
413         sll     %l4,21,%g4
414         xor     %g3,%l7,%l7
415         srl     %l4,25,%g3
416         xor     %g4,%l7,%l7
417         sll     %l4,26,%g4
418         xor     %g3,%l7,%l7
419         xor     %l6,%g5,%g5             ! Ch(e,f,g)
420         xor     %g4,%l7,%g3             ! Sigma1(e)
422         srl     %l0,2,%l7
423         add     %g5,%g2,%g2
424         ld      [%i3+32],%g5    ! K[8]
425         sll     %l0,10,%g4
426         add     %g3,%g2,%g2
427         srl     %l0,13,%g3
428         xor     %g4,%l7,%l7
429         sll     %l0,19,%g4
430         xor     %g3,%l7,%l7
431         srl     %l0,22,%g3
432         xor     %g4,%l7,%l7     
433         sll     %l0,30,%g4
434         xor     %g3,%l7,%l7
435         xor     %g4,%l7,%l7             ! Sigma0(a)
437         or      %l0,%l1,%g3
438         and     %l0,%l1,%g4
439         and     %l2,%g3,%g3
440         or      %g3,%g4,%g4     ! Maj(a,b,c)
441         add     %g5,%g2,%g2             ! +=K[8]
442         add     %g4,%l7,%l7
444         add     %g2,%l3,%l3
445         add     %g2,%l7,%l7
446         add     %o4,%l6,%g2
447         srl     %l3,6,%l6       !! 9
448         xor     %l4,%l5,%g5
449         sll     %l3,7,%g4
450         and     %l3,%g5,%g5
451         srl     %l3,11,%g3
452         xor     %g4,%l6,%l6
453         sll     %l3,21,%g4
454         xor     %g3,%l6,%l6
455         srl     %l3,25,%g3
456         xor     %g4,%l6,%l6
457         sll     %l3,26,%g4
458         xor     %g3,%l6,%l6
459         xor     %l5,%g5,%g5             ! Ch(e,f,g)
460         xor     %g4,%l6,%g3             ! Sigma1(e)
462         srl     %l7,2,%l6
463         add     %g5,%g2,%g2
464         ld      [%i3+36],%g5    ! K[9]
465         sll     %l7,10,%g4
466         add     %g3,%g2,%g2
467         srl     %l7,13,%g3
468         xor     %g4,%l6,%l6
469         sll     %l7,19,%g4
470         xor     %g3,%l6,%l6
471         srl     %l7,22,%g3
472         xor     %g4,%l6,%l6     
473         sll     %l7,30,%g4
474         xor     %g3,%l6,%l6
475         xor     %g4,%l6,%l6             ! Sigma0(a)
477         or      %l7,%l0,%g3
478         and     %l7,%l0,%g4
479         and     %l1,%g3,%g3
480         or      %g3,%g4,%g4     ! Maj(a,b,c)
481         add     %g5,%g2,%g2             ! +=K[9]
482         add     %g4,%l6,%l6
484         add     %g2,%l2,%l2
485         add     %g2,%l6,%l6
486         srlx    %o5,32,%g2
487         add     %l5,%g2,%g2
488         srl     %l2,6,%l5       !! 10
489         xor     %l3,%l4,%g5
490         sll     %l2,7,%g4
491         and     %l2,%g5,%g5
492         srl     %l2,11,%g3
493         xor     %g4,%l5,%l5
494         sll     %l2,21,%g4
495         xor     %g3,%l5,%l5
496         srl     %l2,25,%g3
497         xor     %g4,%l5,%l5
498         sll     %l2,26,%g4
499         xor     %g3,%l5,%l5
500         xor     %l4,%g5,%g5             ! Ch(e,f,g)
501         xor     %g4,%l5,%g3             ! Sigma1(e)
503         srl     %l6,2,%l5
504         add     %g5,%g2,%g2
505         ld      [%i3+40],%g5    ! K[10]
506         sll     %l6,10,%g4
507         add     %g3,%g2,%g2
508         srl     %l6,13,%g3
509         xor     %g4,%l5,%l5
510         sll     %l6,19,%g4
511         xor     %g3,%l5,%l5
512         srl     %l6,22,%g3
513         xor     %g4,%l5,%l5     
514         sll     %l6,30,%g4
515         xor     %g3,%l5,%l5
516         xor     %g4,%l5,%l5             ! Sigma0(a)
518         or      %l6,%l7,%g3
519         and     %l6,%l7,%g4
520         and     %l0,%g3,%g3
521         or      %g3,%g4,%g4     ! Maj(a,b,c)
522         add     %g5,%g2,%g2             ! +=K[10]
523         add     %g4,%l5,%l5
525         add     %g2,%l1,%l1
526         add     %g2,%l5,%l5
527         add     %o5,%l4,%g2
528         srl     %l1,6,%l4       !! 11
529         xor     %l2,%l3,%g5
530         sll     %l1,7,%g4
531         and     %l1,%g5,%g5
532         srl     %l1,11,%g3
533         xor     %g4,%l4,%l4
534         sll     %l1,21,%g4
535         xor     %g3,%l4,%l4
536         srl     %l1,25,%g3
537         xor     %g4,%l4,%l4
538         sll     %l1,26,%g4
539         xor     %g3,%l4,%l4
540         xor     %l3,%g5,%g5             ! Ch(e,f,g)
541         xor     %g4,%l4,%g3             ! Sigma1(e)
543         srl     %l5,2,%l4
544         add     %g5,%g2,%g2
545         ld      [%i3+44],%g5    ! K[11]
546         sll     %l5,10,%g4
547         add     %g3,%g2,%g2
548         srl     %l5,13,%g3
549         xor     %g4,%l4,%l4
550         sll     %l5,19,%g4
551         xor     %g3,%l4,%l4
552         srl     %l5,22,%g3
553         xor     %g4,%l4,%l4     
554         sll     %l5,30,%g4
555         xor     %g3,%l4,%l4
556         xor     %g4,%l4,%l4             ! Sigma0(a)
558         or      %l5,%l6,%g3
559         and     %l5,%l6,%g4
560         and     %l7,%g3,%g3
561         or      %g3,%g4,%g4     ! Maj(a,b,c)
562         add     %g5,%g2,%g2             ! +=K[11]
563         add     %g4,%l4,%l4
565         add     %g2,%l0,%l0
566         add     %g2,%l4,%l4
567         srlx    %g1,32,%g2
568         add     %l3,%g2,%g2
569         srl     %l0,6,%l3       !! 12
570         xor     %l1,%l2,%g5
571         sll     %l0,7,%g4
572         and     %l0,%g5,%g5
573         srl     %l0,11,%g3
574         xor     %g4,%l3,%l3
575         sll     %l0,21,%g4
576         xor     %g3,%l3,%l3
577         srl     %l0,25,%g3
578         xor     %g4,%l3,%l3
579         sll     %l0,26,%g4
580         xor     %g3,%l3,%l3
581         xor     %l2,%g5,%g5             ! Ch(e,f,g)
582         xor     %g4,%l3,%g3             ! Sigma1(e)
584         srl     %l4,2,%l3
585         add     %g5,%g2,%g2
586         ld      [%i3+48],%g5    ! K[12]
587         sll     %l4,10,%g4
588         add     %g3,%g2,%g2
589         srl     %l4,13,%g3
590         xor     %g4,%l3,%l3
591         sll     %l4,19,%g4
592         xor     %g3,%l3,%l3
593         srl     %l4,22,%g3
594         xor     %g4,%l3,%l3     
595         sll     %l4,30,%g4
596         xor     %g3,%l3,%l3
597         xor     %g4,%l3,%l3             ! Sigma0(a)
599         or      %l4,%l5,%g3
600         and     %l4,%l5,%g4
601         and     %l6,%g3,%g3
602         or      %g3,%g4,%g4     ! Maj(a,b,c)
603         add     %g5,%g2,%g2             ! +=K[12]
604         add     %g4,%l3,%l3
606         add     %g2,%l7,%l7
607         add     %g2,%l3,%l3
608         add     %g1,%l2,%g2
609         srl     %l7,6,%l2       !! 13
610         xor     %l0,%l1,%g5
611         sll     %l7,7,%g4
612         and     %l7,%g5,%g5
613         srl     %l7,11,%g3
614         xor     %g4,%l2,%l2
615         sll     %l7,21,%g4
616         xor     %g3,%l2,%l2
617         srl     %l7,25,%g3
618         xor     %g4,%l2,%l2
619         sll     %l7,26,%g4
620         xor     %g3,%l2,%l2
621         xor     %l1,%g5,%g5             ! Ch(e,f,g)
622         xor     %g4,%l2,%g3             ! Sigma1(e)
624         srl     %l3,2,%l2
625         add     %g5,%g2,%g2
626         ld      [%i3+52],%g5    ! K[13]
627         sll     %l3,10,%g4
628         add     %g3,%g2,%g2
629         srl     %l3,13,%g3
630         xor     %g4,%l2,%l2
631         sll     %l3,19,%g4
632         xor     %g3,%l2,%l2
633         srl     %l3,22,%g3
634         xor     %g4,%l2,%l2     
635         sll     %l3,30,%g4
636         xor     %g3,%l2,%l2
637         xor     %g4,%l2,%l2             ! Sigma0(a)
639         or      %l3,%l4,%g3
640         and     %l3,%l4,%g4
641         and     %l5,%g3,%g3
642         or      %g3,%g4,%g4     ! Maj(a,b,c)
643         add     %g5,%g2,%g2             ! +=K[13]
644         add     %g4,%l2,%l2
646         add     %g2,%l6,%l6
647         add     %g2,%l2,%l2
648         srlx    %o7,32,%g2
649         add     %l1,%g2,%g2
650         srl     %l6,6,%l1       !! 14
651         xor     %l7,%l0,%g5
652         sll     %l6,7,%g4
653         and     %l6,%g5,%g5
654         srl     %l6,11,%g3
655         xor     %g4,%l1,%l1
656         sll     %l6,21,%g4
657         xor     %g3,%l1,%l1
658         srl     %l6,25,%g3
659         xor     %g4,%l1,%l1
660         sll     %l6,26,%g4
661         xor     %g3,%l1,%l1
662         xor     %l0,%g5,%g5             ! Ch(e,f,g)
663         xor     %g4,%l1,%g3             ! Sigma1(e)
665         srl     %l2,2,%l1
666         add     %g5,%g2,%g2
667         ld      [%i3+56],%g5    ! K[14]
668         sll     %l2,10,%g4
669         add     %g3,%g2,%g2
670         srl     %l2,13,%g3
671         xor     %g4,%l1,%l1
672         sll     %l2,19,%g4
673         xor     %g3,%l1,%l1
674         srl     %l2,22,%g3
675         xor     %g4,%l1,%l1     
676         sll     %l2,30,%g4
677         xor     %g3,%l1,%l1
678         xor     %g4,%l1,%l1             ! Sigma0(a)
680         or      %l2,%l3,%g3
681         and     %l2,%l3,%g4
682         and     %l4,%g3,%g3
683         or      %g3,%g4,%g4     ! Maj(a,b,c)
684         add     %g5,%g2,%g2             ! +=K[14]
685         add     %g4,%l1,%l1
687         add     %g2,%l5,%l5
688         add     %g2,%l1,%l1
689         add     %o7,%l0,%g2
690         srl     %l5,6,%l0       !! 15
691         xor     %l6,%l7,%g5
692         sll     %l5,7,%g4
693         and     %l5,%g5,%g5
694         srl     %l5,11,%g3
695         xor     %g4,%l0,%l0
696         sll     %l5,21,%g4
697         xor     %g3,%l0,%l0
698         srl     %l5,25,%g3
699         xor     %g4,%l0,%l0
700         sll     %l5,26,%g4
701         xor     %g3,%l0,%l0
702         xor     %l7,%g5,%g5             ! Ch(e,f,g)
703         xor     %g4,%l0,%g3             ! Sigma1(e)
705         srl     %l1,2,%l0
706         add     %g5,%g2,%g2
707         ld      [%i3+60],%g5    ! K[15]
708         sll     %l1,10,%g4
709         add     %g3,%g2,%g2
710         srl     %l1,13,%g3
711         xor     %g4,%l0,%l0
712         sll     %l1,19,%g4
713         xor     %g3,%l0,%l0
714         srl     %l1,22,%g3
715         xor     %g4,%l0,%l0     
716         sll     %l1,30,%g4
717         xor     %g3,%l0,%l0
718         xor     %g4,%l0,%l0             ! Sigma0(a)
720         or      %l1,%l2,%g3
721         and     %l1,%l2,%g4
722         and     %l3,%g3,%g3
723         or      %g3,%g4,%g4     ! Maj(a,b,c)
724         add     %g5,%g2,%g2             ! +=K[15]
725         add     %g4,%l0,%l0
727         add     %g2,%l4,%l4
728         add     %g2,%l0,%l0
729 .L16_xx:
730         srl     %o0,3,%g2               !! Xupdate(16)
731         sll     %o0,14,%g4
732         srl     %o0,7,%g3
733         xor     %g4,%g2,%g2
734         sll     %g4,11,%g4
735         xor     %g3,%g2,%g2
736         srl     %o0,18,%g3
737         xor     %g4,%g2,%g2
738         srlx    %o7,32,%i5
739         srl     %i5,10,%g5
740         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
741         sll     %i5,13,%g4
742         srl     %i5,17,%g3
743         xor     %g4,%g5,%g5
744         sll     %g4,2,%g4
745         xor     %g3,%g5,%g5
746         srl     %i5,19,%g3
747         xor     %g4,%g5,%g5
748         srlx    %o0,32,%g4              ! X[i]
749         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
750         srl     %o0,0,%o0
751         add     %o4,%g2,%g2                     ! +=X[i+9]
752         add     %g5,%g2,%g2
753         add     %g4,%g2,%g2
755         sllx    %g2,32,%g3
756         or      %g3,%o0,%o0
757         add     %l7,%g2,%g2
758         srl     %l4,6,%l7       !! 16
759         xor     %l5,%l6,%g5
760         sll     %l4,7,%g4
761         and     %l4,%g5,%g5
762         srl     %l4,11,%g3
763         xor     %g4,%l7,%l7
764         sll     %l4,21,%g4
765         xor     %g3,%l7,%l7
766         srl     %l4,25,%g3
767         xor     %g4,%l7,%l7
768         sll     %l4,26,%g4
769         xor     %g3,%l7,%l7
770         xor     %l6,%g5,%g5             ! Ch(e,f,g)
771         xor     %g4,%l7,%g3             ! Sigma1(e)
773         srl     %l0,2,%l7
774         add     %g5,%g2,%g2
775         ld      [%i3+64],%g5    ! K[16]
776         sll     %l0,10,%g4
777         add     %g3,%g2,%g2
778         srl     %l0,13,%g3
779         xor     %g4,%l7,%l7
780         sll     %l0,19,%g4
781         xor     %g3,%l7,%l7
782         srl     %l0,22,%g3
783         xor     %g4,%l7,%l7     
784         sll     %l0,30,%g4
785         xor     %g3,%l7,%l7
786         xor     %g4,%l7,%l7             ! Sigma0(a)
788         or      %l0,%l1,%g3
789         and     %l0,%l1,%g4
790         and     %l2,%g3,%g3
791         or      %g3,%g4,%g4     ! Maj(a,b,c)
792         add     %g5,%g2,%g2             ! +=K[16]
793         add     %g4,%l7,%l7
795         add     %g2,%l3,%l3
796         add     %g2,%l7,%l7
797         srlx    %o1,32,%i5
798         srl     %i5,3,%g2               !! Xupdate(17)
799         sll     %i5,14,%g4
800         srl     %i5,7,%g3
801         xor     %g4,%g2,%g2
802         sll     %g4,11,%g4
803         xor     %g3,%g2,%g2
804         srl     %i5,18,%g3
805         xor     %g4,%g2,%g2
806         srl     %o7,10,%g5
807         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
808         sll     %o7,13,%g4
809         srl     %o7,17,%g3
810         xor     %g4,%g5,%g5
811         sll     %g4,2,%g4
812         xor     %g3,%g5,%g5
813         srl     %o7,19,%g3
814         xor     %g4,%g5,%g5
815         srlx    %o5,32,%g4      ! X[i+9]
816         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
817         srl     %o0,0,%g3
818         add     %o0,%g2,%g2                     ! +=X[i]
819         xor     %g3,%o0,%o0
820         add     %g5,%g2,%g2
821         add     %g4,%g2,%g2
823         srl     %g2,0,%g2
824         or      %g2,%o0,%o0
825         add     %l6,%g2,%g2
826         srl     %l3,6,%l6       !! 17
827         xor     %l4,%l5,%g5
828         sll     %l3,7,%g4
829         and     %l3,%g5,%g5
830         srl     %l3,11,%g3
831         xor     %g4,%l6,%l6
832         sll     %l3,21,%g4
833         xor     %g3,%l6,%l6
834         srl     %l3,25,%g3
835         xor     %g4,%l6,%l6
836         sll     %l3,26,%g4
837         xor     %g3,%l6,%l6
838         xor     %l5,%g5,%g5             ! Ch(e,f,g)
839         xor     %g4,%l6,%g3             ! Sigma1(e)
841         srl     %l7,2,%l6
842         add     %g5,%g2,%g2
843         ld      [%i3+68],%g5    ! K[17]
844         sll     %l7,10,%g4
845         add     %g3,%g2,%g2
846         srl     %l7,13,%g3
847         xor     %g4,%l6,%l6
848         sll     %l7,19,%g4
849         xor     %g3,%l6,%l6
850         srl     %l7,22,%g3
851         xor     %g4,%l6,%l6     
852         sll     %l7,30,%g4
853         xor     %g3,%l6,%l6
854         xor     %g4,%l6,%l6             ! Sigma0(a)
856         or      %l7,%l0,%g3
857         and     %l7,%l0,%g4
858         and     %l1,%g3,%g3
859         or      %g3,%g4,%g4     ! Maj(a,b,c)
860         add     %g5,%g2,%g2             ! +=K[17]
861         add     %g4,%l6,%l6
863         add     %g2,%l2,%l2
864         add     %g2,%l6,%l6
865         srl     %o1,3,%g2               !! Xupdate(18)
866         sll     %o1,14,%g4
867         srl     %o1,7,%g3
868         xor     %g4,%g2,%g2
869         sll     %g4,11,%g4
870         xor     %g3,%g2,%g2
871         srl     %o1,18,%g3
872         xor     %g4,%g2,%g2
873         srlx    %o0,32,%i5
874         srl     %i5,10,%g5
875         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
876         sll     %i5,13,%g4
877         srl     %i5,17,%g3
878         xor     %g4,%g5,%g5
879         sll     %g4,2,%g4
880         xor     %g3,%g5,%g5
881         srl     %i5,19,%g3
882         xor     %g4,%g5,%g5
883         srlx    %o1,32,%g4              ! X[i]
884         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
885         srl     %o1,0,%o1
886         add     %o5,%g2,%g2                     ! +=X[i+9]
887         add     %g5,%g2,%g2
888         add     %g4,%g2,%g2
890         sllx    %g2,32,%g3
891         or      %g3,%o1,%o1
892         add     %l5,%g2,%g2
893         srl     %l2,6,%l5       !! 18
894         xor     %l3,%l4,%g5
895         sll     %l2,7,%g4
896         and     %l2,%g5,%g5
897         srl     %l2,11,%g3
898         xor     %g4,%l5,%l5
899         sll     %l2,21,%g4
900         xor     %g3,%l5,%l5
901         srl     %l2,25,%g3
902         xor     %g4,%l5,%l5
903         sll     %l2,26,%g4
904         xor     %g3,%l5,%l5
905         xor     %l4,%g5,%g5             ! Ch(e,f,g)
906         xor     %g4,%l5,%g3             ! Sigma1(e)
908         srl     %l6,2,%l5
909         add     %g5,%g2,%g2
910         ld      [%i3+72],%g5    ! K[18]
911         sll     %l6,10,%g4
912         add     %g3,%g2,%g2
913         srl     %l6,13,%g3
914         xor     %g4,%l5,%l5
915         sll     %l6,19,%g4
916         xor     %g3,%l5,%l5
917         srl     %l6,22,%g3
918         xor     %g4,%l5,%l5     
919         sll     %l6,30,%g4
920         xor     %g3,%l5,%l5
921         xor     %g4,%l5,%l5             ! Sigma0(a)
923         or      %l6,%l7,%g3
924         and     %l6,%l7,%g4
925         and     %l0,%g3,%g3
926         or      %g3,%g4,%g4     ! Maj(a,b,c)
927         add     %g5,%g2,%g2             ! +=K[18]
928         add     %g4,%l5,%l5
930         add     %g2,%l1,%l1
931         add     %g2,%l5,%l5
932         srlx    %o2,32,%i5
933         srl     %i5,3,%g2               !! Xupdate(19)
934         sll     %i5,14,%g4
935         srl     %i5,7,%g3
936         xor     %g4,%g2,%g2
937         sll     %g4,11,%g4
938         xor     %g3,%g2,%g2
939         srl     %i5,18,%g3
940         xor     %g4,%g2,%g2
941         srl     %o0,10,%g5
942         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
943         sll     %o0,13,%g4
944         srl     %o0,17,%g3
945         xor     %g4,%g5,%g5
946         sll     %g4,2,%g4
947         xor     %g3,%g5,%g5
948         srl     %o0,19,%g3
949         xor     %g4,%g5,%g5
950         srlx    %g1,32,%g4      ! X[i+9]
951         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
952         srl     %o1,0,%g3
953         add     %o1,%g2,%g2                     ! +=X[i]
954         xor     %g3,%o1,%o1
955         add     %g5,%g2,%g2
956         add     %g4,%g2,%g2
958         srl     %g2,0,%g2
959         or      %g2,%o1,%o1
960         add     %l4,%g2,%g2
961         srl     %l1,6,%l4       !! 19
962         xor     %l2,%l3,%g5
963         sll     %l1,7,%g4
964         and     %l1,%g5,%g5
965         srl     %l1,11,%g3
966         xor     %g4,%l4,%l4
967         sll     %l1,21,%g4
968         xor     %g3,%l4,%l4
969         srl     %l1,25,%g3
970         xor     %g4,%l4,%l4
971         sll     %l1,26,%g4
972         xor     %g3,%l4,%l4
973         xor     %l3,%g5,%g5             ! Ch(e,f,g)
974         xor     %g4,%l4,%g3             ! Sigma1(e)
976         srl     %l5,2,%l4
977         add     %g5,%g2,%g2
978         ld      [%i3+76],%g5    ! K[19]
979         sll     %l5,10,%g4
980         add     %g3,%g2,%g2
981         srl     %l5,13,%g3
982         xor     %g4,%l4,%l4
983         sll     %l5,19,%g4
984         xor     %g3,%l4,%l4
985         srl     %l5,22,%g3
986         xor     %g4,%l4,%l4     
987         sll     %l5,30,%g4
988         xor     %g3,%l4,%l4
989         xor     %g4,%l4,%l4             ! Sigma0(a)
991         or      %l5,%l6,%g3
992         and     %l5,%l6,%g4
993         and     %l7,%g3,%g3
994         or      %g3,%g4,%g4     ! Maj(a,b,c)
995         add     %g5,%g2,%g2             ! +=K[19]
996         add     %g4,%l4,%l4
998         add     %g2,%l0,%l0
999         add     %g2,%l4,%l4
1000         srl     %o2,3,%g2               !! Xupdate(20)
1001         sll     %o2,14,%g4
1002         srl     %o2,7,%g3
1003         xor     %g4,%g2,%g2
1004         sll     %g4,11,%g4
1005         xor     %g3,%g2,%g2
1006         srl     %o2,18,%g3
1007         xor     %g4,%g2,%g2
1008         srlx    %o1,32,%i5
1009         srl     %i5,10,%g5
1010         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1011         sll     %i5,13,%g4
1012         srl     %i5,17,%g3
1013         xor     %g4,%g5,%g5
1014         sll     %g4,2,%g4
1015         xor     %g3,%g5,%g5
1016         srl     %i5,19,%g3
1017         xor     %g4,%g5,%g5
1018         srlx    %o2,32,%g4              ! X[i]
1019         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1020         srl     %o2,0,%o2
1021         add     %g1,%g2,%g2                     ! +=X[i+9]
1022         add     %g5,%g2,%g2
1023         add     %g4,%g2,%g2
1025         sllx    %g2,32,%g3
1026         or      %g3,%o2,%o2
1027         add     %l3,%g2,%g2
1028         srl     %l0,6,%l3       !! 20
1029         xor     %l1,%l2,%g5
1030         sll     %l0,7,%g4
1031         and     %l0,%g5,%g5
1032         srl     %l0,11,%g3
1033         xor     %g4,%l3,%l3
1034         sll     %l0,21,%g4
1035         xor     %g3,%l3,%l3
1036         srl     %l0,25,%g3
1037         xor     %g4,%l3,%l3
1038         sll     %l0,26,%g4
1039         xor     %g3,%l3,%l3
1040         xor     %l2,%g5,%g5             ! Ch(e,f,g)
1041         xor     %g4,%l3,%g3             ! Sigma1(e)
1043         srl     %l4,2,%l3
1044         add     %g5,%g2,%g2
1045         ld      [%i3+80],%g5    ! K[20]
1046         sll     %l4,10,%g4
1047         add     %g3,%g2,%g2
1048         srl     %l4,13,%g3
1049         xor     %g4,%l3,%l3
1050         sll     %l4,19,%g4
1051         xor     %g3,%l3,%l3
1052         srl     %l4,22,%g3
1053         xor     %g4,%l3,%l3     
1054         sll     %l4,30,%g4
1055         xor     %g3,%l3,%l3
1056         xor     %g4,%l3,%l3             ! Sigma0(a)
1058         or      %l4,%l5,%g3
1059         and     %l4,%l5,%g4
1060         and     %l6,%g3,%g3
1061         or      %g3,%g4,%g4     ! Maj(a,b,c)
1062         add     %g5,%g2,%g2             ! +=K[20]
1063         add     %g4,%l3,%l3
1065         add     %g2,%l7,%l7
1066         add     %g2,%l3,%l3
1067         srlx    %o3,32,%i5
1068         srl     %i5,3,%g2               !! Xupdate(21)
1069         sll     %i5,14,%g4
1070         srl     %i5,7,%g3
1071         xor     %g4,%g2,%g2
1072         sll     %g4,11,%g4
1073         xor     %g3,%g2,%g2
1074         srl     %i5,18,%g3
1075         xor     %g4,%g2,%g2
1076         srl     %o1,10,%g5
1077         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1078         sll     %o1,13,%g4
1079         srl     %o1,17,%g3
1080         xor     %g4,%g5,%g5
1081         sll     %g4,2,%g4
1082         xor     %g3,%g5,%g5
1083         srl     %o1,19,%g3
1084         xor     %g4,%g5,%g5
1085         srlx    %o7,32,%g4      ! X[i+9]
1086         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1087         srl     %o2,0,%g3
1088         add     %o2,%g2,%g2                     ! +=X[i]
1089         xor     %g3,%o2,%o2
1090         add     %g5,%g2,%g2
1091         add     %g4,%g2,%g2
1093         srl     %g2,0,%g2
1094         or      %g2,%o2,%o2
1095         add     %l2,%g2,%g2
1096         srl     %l7,6,%l2       !! 21
1097         xor     %l0,%l1,%g5
1098         sll     %l7,7,%g4
1099         and     %l7,%g5,%g5
1100         srl     %l7,11,%g3
1101         xor     %g4,%l2,%l2
1102         sll     %l7,21,%g4
1103         xor     %g3,%l2,%l2
1104         srl     %l7,25,%g3
1105         xor     %g4,%l2,%l2
1106         sll     %l7,26,%g4
1107         xor     %g3,%l2,%l2
1108         xor     %l1,%g5,%g5             ! Ch(e,f,g)
1109         xor     %g4,%l2,%g3             ! Sigma1(e)
1111         srl     %l3,2,%l2
1112         add     %g5,%g2,%g2
1113         ld      [%i3+84],%g5    ! K[21]
1114         sll     %l3,10,%g4
1115         add     %g3,%g2,%g2
1116         srl     %l3,13,%g3
1117         xor     %g4,%l2,%l2
1118         sll     %l3,19,%g4
1119         xor     %g3,%l2,%l2
1120         srl     %l3,22,%g3
1121         xor     %g4,%l2,%l2     
1122         sll     %l3,30,%g4
1123         xor     %g3,%l2,%l2
1124         xor     %g4,%l2,%l2             ! Sigma0(a)
1126         or      %l3,%l4,%g3
1127         and     %l3,%l4,%g4
1128         and     %l5,%g3,%g3
1129         or      %g3,%g4,%g4     ! Maj(a,b,c)
1130         add     %g5,%g2,%g2             ! +=K[21]
1131         add     %g4,%l2,%l2
1133         add     %g2,%l6,%l6
1134         add     %g2,%l2,%l2
1135         srl     %o3,3,%g2               !! Xupdate(22)
1136         sll     %o3,14,%g4
1137         srl     %o3,7,%g3
1138         xor     %g4,%g2,%g2
1139         sll     %g4,11,%g4
1140         xor     %g3,%g2,%g2
1141         srl     %o3,18,%g3
1142         xor     %g4,%g2,%g2
1143         srlx    %o2,32,%i5
1144         srl     %i5,10,%g5
1145         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1146         sll     %i5,13,%g4
1147         srl     %i5,17,%g3
1148         xor     %g4,%g5,%g5
1149         sll     %g4,2,%g4
1150         xor     %g3,%g5,%g5
1151         srl     %i5,19,%g3
1152         xor     %g4,%g5,%g5
1153         srlx    %o3,32,%g4              ! X[i]
1154         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1155         srl     %o3,0,%o3
1156         add     %o7,%g2,%g2                     ! +=X[i+9]
1157         add     %g5,%g2,%g2
1158         add     %g4,%g2,%g2
1160         sllx    %g2,32,%g3
1161         or      %g3,%o3,%o3
1162         add     %l1,%g2,%g2
1163         srl     %l6,6,%l1       !! 22
1164         xor     %l7,%l0,%g5
1165         sll     %l6,7,%g4
1166         and     %l6,%g5,%g5
1167         srl     %l6,11,%g3
1168         xor     %g4,%l1,%l1
1169         sll     %l6,21,%g4
1170         xor     %g3,%l1,%l1
1171         srl     %l6,25,%g3
1172         xor     %g4,%l1,%l1
1173         sll     %l6,26,%g4
1174         xor     %g3,%l1,%l1
1175         xor     %l0,%g5,%g5             ! Ch(e,f,g)
1176         xor     %g4,%l1,%g3             ! Sigma1(e)
1178         srl     %l2,2,%l1
1179         add     %g5,%g2,%g2
1180         ld      [%i3+88],%g5    ! K[22]
1181         sll     %l2,10,%g4
1182         add     %g3,%g2,%g2
1183         srl     %l2,13,%g3
1184         xor     %g4,%l1,%l1
1185         sll     %l2,19,%g4
1186         xor     %g3,%l1,%l1
1187         srl     %l2,22,%g3
1188         xor     %g4,%l1,%l1     
1189         sll     %l2,30,%g4
1190         xor     %g3,%l1,%l1
1191         xor     %g4,%l1,%l1             ! Sigma0(a)
1193         or      %l2,%l3,%g3
1194         and     %l2,%l3,%g4
1195         and     %l4,%g3,%g3
1196         or      %g3,%g4,%g4     ! Maj(a,b,c)
1197         add     %g5,%g2,%g2             ! +=K[22]
1198         add     %g4,%l1,%l1
1200         add     %g2,%l5,%l5
1201         add     %g2,%l1,%l1
1202         srlx    %o4,32,%i5
1203         srl     %i5,3,%g2               !! Xupdate(23)
1204         sll     %i5,14,%g4
1205         srl     %i5,7,%g3
1206         xor     %g4,%g2,%g2
1207         sll     %g4,11,%g4
1208         xor     %g3,%g2,%g2
1209         srl     %i5,18,%g3
1210         xor     %g4,%g2,%g2
1211         srl     %o2,10,%g5
1212         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1213         sll     %o2,13,%g4
1214         srl     %o2,17,%g3
1215         xor     %g4,%g5,%g5
1216         sll     %g4,2,%g4
1217         xor     %g3,%g5,%g5
1218         srl     %o2,19,%g3
1219         xor     %g4,%g5,%g5
1220         srlx    %o0,32,%g4      ! X[i+9]
1221         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1222         srl     %o3,0,%g3
1223         add     %o3,%g2,%g2                     ! +=X[i]
1224         xor     %g3,%o3,%o3
1225         add     %g5,%g2,%g2
1226         add     %g4,%g2,%g2
1228         srl     %g2,0,%g2
1229         or      %g2,%o3,%o3
1230         add     %l0,%g2,%g2
1231         srl     %l5,6,%l0       !! 23
1232         xor     %l6,%l7,%g5
1233         sll     %l5,7,%g4
1234         and     %l5,%g5,%g5
1235         srl     %l5,11,%g3
1236         xor     %g4,%l0,%l0
1237         sll     %l5,21,%g4
1238         xor     %g3,%l0,%l0
1239         srl     %l5,25,%g3
1240         xor     %g4,%l0,%l0
1241         sll     %l5,26,%g4
1242         xor     %g3,%l0,%l0
1243         xor     %l7,%g5,%g5             ! Ch(e,f,g)
1244         xor     %g4,%l0,%g3             ! Sigma1(e)
1246         srl     %l1,2,%l0
1247         add     %g5,%g2,%g2
1248         ld      [%i3+92],%g5    ! K[23]
1249         sll     %l1,10,%g4
1250         add     %g3,%g2,%g2
1251         srl     %l1,13,%g3
1252         xor     %g4,%l0,%l0
1253         sll     %l1,19,%g4
1254         xor     %g3,%l0,%l0
1255         srl     %l1,22,%g3
1256         xor     %g4,%l0,%l0     
1257         sll     %l1,30,%g4
1258         xor     %g3,%l0,%l0
1259         xor     %g4,%l0,%l0             ! Sigma0(a)
1261         or      %l1,%l2,%g3
1262         and     %l1,%l2,%g4
1263         and     %l3,%g3,%g3
1264         or      %g3,%g4,%g4     ! Maj(a,b,c)
1265         add     %g5,%g2,%g2             ! +=K[23]
1266         add     %g4,%l0,%l0
1268         add     %g2,%l4,%l4
1269         add     %g2,%l0,%l0
1270         srl     %o4,3,%g2               !! Xupdate(24)
1271         sll     %o4,14,%g4
1272         srl     %o4,7,%g3
1273         xor     %g4,%g2,%g2
1274         sll     %g4,11,%g4
1275         xor     %g3,%g2,%g2
1276         srl     %o4,18,%g3
1277         xor     %g4,%g2,%g2
1278         srlx    %o3,32,%i5
1279         srl     %i5,10,%g5
1280         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1281         sll     %i5,13,%g4
1282         srl     %i5,17,%g3
1283         xor     %g4,%g5,%g5
1284         sll     %g4,2,%g4
1285         xor     %g3,%g5,%g5
1286         srl     %i5,19,%g3
1287         xor     %g4,%g5,%g5
1288         srlx    %o4,32,%g4              ! X[i]
1289         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1290         srl     %o4,0,%o4
1291         add     %o0,%g2,%g2                     ! +=X[i+9]
1292         add     %g5,%g2,%g2
1293         add     %g4,%g2,%g2
1295         sllx    %g2,32,%g3
1296         or      %g3,%o4,%o4
1297         add     %l7,%g2,%g2
1298         srl     %l4,6,%l7       !! 24
1299         xor     %l5,%l6,%g5
1300         sll     %l4,7,%g4
1301         and     %l4,%g5,%g5
1302         srl     %l4,11,%g3
1303         xor     %g4,%l7,%l7
1304         sll     %l4,21,%g4
1305         xor     %g3,%l7,%l7
1306         srl     %l4,25,%g3
1307         xor     %g4,%l7,%l7
1308         sll     %l4,26,%g4
1309         xor     %g3,%l7,%l7
1310         xor     %l6,%g5,%g5             ! Ch(e,f,g)
1311         xor     %g4,%l7,%g3             ! Sigma1(e)
1313         srl     %l0,2,%l7
1314         add     %g5,%g2,%g2
1315         ld      [%i3+96],%g5    ! K[24]
1316         sll     %l0,10,%g4
1317         add     %g3,%g2,%g2
1318         srl     %l0,13,%g3
1319         xor     %g4,%l7,%l7
1320         sll     %l0,19,%g4
1321         xor     %g3,%l7,%l7
1322         srl     %l0,22,%g3
1323         xor     %g4,%l7,%l7     
1324         sll     %l0,30,%g4
1325         xor     %g3,%l7,%l7
1326         xor     %g4,%l7,%l7             ! Sigma0(a)
1328         or      %l0,%l1,%g3
1329         and     %l0,%l1,%g4
1330         and     %l2,%g3,%g3
1331         or      %g3,%g4,%g4     ! Maj(a,b,c)
1332         add     %g5,%g2,%g2             ! +=K[24]
1333         add     %g4,%l7,%l7
1335         add     %g2,%l3,%l3
1336         add     %g2,%l7,%l7
1337         srlx    %o5,32,%i5
1338         srl     %i5,3,%g2               !! Xupdate(25)
1339         sll     %i5,14,%g4
1340         srl     %i5,7,%g3
1341         xor     %g4,%g2,%g2
1342         sll     %g4,11,%g4
1343         xor     %g3,%g2,%g2
1344         srl     %i5,18,%g3
1345         xor     %g4,%g2,%g2
1346         srl     %o3,10,%g5
1347         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1348         sll     %o3,13,%g4
1349         srl     %o3,17,%g3
1350         xor     %g4,%g5,%g5
1351         sll     %g4,2,%g4
1352         xor     %g3,%g5,%g5
1353         srl     %o3,19,%g3
1354         xor     %g4,%g5,%g5
1355         srlx    %o1,32,%g4      ! X[i+9]
1356         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1357         srl     %o4,0,%g3
1358         add     %o4,%g2,%g2                     ! +=X[i]
1359         xor     %g3,%o4,%o4
1360         add     %g5,%g2,%g2
1361         add     %g4,%g2,%g2
1363         srl     %g2,0,%g2
1364         or      %g2,%o4,%o4
1365         add     %l6,%g2,%g2
1366         srl     %l3,6,%l6       !! 25
1367         xor     %l4,%l5,%g5
1368         sll     %l3,7,%g4
1369         and     %l3,%g5,%g5
1370         srl     %l3,11,%g3
1371         xor     %g4,%l6,%l6
1372         sll     %l3,21,%g4
1373         xor     %g3,%l6,%l6
1374         srl     %l3,25,%g3
1375         xor     %g4,%l6,%l6
1376         sll     %l3,26,%g4
1377         xor     %g3,%l6,%l6
1378         xor     %l5,%g5,%g5             ! Ch(e,f,g)
1379         xor     %g4,%l6,%g3             ! Sigma1(e)
1381         srl     %l7,2,%l6
1382         add     %g5,%g2,%g2
1383         ld      [%i3+100],%g5   ! K[25]
1384         sll     %l7,10,%g4
1385         add     %g3,%g2,%g2
1386         srl     %l7,13,%g3
1387         xor     %g4,%l6,%l6
1388         sll     %l7,19,%g4
1389         xor     %g3,%l6,%l6
1390         srl     %l7,22,%g3
1391         xor     %g4,%l6,%l6     
1392         sll     %l7,30,%g4
1393         xor     %g3,%l6,%l6
1394         xor     %g4,%l6,%l6             ! Sigma0(a)
1396         or      %l7,%l0,%g3
1397         and     %l7,%l0,%g4
1398         and     %l1,%g3,%g3
1399         or      %g3,%g4,%g4     ! Maj(a,b,c)
1400         add     %g5,%g2,%g2             ! +=K[25]
1401         add     %g4,%l6,%l6
1403         add     %g2,%l2,%l2
1404         add     %g2,%l6,%l6
1405         srl     %o5,3,%g2               !! Xupdate(26)
1406         sll     %o5,14,%g4
1407         srl     %o5,7,%g3
1408         xor     %g4,%g2,%g2
1409         sll     %g4,11,%g4
1410         xor     %g3,%g2,%g2
1411         srl     %o5,18,%g3
1412         xor     %g4,%g2,%g2
1413         srlx    %o4,32,%i5
1414         srl     %i5,10,%g5
1415         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1416         sll     %i5,13,%g4
1417         srl     %i5,17,%g3
1418         xor     %g4,%g5,%g5
1419         sll     %g4,2,%g4
1420         xor     %g3,%g5,%g5
1421         srl     %i5,19,%g3
1422         xor     %g4,%g5,%g5
1423         srlx    %o5,32,%g4              ! X[i]
1424         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1425         srl     %o5,0,%o5
1426         add     %o1,%g2,%g2                     ! +=X[i+9]
1427         add     %g5,%g2,%g2
1428         add     %g4,%g2,%g2
1430         sllx    %g2,32,%g3
1431         or      %g3,%o5,%o5
1432         add     %l5,%g2,%g2
1433         srl     %l2,6,%l5       !! 26
1434         xor     %l3,%l4,%g5
1435         sll     %l2,7,%g4
1436         and     %l2,%g5,%g5
1437         srl     %l2,11,%g3
1438         xor     %g4,%l5,%l5
1439         sll     %l2,21,%g4
1440         xor     %g3,%l5,%l5
1441         srl     %l2,25,%g3
1442         xor     %g4,%l5,%l5
1443         sll     %l2,26,%g4
1444         xor     %g3,%l5,%l5
1445         xor     %l4,%g5,%g5             ! Ch(e,f,g)
1446         xor     %g4,%l5,%g3             ! Sigma1(e)
1448         srl     %l6,2,%l5
1449         add     %g5,%g2,%g2
1450         ld      [%i3+104],%g5   ! K[26]
1451         sll     %l6,10,%g4
1452         add     %g3,%g2,%g2
1453         srl     %l6,13,%g3
1454         xor     %g4,%l5,%l5
1455         sll     %l6,19,%g4
1456         xor     %g3,%l5,%l5
1457         srl     %l6,22,%g3
1458         xor     %g4,%l5,%l5     
1459         sll     %l6,30,%g4
1460         xor     %g3,%l5,%l5
1461         xor     %g4,%l5,%l5             ! Sigma0(a)
1463         or      %l6,%l7,%g3
1464         and     %l6,%l7,%g4
1465         and     %l0,%g3,%g3
1466         or      %g3,%g4,%g4     ! Maj(a,b,c)
1467         add     %g5,%g2,%g2             ! +=K[26]
1468         add     %g4,%l5,%l5
1470         add     %g2,%l1,%l1
1471         add     %g2,%l5,%l5
1472         srlx    %g1,32,%i5
1473         srl     %i5,3,%g2               !! Xupdate(27)
1474         sll     %i5,14,%g4
1475         srl     %i5,7,%g3
1476         xor     %g4,%g2,%g2
1477         sll     %g4,11,%g4
1478         xor     %g3,%g2,%g2
1479         srl     %i5,18,%g3
1480         xor     %g4,%g2,%g2
1481         srl     %o4,10,%g5
1482         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1483         sll     %o4,13,%g4
1484         srl     %o4,17,%g3
1485         xor     %g4,%g5,%g5
1486         sll     %g4,2,%g4
1487         xor     %g3,%g5,%g5
1488         srl     %o4,19,%g3
1489         xor     %g4,%g5,%g5
1490         srlx    %o2,32,%g4      ! X[i+9]
1491         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1492         srl     %o5,0,%g3
1493         add     %o5,%g2,%g2                     ! +=X[i]
1494         xor     %g3,%o5,%o5
1495         add     %g5,%g2,%g2
1496         add     %g4,%g2,%g2
1498         srl     %g2,0,%g2
1499         or      %g2,%o5,%o5
1500         add     %l4,%g2,%g2
1501         srl     %l1,6,%l4       !! 27
1502         xor     %l2,%l3,%g5
1503         sll     %l1,7,%g4
1504         and     %l1,%g5,%g5
1505         srl     %l1,11,%g3
1506         xor     %g4,%l4,%l4
1507         sll     %l1,21,%g4
1508         xor     %g3,%l4,%l4
1509         srl     %l1,25,%g3
1510         xor     %g4,%l4,%l4
1511         sll     %l1,26,%g4
1512         xor     %g3,%l4,%l4
1513         xor     %l3,%g5,%g5             ! Ch(e,f,g)
1514         xor     %g4,%l4,%g3             ! Sigma1(e)
1516         srl     %l5,2,%l4
1517         add     %g5,%g2,%g2
1518         ld      [%i3+108],%g5   ! K[27]
1519         sll     %l5,10,%g4
1520         add     %g3,%g2,%g2
1521         srl     %l5,13,%g3
1522         xor     %g4,%l4,%l4
1523         sll     %l5,19,%g4
1524         xor     %g3,%l4,%l4
1525         srl     %l5,22,%g3
1526         xor     %g4,%l4,%l4     
1527         sll     %l5,30,%g4
1528         xor     %g3,%l4,%l4
1529         xor     %g4,%l4,%l4             ! Sigma0(a)
1531         or      %l5,%l6,%g3
1532         and     %l5,%l6,%g4
1533         and     %l7,%g3,%g3
1534         or      %g3,%g4,%g4     ! Maj(a,b,c)
1535         add     %g5,%g2,%g2             ! +=K[27]
1536         add     %g4,%l4,%l4
1538         add     %g2,%l0,%l0
1539         add     %g2,%l4,%l4
1540         srl     %g1,3,%g2               !! Xupdate(28)
1541         sll     %g1,14,%g4
1542         srl     %g1,7,%g3
1543         xor     %g4,%g2,%g2
1544         sll     %g4,11,%g4
1545         xor     %g3,%g2,%g2
1546         srl     %g1,18,%g3
1547         xor     %g4,%g2,%g2
1548         srlx    %o5,32,%i5
1549         srl     %i5,10,%g5
1550         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1551         sll     %i5,13,%g4
1552         srl     %i5,17,%g3
1553         xor     %g4,%g5,%g5
1554         sll     %g4,2,%g4
1555         xor     %g3,%g5,%g5
1556         srl     %i5,19,%g3
1557         xor     %g4,%g5,%g5
1558         srlx    %g1,32,%g4              ! X[i]
1559         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1560         srl     %g1,0,%g1
1561         add     %o2,%g2,%g2                     ! +=X[i+9]
1562         add     %g5,%g2,%g2
1563         add     %g4,%g2,%g2
1565         sllx    %g2,32,%g3
1566         or      %g3,%g1,%g1
1567         add     %l3,%g2,%g2
1568         srl     %l0,6,%l3       !! 28
1569         xor     %l1,%l2,%g5
1570         sll     %l0,7,%g4
1571         and     %l0,%g5,%g5
1572         srl     %l0,11,%g3
1573         xor     %g4,%l3,%l3
1574         sll     %l0,21,%g4
1575         xor     %g3,%l3,%l3
1576         srl     %l0,25,%g3
1577         xor     %g4,%l3,%l3
1578         sll     %l0,26,%g4
1579         xor     %g3,%l3,%l3
1580         xor     %l2,%g5,%g5             ! Ch(e,f,g)
1581         xor     %g4,%l3,%g3             ! Sigma1(e)
1583         srl     %l4,2,%l3
1584         add     %g5,%g2,%g2
1585         ld      [%i3+112],%g5   ! K[28]
1586         sll     %l4,10,%g4
1587         add     %g3,%g2,%g2
1588         srl     %l4,13,%g3
1589         xor     %g4,%l3,%l3
1590         sll     %l4,19,%g4
1591         xor     %g3,%l3,%l3
1592         srl     %l4,22,%g3
1593         xor     %g4,%l3,%l3     
1594         sll     %l4,30,%g4
1595         xor     %g3,%l3,%l3
1596         xor     %g4,%l3,%l3             ! Sigma0(a)
1598         or      %l4,%l5,%g3
1599         and     %l4,%l5,%g4
1600         and     %l6,%g3,%g3
1601         or      %g3,%g4,%g4     ! Maj(a,b,c)
1602         add     %g5,%g2,%g2             ! +=K[28]
1603         add     %g4,%l3,%l3
1605         add     %g2,%l7,%l7
1606         add     %g2,%l3,%l3
1607         srlx    %o7,32,%i5
1608         srl     %i5,3,%g2               !! Xupdate(29)
1609         sll     %i5,14,%g4
1610         srl     %i5,7,%g3
1611         xor     %g4,%g2,%g2
1612         sll     %g4,11,%g4
1613         xor     %g3,%g2,%g2
1614         srl     %i5,18,%g3
1615         xor     %g4,%g2,%g2
1616         srl     %o5,10,%g5
1617         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1618         sll     %o5,13,%g4
1619         srl     %o5,17,%g3
1620         xor     %g4,%g5,%g5
1621         sll     %g4,2,%g4
1622         xor     %g3,%g5,%g5
1623         srl     %o5,19,%g3
1624         xor     %g4,%g5,%g5
1625         srlx    %o3,32,%g4      ! X[i+9]
1626         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1627         srl     %g1,0,%g3
1628         add     %g1,%g2,%g2                     ! +=X[i]
1629         xor     %g3,%g1,%g1
1630         add     %g5,%g2,%g2
1631         add     %g4,%g2,%g2
1633         srl     %g2,0,%g2
1634         or      %g2,%g1,%g1
1635         add     %l2,%g2,%g2
1636         srl     %l7,6,%l2       !! 29
1637         xor     %l0,%l1,%g5
1638         sll     %l7,7,%g4
1639         and     %l7,%g5,%g5
1640         srl     %l7,11,%g3
1641         xor     %g4,%l2,%l2
1642         sll     %l7,21,%g4
1643         xor     %g3,%l2,%l2
1644         srl     %l7,25,%g3
1645         xor     %g4,%l2,%l2
1646         sll     %l7,26,%g4
1647         xor     %g3,%l2,%l2
1648         xor     %l1,%g5,%g5             ! Ch(e,f,g)
1649         xor     %g4,%l2,%g3             ! Sigma1(e)
1651         srl     %l3,2,%l2
1652         add     %g5,%g2,%g2
1653         ld      [%i3+116],%g5   ! K[29]
1654         sll     %l3,10,%g4
1655         add     %g3,%g2,%g2
1656         srl     %l3,13,%g3
1657         xor     %g4,%l2,%l2
1658         sll     %l3,19,%g4
1659         xor     %g3,%l2,%l2
1660         srl     %l3,22,%g3
1661         xor     %g4,%l2,%l2     
1662         sll     %l3,30,%g4
1663         xor     %g3,%l2,%l2
1664         xor     %g4,%l2,%l2             ! Sigma0(a)
1666         or      %l3,%l4,%g3
1667         and     %l3,%l4,%g4
1668         and     %l5,%g3,%g3
1669         or      %g3,%g4,%g4     ! Maj(a,b,c)
1670         add     %g5,%g2,%g2             ! +=K[29]
1671         add     %g4,%l2,%l2
1673         add     %g2,%l6,%l6
1674         add     %g2,%l2,%l2
1675         srl     %o7,3,%g2               !! Xupdate(30)
1676         sll     %o7,14,%g4
1677         srl     %o7,7,%g3
1678         xor     %g4,%g2,%g2
1679         sll     %g4,11,%g4
1680         xor     %g3,%g2,%g2
1681         srl     %o7,18,%g3
1682         xor     %g4,%g2,%g2
1683         srlx    %g1,32,%i5
1684         srl     %i5,10,%g5
1685         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1686         sll     %i5,13,%g4
1687         srl     %i5,17,%g3
1688         xor     %g4,%g5,%g5
1689         sll     %g4,2,%g4
1690         xor     %g3,%g5,%g5
1691         srl     %i5,19,%g3
1692         xor     %g4,%g5,%g5
1693         srlx    %o7,32,%g4              ! X[i]
1694         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1695         srl     %o7,0,%o7
1696         add     %o3,%g2,%g2                     ! +=X[i+9]
1697         add     %g5,%g2,%g2
1698         add     %g4,%g2,%g2
1700         sllx    %g2,32,%g3
1701         or      %g3,%o7,%o7
1702         add     %l1,%g2,%g2
1703         srl     %l6,6,%l1       !! 30
1704         xor     %l7,%l0,%g5
1705         sll     %l6,7,%g4
1706         and     %l6,%g5,%g5
1707         srl     %l6,11,%g3
1708         xor     %g4,%l1,%l1
1709         sll     %l6,21,%g4
1710         xor     %g3,%l1,%l1
1711         srl     %l6,25,%g3
1712         xor     %g4,%l1,%l1
1713         sll     %l6,26,%g4
1714         xor     %g3,%l1,%l1
1715         xor     %l0,%g5,%g5             ! Ch(e,f,g)
1716         xor     %g4,%l1,%g3             ! Sigma1(e)
1718         srl     %l2,2,%l1
1719         add     %g5,%g2,%g2
1720         ld      [%i3+120],%g5   ! K[30]
1721         sll     %l2,10,%g4
1722         add     %g3,%g2,%g2
1723         srl     %l2,13,%g3
1724         xor     %g4,%l1,%l1
1725         sll     %l2,19,%g4
1726         xor     %g3,%l1,%l1
1727         srl     %l2,22,%g3
1728         xor     %g4,%l1,%l1     
1729         sll     %l2,30,%g4
1730         xor     %g3,%l1,%l1
1731         xor     %g4,%l1,%l1             ! Sigma0(a)
1733         or      %l2,%l3,%g3
1734         and     %l2,%l3,%g4
1735         and     %l4,%g3,%g3
1736         or      %g3,%g4,%g4     ! Maj(a,b,c)
1737         add     %g5,%g2,%g2             ! +=K[30]
1738         add     %g4,%l1,%l1
1740         add     %g2,%l5,%l5
1741         add     %g2,%l1,%l1
1742         srlx    %o0,32,%i5
1743         srl     %i5,3,%g2               !! Xupdate(31)
1744         sll     %i5,14,%g4
1745         srl     %i5,7,%g3
1746         xor     %g4,%g2,%g2
1747         sll     %g4,11,%g4
1748         xor     %g3,%g2,%g2
1749         srl     %i5,18,%g3
1750         xor     %g4,%g2,%g2
1751         srl     %g1,10,%g5
1752         xor     %g3,%g2,%g2                     ! T1=sigma0(X[i+1])
1753         sll     %g1,13,%g4
1754         srl     %g1,17,%g3
1755         xor     %g4,%g5,%g5
1756         sll     %g4,2,%g4
1757         xor     %g3,%g5,%g5
1758         srl     %g1,19,%g3
1759         xor     %g4,%g5,%g5
1760         srlx    %o4,32,%g4      ! X[i+9]
1761         xor     %g3,%g5,%g5             ! sigma1(X[i+14])
1762         srl     %o7,0,%g3
1763         add     %o7,%g2,%g2                     ! +=X[i]
1764         xor     %g3,%o7,%o7
1765         add     %g5,%g2,%g2
1766         add     %g4,%g2,%g2
1768         srl     %g2,0,%g2
1769         or      %g2,%o7,%o7
1770         add     %l0,%g2,%g2
1771         srl     %l5,6,%l0       !! 31
1772         xor     %l6,%l7,%g5
1773         sll     %l5,7,%g4
1774         and     %l5,%g5,%g5
1775         srl     %l5,11,%g3
1776         xor     %g4,%l0,%l0
1777         sll     %l5,21,%g4
1778         xor     %g3,%l0,%l0
1779         srl     %l5,25,%g3
1780         xor     %g4,%l0,%l0
1781         sll     %l5,26,%g4
1782         xor     %g3,%l0,%l0
1783         xor     %l7,%g5,%g5             ! Ch(e,f,g)
1784         xor     %g4,%l0,%g3             ! Sigma1(e)
1786         srl     %l1,2,%l0
1787         add     %g5,%g2,%g2
1788         ld      [%i3+124],%g5   ! K[31]
1789         sll     %l1,10,%g4
1790         add     %g3,%g2,%g2
1791         srl     %l1,13,%g3
1792         xor     %g4,%l0,%l0
1793         sll     %l1,19,%g4
1794         xor     %g3,%l0,%l0
1795         srl     %l1,22,%g3
1796         xor     %g4,%l0,%l0     
1797         sll     %l1,30,%g4
1798         xor     %g3,%l0,%l0
1799         xor     %g4,%l0,%l0             ! Sigma0(a)
1801         or      %l1,%l2,%g3
1802         and     %l1,%l2,%g4
1803         and     %l3,%g3,%g3
1804         or      %g3,%g4,%g4     ! Maj(a,b,c)
1805         add     %g5,%g2,%g2             ! +=K[31]
1806         add     %g4,%l0,%l0
1808         add     %g2,%l4,%l4
1809         add     %g2,%l0,%l0
1810         and     %g5,0xfff,%g5
1811         cmp     %g5,2290
1812         bne     .L16_xx
1813         add     %i3,64,%i3      ! Ktbl+=16
1815         ld      [%i0+0],%o0
1816         ld      [%i0+4],%o1
1817         ld      [%i0+8],%o2
1818         ld      [%i0+12],%o3
1819         ld      [%i0+16],%o4
1820         ld      [%i0+20],%o5
1821         ld      [%i0+24],%g1
1822         ld      [%i0+28],%o7
1824         add     %l0,%o0,%l0
1825         st      %l0,[%i0+0]
1826         add     %l1,%o1,%l1
1827         st      %l1,[%i0+4]
1828         add     %l2,%o2,%l2
1829         st      %l2,[%i0+8]
1830         add     %l3,%o3,%l3
1831         st      %l3,[%i0+12]
1832         add     %l4,%o4,%l4
1833         st      %l4,[%i0+16]
1834         add     %l5,%o5,%l5
1835         st      %l5,[%i0+20]
1836         add     %l6,%g1,%l6
1837         st      %l6,[%i0+24]
1838         add     %l7,%o7,%l7
1839         st      %l7,[%i0+28]
1840         add     %i1,64,%i1              ! advance inp
1841         cmp     %i1,%i2
1842         bne     %icc,.Lloop
1843         sub     %i3,192,%i3     ! rewind Ktbl
1845         ret
1846         restore
1847 .type   sha256_block_data_order,#function
1848 .size   sha256_block_data_order,(.-sha256_block_data_order)
1849 .asciz  "SHA256 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>"