Remove building with NOCRYPTO option
[minix.git] / crypto / external / bsd / openssl / lib / libcrypto / arch / sparc / sha512-sparcv9.S
blob49cbcd60080e32e829aa798c133610fa71b736c5
1 .section        ".text",#alloc,#execinstr
3 .align  64
4 K512:
5 .type   K512,#object
6         .long   0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd
7         .long   0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc
8         .long   0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019
9         .long   0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118
10         .long   0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe
11         .long   0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2
12         .long   0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1
13         .long   0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694
14         .long   0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3
15         .long   0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65
16         .long   0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483
17         .long   0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5
18         .long   0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210
19         .long   0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4
20         .long   0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725
21         .long   0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70
22         .long   0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926
23         .long   0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df
24         .long   0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8
25         .long   0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b
26         .long   0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001
27         .long   0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30
28         .long   0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910
29         .long   0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8
30         .long   0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53
31         .long   0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8
32         .long   0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb
33         .long   0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3
34         .long   0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60
35         .long   0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec
36         .long   0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9
37         .long   0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b
38         .long   0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207
39         .long   0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178
40         .long   0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6
41         .long   0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b
42         .long   0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493
43         .long   0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c
44         .long   0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a
45         .long   0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817
46 .size   K512,.-K512
47 .globl  sha512_block_data_order
48 sha512_block_data_order:
49         save    %sp,-240,%sp
50         and     %i1,3,%i4
51         sllx    %i2,7,%i2
52         andn    %i1,3,%i1
53         sll     %i4,3,%i4
54         add     %i1,%i2,%i2
55         mov     32,%i5
56         sub     %i5,%i4,%i5
57 .Lpic:  call    .+8
58         add     %o7,K512-.Lpic,%i3
60         ldx     [%i0+0],%o0
61         ldx     [%i0+8],%o1
62         ldx     [%i0+16],%o2
63         ldx     [%i0+24],%o3
64         ldx     [%i0+32],%o4
65         ldx     [%i0+40],%o5
66         ldx     [%i0+48],%g1
67         ldx     [%i0+56],%o7
69 .Lloop:
70         ld      [%i1+0],%l0
71         ld      [%i1+4],%l1
72         ld      [%i1+8],%l2
73         ld      [%i1+12],%l3
74         ld      [%i1+16],%l4
75         ld      [%i1+20],%l5
76         ld      [%i1+24],%l6
77         ld      [%i1+28],%l7
78         sllx    %l1,%i4,%g5     ! Xload(0)
79         add     %i4,32,%g3
80         sllx    %l0,%g3,%g4
81         ld      [%i1+32],%l0
82         srlx    %l2,%i5,%l1
83         or      %g4,%g5,%g5
84         or      %l1,%g5,%g5
85         ld      [%i1+36],%l1
86         add     %o7,%g5,%g2
87         stx     %g5,[%sp+112]
88         srlx    %o4,14,%o7      !! 0
89         xor     %o5,%g1,%g5
90         sllx    %o4,23,%g4
91         and     %o4,%g5,%g5
92         srlx    %o4,18,%g3
93         xor     %g4,%o7,%o7
94         sllx    %o4,46,%g4
95         xor     %g3,%o7,%o7
96         srlx    %o4,41,%g3
97         xor     %g4,%o7,%o7
98         sllx    %o4,50,%g4
99         xor     %g3,%o7,%o7
100         xor     %g1,%g5,%g5             ! Ch(e,f,g)
101         xor     %g4,%o7,%g3             ! Sigma1(e)
103         srlx    %o0,28,%o7
104         add     %g5,%g2,%g2
105         ldx     [%i3+0],%g5     ! K[0]
106         sllx    %o0,25,%g4
107         add     %g3,%g2,%g2
108         srlx    %o0,34,%g3
109         xor     %g4,%o7,%o7
110         sllx    %o0,30,%g4
111         xor     %g3,%o7,%o7
112         srlx    %o0,39,%g3
113         xor     %g4,%o7,%o7     
114         sllx    %o0,36,%g4
115         xor     %g3,%o7,%o7
116         xor     %g4,%o7,%o7             ! Sigma0(a)
118         or      %o0,%o1,%g3
119         and     %o0,%o1,%g4
120         and     %o2,%g3,%g3
121         or      %g3,%g4,%g4     ! Maj(a,b,c)
122         add     %g5,%g2,%g2             ! +=K[0]
123         add     %g4,%o7,%o7
125         add     %g2,%o3,%o3
126         add     %g2,%o7,%o7
127         sllx    %l3,%i4,%g5     ! Xload(1)
128         add     %i4,32,%g3
129         sllx    %l2,%g3,%g4
130         ld      [%i1+40],%l2
131         srlx    %l4,%i5,%l3
132         or      %g4,%g5,%g5
133         or      %l3,%g5,%g5
134         ld      [%i1+44],%l3
135         add     %g1,%g5,%g2
136         stx     %g5,[%sp+120]
137         srlx    %o3,14,%g1      !! 1
138         xor     %o4,%o5,%g5
139         sllx    %o3,23,%g4
140         and     %o3,%g5,%g5
141         srlx    %o3,18,%g3
142         xor     %g4,%g1,%g1
143         sllx    %o3,46,%g4
144         xor     %g3,%g1,%g1
145         srlx    %o3,41,%g3
146         xor     %g4,%g1,%g1
147         sllx    %o3,50,%g4
148         xor     %g3,%g1,%g1
149         xor     %o5,%g5,%g5             ! Ch(e,f,g)
150         xor     %g4,%g1,%g3             ! Sigma1(e)
152         srlx    %o7,28,%g1
153         add     %g5,%g2,%g2
154         ldx     [%i3+8],%g5     ! K[1]
155         sllx    %o7,25,%g4
156         add     %g3,%g2,%g2
157         srlx    %o7,34,%g3
158         xor     %g4,%g1,%g1
159         sllx    %o7,30,%g4
160         xor     %g3,%g1,%g1
161         srlx    %o7,39,%g3
162         xor     %g4,%g1,%g1     
163         sllx    %o7,36,%g4
164         xor     %g3,%g1,%g1
165         xor     %g4,%g1,%g1             ! Sigma0(a)
167         or      %o7,%o0,%g3
168         and     %o7,%o0,%g4
169         and     %o1,%g3,%g3
170         or      %g3,%g4,%g4     ! Maj(a,b,c)
171         add     %g5,%g2,%g2             ! +=K[1]
172         add     %g4,%g1,%g1
174         add     %g2,%o2,%o2
175         add     %g2,%g1,%g1
176         sllx    %l5,%i4,%g5     ! Xload(2)
177         add     %i4,32,%g3
178         sllx    %l4,%g3,%g4
179         ld      [%i1+48],%l4
180         srlx    %l6,%i5,%l5
181         or      %g4,%g5,%g5
182         or      %l5,%g5,%g5
183         ld      [%i1+52],%l5
184         add     %o5,%g5,%g2
185         stx     %g5,[%sp+128]
186         srlx    %o2,14,%o5      !! 2
187         xor     %o3,%o4,%g5
188         sllx    %o2,23,%g4
189         and     %o2,%g5,%g5
190         srlx    %o2,18,%g3
191         xor     %g4,%o5,%o5
192         sllx    %o2,46,%g4
193         xor     %g3,%o5,%o5
194         srlx    %o2,41,%g3
195         xor     %g4,%o5,%o5
196         sllx    %o2,50,%g4
197         xor     %g3,%o5,%o5
198         xor     %o4,%g5,%g5             ! Ch(e,f,g)
199         xor     %g4,%o5,%g3             ! Sigma1(e)
201         srlx    %g1,28,%o5
202         add     %g5,%g2,%g2
203         ldx     [%i3+16],%g5    ! K[2]
204         sllx    %g1,25,%g4
205         add     %g3,%g2,%g2
206         srlx    %g1,34,%g3
207         xor     %g4,%o5,%o5
208         sllx    %g1,30,%g4
209         xor     %g3,%o5,%o5
210         srlx    %g1,39,%g3
211         xor     %g4,%o5,%o5     
212         sllx    %g1,36,%g4
213         xor     %g3,%o5,%o5
214         xor     %g4,%o5,%o5             ! Sigma0(a)
216         or      %g1,%o7,%g3
217         and     %g1,%o7,%g4
218         and     %o0,%g3,%g3
219         or      %g3,%g4,%g4     ! Maj(a,b,c)
220         add     %g5,%g2,%g2             ! +=K[2]
221         add     %g4,%o5,%o5
223         add     %g2,%o1,%o1
224         add     %g2,%o5,%o5
225         sllx    %l7,%i4,%g5     ! Xload(3)
226         add     %i4,32,%g3
227         sllx    %l6,%g3,%g4
228         ld      [%i1+56],%l6
229         srlx    %l0,%i5,%l7
230         or      %g4,%g5,%g5
231         or      %l7,%g5,%g5
232         ld      [%i1+60],%l7
233         add     %o4,%g5,%g2
234         stx     %g5,[%sp+136]
235         srlx    %o1,14,%o4      !! 3
236         xor     %o2,%o3,%g5
237         sllx    %o1,23,%g4
238         and     %o1,%g5,%g5
239         srlx    %o1,18,%g3
240         xor     %g4,%o4,%o4
241         sllx    %o1,46,%g4
242         xor     %g3,%o4,%o4
243         srlx    %o1,41,%g3
244         xor     %g4,%o4,%o4
245         sllx    %o1,50,%g4
246         xor     %g3,%o4,%o4
247         xor     %o3,%g5,%g5             ! Ch(e,f,g)
248         xor     %g4,%o4,%g3             ! Sigma1(e)
250         srlx    %o5,28,%o4
251         add     %g5,%g2,%g2
252         ldx     [%i3+24],%g5    ! K[3]
253         sllx    %o5,25,%g4
254         add     %g3,%g2,%g2
255         srlx    %o5,34,%g3
256         xor     %g4,%o4,%o4
257         sllx    %o5,30,%g4
258         xor     %g3,%o4,%o4
259         srlx    %o5,39,%g3
260         xor     %g4,%o4,%o4     
261         sllx    %o5,36,%g4
262         xor     %g3,%o4,%o4
263         xor     %g4,%o4,%o4             ! Sigma0(a)
265         or      %o5,%g1,%g3
266         and     %o5,%g1,%g4
267         and     %o7,%g3,%g3
268         or      %g3,%g4,%g4     ! Maj(a,b,c)
269         add     %g5,%g2,%g2             ! +=K[3]
270         add     %g4,%o4,%o4
272         add     %g2,%o0,%o0
273         add     %g2,%o4,%o4
274         sllx    %l1,%i4,%g5     ! Xload(4)
275         add     %i4,32,%g3
276         sllx    %l0,%g3,%g4
277         ld      [%i1+64],%l0
278         srlx    %l2,%i5,%l1
279         or      %g4,%g5,%g5
280         or      %l1,%g5,%g5
281         ld      [%i1+68],%l1
282         add     %o3,%g5,%g2
283         stx     %g5,[%sp+144]
284         srlx    %o0,14,%o3      !! 4
285         xor     %o1,%o2,%g5
286         sllx    %o0,23,%g4
287         and     %o0,%g5,%g5
288         srlx    %o0,18,%g3
289         xor     %g4,%o3,%o3
290         sllx    %o0,46,%g4
291         xor     %g3,%o3,%o3
292         srlx    %o0,41,%g3
293         xor     %g4,%o3,%o3
294         sllx    %o0,50,%g4
295         xor     %g3,%o3,%o3
296         xor     %o2,%g5,%g5             ! Ch(e,f,g)
297         xor     %g4,%o3,%g3             ! Sigma1(e)
299         srlx    %o4,28,%o3
300         add     %g5,%g2,%g2
301         ldx     [%i3+32],%g5    ! K[4]
302         sllx    %o4,25,%g4
303         add     %g3,%g2,%g2
304         srlx    %o4,34,%g3
305         xor     %g4,%o3,%o3
306         sllx    %o4,30,%g4
307         xor     %g3,%o3,%o3
308         srlx    %o4,39,%g3
309         xor     %g4,%o3,%o3     
310         sllx    %o4,36,%g4
311         xor     %g3,%o3,%o3
312         xor     %g4,%o3,%o3             ! Sigma0(a)
314         or      %o4,%o5,%g3
315         and     %o4,%o5,%g4
316         and     %g1,%g3,%g3
317         or      %g3,%g4,%g4     ! Maj(a,b,c)
318         add     %g5,%g2,%g2             ! +=K[4]
319         add     %g4,%o3,%o3
321         add     %g2,%o7,%o7
322         add     %g2,%o3,%o3
323         sllx    %l3,%i4,%g5     ! Xload(5)
324         add     %i4,32,%g3
325         sllx    %l2,%g3,%g4
326         ld      [%i1+72],%l2
327         srlx    %l4,%i5,%l3
328         or      %g4,%g5,%g5
329         or      %l3,%g5,%g5
330         ld      [%i1+76],%l3
331         add     %o2,%g5,%g2
332         stx     %g5,[%sp+152]
333         srlx    %o7,14,%o2      !! 5
334         xor     %o0,%o1,%g5
335         sllx    %o7,23,%g4
336         and     %o7,%g5,%g5
337         srlx    %o7,18,%g3
338         xor     %g4,%o2,%o2
339         sllx    %o7,46,%g4
340         xor     %g3,%o2,%o2
341         srlx    %o7,41,%g3
342         xor     %g4,%o2,%o2
343         sllx    %o7,50,%g4
344         xor     %g3,%o2,%o2
345         xor     %o1,%g5,%g5             ! Ch(e,f,g)
346         xor     %g4,%o2,%g3             ! Sigma1(e)
348         srlx    %o3,28,%o2
349         add     %g5,%g2,%g2
350         ldx     [%i3+40],%g5    ! K[5]
351         sllx    %o3,25,%g4
352         add     %g3,%g2,%g2
353         srlx    %o3,34,%g3
354         xor     %g4,%o2,%o2
355         sllx    %o3,30,%g4
356         xor     %g3,%o2,%o2
357         srlx    %o3,39,%g3
358         xor     %g4,%o2,%o2     
359         sllx    %o3,36,%g4
360         xor     %g3,%o2,%o2
361         xor     %g4,%o2,%o2             ! Sigma0(a)
363         or      %o3,%o4,%g3
364         and     %o3,%o4,%g4
365         and     %o5,%g3,%g3
366         or      %g3,%g4,%g4     ! Maj(a,b,c)
367         add     %g5,%g2,%g2             ! +=K[5]
368         add     %g4,%o2,%o2
370         add     %g2,%g1,%g1
371         add     %g2,%o2,%o2
372         sllx    %l5,%i4,%g5     ! Xload(6)
373         add     %i4,32,%g3
374         sllx    %l4,%g3,%g4
375         ld      [%i1+80],%l4
376         srlx    %l6,%i5,%l5
377         or      %g4,%g5,%g5
378         or      %l5,%g5,%g5
379         ld      [%i1+84],%l5
380         add     %o1,%g5,%g2
381         stx     %g5,[%sp+160]
382         srlx    %g1,14,%o1      !! 6
383         xor     %o7,%o0,%g5
384         sllx    %g1,23,%g4
385         and     %g1,%g5,%g5
386         srlx    %g1,18,%g3
387         xor     %g4,%o1,%o1
388         sllx    %g1,46,%g4
389         xor     %g3,%o1,%o1
390         srlx    %g1,41,%g3
391         xor     %g4,%o1,%o1
392         sllx    %g1,50,%g4
393         xor     %g3,%o1,%o1
394         xor     %o0,%g5,%g5             ! Ch(e,f,g)
395         xor     %g4,%o1,%g3             ! Sigma1(e)
397         srlx    %o2,28,%o1
398         add     %g5,%g2,%g2
399         ldx     [%i3+48],%g5    ! K[6]
400         sllx    %o2,25,%g4
401         add     %g3,%g2,%g2
402         srlx    %o2,34,%g3
403         xor     %g4,%o1,%o1
404         sllx    %o2,30,%g4
405         xor     %g3,%o1,%o1
406         srlx    %o2,39,%g3
407         xor     %g4,%o1,%o1     
408         sllx    %o2,36,%g4
409         xor     %g3,%o1,%o1
410         xor     %g4,%o1,%o1             ! Sigma0(a)
412         or      %o2,%o3,%g3
413         and     %o2,%o3,%g4
414         and     %o4,%g3,%g3
415         or      %g3,%g4,%g4     ! Maj(a,b,c)
416         add     %g5,%g2,%g2             ! +=K[6]
417         add     %g4,%o1,%o1
419         add     %g2,%o5,%o5
420         add     %g2,%o1,%o1
421         sllx    %l7,%i4,%g5     ! Xload(7)
422         add     %i4,32,%g3
423         sllx    %l6,%g3,%g4
424         ld      [%i1+88],%l6
425         srlx    %l0,%i5,%l7
426         or      %g4,%g5,%g5
427         or      %l7,%g5,%g5
428         ld      [%i1+92],%l7
429         add     %o0,%g5,%g2
430         stx     %g5,[%sp+168]
431         srlx    %o5,14,%o0      !! 7
432         xor     %g1,%o7,%g5
433         sllx    %o5,23,%g4
434         and     %o5,%g5,%g5
435         srlx    %o5,18,%g3
436         xor     %g4,%o0,%o0
437         sllx    %o5,46,%g4
438         xor     %g3,%o0,%o0
439         srlx    %o5,41,%g3
440         xor     %g4,%o0,%o0
441         sllx    %o5,50,%g4
442         xor     %g3,%o0,%o0
443         xor     %o7,%g5,%g5             ! Ch(e,f,g)
444         xor     %g4,%o0,%g3             ! Sigma1(e)
446         srlx    %o1,28,%o0
447         add     %g5,%g2,%g2
448         ldx     [%i3+56],%g5    ! K[7]
449         sllx    %o1,25,%g4
450         add     %g3,%g2,%g2
451         srlx    %o1,34,%g3
452         xor     %g4,%o0,%o0
453         sllx    %o1,30,%g4
454         xor     %g3,%o0,%o0
455         srlx    %o1,39,%g3
456         xor     %g4,%o0,%o0     
457         sllx    %o1,36,%g4
458         xor     %g3,%o0,%o0
459         xor     %g4,%o0,%o0             ! Sigma0(a)
461         or      %o1,%o2,%g3
462         and     %o1,%o2,%g4
463         and     %o3,%g3,%g3
464         or      %g3,%g4,%g4     ! Maj(a,b,c)
465         add     %g5,%g2,%g2             ! +=K[7]
466         add     %g4,%o0,%o0
468         add     %g2,%o4,%o4
469         add     %g2,%o0,%o0
470         sllx    %l1,%i4,%g5     ! Xload(8)
471         add     %i4,32,%g3
472         sllx    %l0,%g3,%g4
473         ld      [%i1+96],%l0
474         srlx    %l2,%i5,%l1
475         or      %g4,%g5,%g5
476         or      %l1,%g5,%g5
477         ld      [%i1+100],%l1
478         add     %o7,%g5,%g2
479         stx     %g5,[%sp+176]
480         srlx    %o4,14,%o7      !! 8
481         xor     %o5,%g1,%g5
482         sllx    %o4,23,%g4
483         and     %o4,%g5,%g5
484         srlx    %o4,18,%g3
485         xor     %g4,%o7,%o7
486         sllx    %o4,46,%g4
487         xor     %g3,%o7,%o7
488         srlx    %o4,41,%g3
489         xor     %g4,%o7,%o7
490         sllx    %o4,50,%g4
491         xor     %g3,%o7,%o7
492         xor     %g1,%g5,%g5             ! Ch(e,f,g)
493         xor     %g4,%o7,%g3             ! Sigma1(e)
495         srlx    %o0,28,%o7
496         add     %g5,%g2,%g2
497         ldx     [%i3+64],%g5    ! K[8]
498         sllx    %o0,25,%g4
499         add     %g3,%g2,%g2
500         srlx    %o0,34,%g3
501         xor     %g4,%o7,%o7
502         sllx    %o0,30,%g4
503         xor     %g3,%o7,%o7
504         srlx    %o0,39,%g3
505         xor     %g4,%o7,%o7     
506         sllx    %o0,36,%g4
507         xor     %g3,%o7,%o7
508         xor     %g4,%o7,%o7             ! Sigma0(a)
510         or      %o0,%o1,%g3
511         and     %o0,%o1,%g4
512         and     %o2,%g3,%g3
513         or      %g3,%g4,%g4     ! Maj(a,b,c)
514         add     %g5,%g2,%g2             ! +=K[8]
515         add     %g4,%o7,%o7
517         add     %g2,%o3,%o3
518         add     %g2,%o7,%o7
519         sllx    %l3,%i4,%g5     ! Xload(9)
520         add     %i4,32,%g3
521         sllx    %l2,%g3,%g4
522         ld      [%i1+104],%l2
523         srlx    %l4,%i5,%l3
524         or      %g4,%g5,%g5
525         or      %l3,%g5,%g5
526         ld      [%i1+108],%l3
527         add     %g1,%g5,%g2
528         stx     %g5,[%sp+184]
529         srlx    %o3,14,%g1      !! 9
530         xor     %o4,%o5,%g5
531         sllx    %o3,23,%g4
532         and     %o3,%g5,%g5
533         srlx    %o3,18,%g3
534         xor     %g4,%g1,%g1
535         sllx    %o3,46,%g4
536         xor     %g3,%g1,%g1
537         srlx    %o3,41,%g3
538         xor     %g4,%g1,%g1
539         sllx    %o3,50,%g4
540         xor     %g3,%g1,%g1
541         xor     %o5,%g5,%g5             ! Ch(e,f,g)
542         xor     %g4,%g1,%g3             ! Sigma1(e)
544         srlx    %o7,28,%g1
545         add     %g5,%g2,%g2
546         ldx     [%i3+72],%g5    ! K[9]
547         sllx    %o7,25,%g4
548         add     %g3,%g2,%g2
549         srlx    %o7,34,%g3
550         xor     %g4,%g1,%g1
551         sllx    %o7,30,%g4
552         xor     %g3,%g1,%g1
553         srlx    %o7,39,%g3
554         xor     %g4,%g1,%g1     
555         sllx    %o7,36,%g4
556         xor     %g3,%g1,%g1
557         xor     %g4,%g1,%g1             ! Sigma0(a)
559         or      %o7,%o0,%g3
560         and     %o7,%o0,%g4
561         and     %o1,%g3,%g3
562         or      %g3,%g4,%g4     ! Maj(a,b,c)
563         add     %g5,%g2,%g2             ! +=K[9]
564         add     %g4,%g1,%g1
566         add     %g2,%o2,%o2
567         add     %g2,%g1,%g1
568         sllx    %l5,%i4,%g5     ! Xload(10)
569         add     %i4,32,%g3
570         sllx    %l4,%g3,%g4
571         ld      [%i1+112],%l4
572         srlx    %l6,%i5,%l5
573         or      %g4,%g5,%g5
574         or      %l5,%g5,%g5
575         ld      [%i1+116],%l5
576         add     %o5,%g5,%g2
577         stx     %g5,[%sp+192]
578         srlx    %o2,14,%o5      !! 10
579         xor     %o3,%o4,%g5
580         sllx    %o2,23,%g4
581         and     %o2,%g5,%g5
582         srlx    %o2,18,%g3
583         xor     %g4,%o5,%o5
584         sllx    %o2,46,%g4
585         xor     %g3,%o5,%o5
586         srlx    %o2,41,%g3
587         xor     %g4,%o5,%o5
588         sllx    %o2,50,%g4
589         xor     %g3,%o5,%o5
590         xor     %o4,%g5,%g5             ! Ch(e,f,g)
591         xor     %g4,%o5,%g3             ! Sigma1(e)
593         srlx    %g1,28,%o5
594         add     %g5,%g2,%g2
595         ldx     [%i3+80],%g5    ! K[10]
596         sllx    %g1,25,%g4
597         add     %g3,%g2,%g2
598         srlx    %g1,34,%g3
599         xor     %g4,%o5,%o5
600         sllx    %g1,30,%g4
601         xor     %g3,%o5,%o5
602         srlx    %g1,39,%g3
603         xor     %g4,%o5,%o5     
604         sllx    %g1,36,%g4
605         xor     %g3,%o5,%o5
606         xor     %g4,%o5,%o5             ! Sigma0(a)
608         or      %g1,%o7,%g3
609         and     %g1,%o7,%g4
610         and     %o0,%g3,%g3
611         or      %g3,%g4,%g4     ! Maj(a,b,c)
612         add     %g5,%g2,%g2             ! +=K[10]
613         add     %g4,%o5,%o5
615         add     %g2,%o1,%o1
616         add     %g2,%o5,%o5
617         sllx    %l7,%i4,%g5     ! Xload(11)
618         add     %i4,32,%g3
619         sllx    %l6,%g3,%g4
620         ld      [%i1+120],%l6
621         srlx    %l0,%i5,%l7
622         or      %g4,%g5,%g5
623         or      %l7,%g5,%g5
624         ld      [%i1+124],%l7
625         add     %o4,%g5,%g2
626         stx     %g5,[%sp+200]
627         srlx    %o1,14,%o4      !! 11
628         xor     %o2,%o3,%g5
629         sllx    %o1,23,%g4
630         and     %o1,%g5,%g5
631         srlx    %o1,18,%g3
632         xor     %g4,%o4,%o4
633         sllx    %o1,46,%g4
634         xor     %g3,%o4,%o4
635         srlx    %o1,41,%g3
636         xor     %g4,%o4,%o4
637         sllx    %o1,50,%g4
638         xor     %g3,%o4,%o4
639         xor     %o3,%g5,%g5             ! Ch(e,f,g)
640         xor     %g4,%o4,%g3             ! Sigma1(e)
642         srlx    %o5,28,%o4
643         add     %g5,%g2,%g2
644         ldx     [%i3+88],%g5    ! K[11]
645         sllx    %o5,25,%g4
646         add     %g3,%g2,%g2
647         srlx    %o5,34,%g3
648         xor     %g4,%o4,%o4
649         sllx    %o5,30,%g4
650         xor     %g3,%o4,%o4
651         srlx    %o5,39,%g3
652         xor     %g4,%o4,%o4     
653         sllx    %o5,36,%g4
654         xor     %g3,%o4,%o4
655         xor     %g4,%o4,%o4             ! Sigma0(a)
657         or      %o5,%g1,%g3
658         and     %o5,%g1,%g4
659         and     %o7,%g3,%g3
660         or      %g3,%g4,%g4     ! Maj(a,b,c)
661         add     %g5,%g2,%g2             ! +=K[11]
662         add     %g4,%o4,%o4
664         add     %g2,%o0,%o0
665         add     %g2,%o4,%o4
666         sllx    %l1,%i4,%g5     ! Xload(12)
667         add     %i4,32,%g3
668         sllx    %l0,%g3,%g4
669         
670         srlx    %l2,%i5,%l1
671         or      %g4,%g5,%g5
672         or      %l1,%g5,%g5
673         
674         add     %o3,%g5,%g2
675         stx     %g5,[%sp+208]
676         brnz,a  %i4,.+8
677         ld      [%i1+128],%l0
678         srlx    %o0,14,%o3      !! 12
679         xor     %o1,%o2,%g5
680         sllx    %o0,23,%g4
681         and     %o0,%g5,%g5
682         srlx    %o0,18,%g3
683         xor     %g4,%o3,%o3
684         sllx    %o0,46,%g4
685         xor     %g3,%o3,%o3
686         srlx    %o0,41,%g3
687         xor     %g4,%o3,%o3
688         sllx    %o0,50,%g4
689         xor     %g3,%o3,%o3
690         xor     %o2,%g5,%g5             ! Ch(e,f,g)
691         xor     %g4,%o3,%g3             ! Sigma1(e)
693         srlx    %o4,28,%o3
694         add     %g5,%g2,%g2
695         ldx     [%i3+96],%g5    ! K[12]
696         sllx    %o4,25,%g4
697         add     %g3,%g2,%g2
698         srlx    %o4,34,%g3
699         xor     %g4,%o3,%o3
700         sllx    %o4,30,%g4
701         xor     %g3,%o3,%o3
702         srlx    %o4,39,%g3
703         xor     %g4,%o3,%o3     
704         sllx    %o4,36,%g4
705         xor     %g3,%o3,%o3
706         xor     %g4,%o3,%o3             ! Sigma0(a)
708         or      %o4,%o5,%g3
709         and     %o4,%o5,%g4
710         and     %g1,%g3,%g3
711         or      %g3,%g4,%g4     ! Maj(a,b,c)
712         add     %g5,%g2,%g2             ! +=K[12]
713         add     %g4,%o3,%o3
715         add     %g2,%o7,%o7
716         add     %g2,%o3,%o3
717         sllx    %l3,%i4,%g5     ! Xload(13)
718         add     %i4,32,%g3
719         sllx    %l2,%g3,%g4
720         
721         srlx    %l4,%i5,%l3
722         or      %g4,%g5,%g5
723         or      %l3,%g5,%g5
724         
725         add     %o2,%g5,%g2
726         stx     %g5,[%sp+216]
727         srlx    %o7,14,%o2      !! 13
728         xor     %o0,%o1,%g5
729         sllx    %o7,23,%g4
730         and     %o7,%g5,%g5
731         srlx    %o7,18,%g3
732         xor     %g4,%o2,%o2
733         sllx    %o7,46,%g4
734         xor     %g3,%o2,%o2
735         srlx    %o7,41,%g3
736         xor     %g4,%o2,%o2
737         sllx    %o7,50,%g4
738         xor     %g3,%o2,%o2
739         xor     %o1,%g5,%g5             ! Ch(e,f,g)
740         xor     %g4,%o2,%g3             ! Sigma1(e)
742         srlx    %o3,28,%o2
743         add     %g5,%g2,%g2
744         ldx     [%i3+104],%g5   ! K[13]
745         sllx    %o3,25,%g4
746         add     %g3,%g2,%g2
747         srlx    %o3,34,%g3
748         xor     %g4,%o2,%o2
749         sllx    %o3,30,%g4
750         xor     %g3,%o2,%o2
751         srlx    %o3,39,%g3
752         xor     %g4,%o2,%o2     
753         sllx    %o3,36,%g4
754         xor     %g3,%o2,%o2
755         xor     %g4,%o2,%o2             ! Sigma0(a)
757         or      %o3,%o4,%g3
758         and     %o3,%o4,%g4
759         and     %o5,%g3,%g3
760         or      %g3,%g4,%g4     ! Maj(a,b,c)
761         add     %g5,%g2,%g2             ! +=K[13]
762         add     %g4,%o2,%o2
764         add     %g2,%g1,%g1
765         add     %g2,%o2,%o2
766         sllx    %l5,%i4,%g5     ! Xload(14)
767         add     %i4,32,%g3
768         sllx    %l4,%g3,%g4
769         
770         srlx    %l6,%i5,%l5
771         or      %g4,%g5,%g5
772         or      %l5,%g5,%g5
773         
774         add     %o1,%g5,%g2
775         stx     %g5,[%sp+224]
776         srlx    %g1,14,%o1      !! 14
777         xor     %o7,%o0,%g5
778         sllx    %g1,23,%g4
779         and     %g1,%g5,%g5
780         srlx    %g1,18,%g3
781         xor     %g4,%o1,%o1
782         sllx    %g1,46,%g4
783         xor     %g3,%o1,%o1
784         srlx    %g1,41,%g3
785         xor     %g4,%o1,%o1
786         sllx    %g1,50,%g4
787         xor     %g3,%o1,%o1
788         xor     %o0,%g5,%g5             ! Ch(e,f,g)
789         xor     %g4,%o1,%g3             ! Sigma1(e)
791         srlx    %o2,28,%o1
792         add     %g5,%g2,%g2
793         ldx     [%i3+112],%g5   ! K[14]
794         sllx    %o2,25,%g4
795         add     %g3,%g2,%g2
796         srlx    %o2,34,%g3
797         xor     %g4,%o1,%o1
798         sllx    %o2,30,%g4
799         xor     %g3,%o1,%o1
800         srlx    %o2,39,%g3
801         xor     %g4,%o1,%o1     
802         sllx    %o2,36,%g4
803         xor     %g3,%o1,%o1
804         xor     %g4,%o1,%o1             ! Sigma0(a)
806         or      %o2,%o3,%g3
807         and     %o2,%o3,%g4
808         and     %o4,%g3,%g3
809         or      %g3,%g4,%g4     ! Maj(a,b,c)
810         add     %g5,%g2,%g2             ! +=K[14]
811         add     %g4,%o1,%o1
813         add     %g2,%o5,%o5
814         add     %g2,%o1,%o1
815         ld      [%sp+120],%l2
816         sllx    %l7,%i4,%g5     ! Xload(15)
817         add     %i4,32,%g3
818         ld      [%sp+124],%l3
819         sllx    %l6,%g3,%g4
820         ld      [%sp+184],%l4
821         srlx    %l0,%i5,%l7
822         or      %g4,%g5,%g5
823         ld      [%sp+188],%l5
824         or      %l7,%g5,%g5
825         ld      [%sp+224],%l6
826         add     %o0,%g5,%g2
827         stx     %g5,[%sp+232]
828         ld      [%sp+228],%l7
829         ld      [%sp+112],%l0
830         ld      [%sp+116],%l1
831         srlx    %o5,14,%o0      !! 15
832         xor     %g1,%o7,%g5
833         sllx    %o5,23,%g4
834         and     %o5,%g5,%g5
835         srlx    %o5,18,%g3
836         xor     %g4,%o0,%o0
837         sllx    %o5,46,%g4
838         xor     %g3,%o0,%o0
839         srlx    %o5,41,%g3
840         xor     %g4,%o0,%o0
841         sllx    %o5,50,%g4
842         xor     %g3,%o0,%o0
843         xor     %o7,%g5,%g5             ! Ch(e,f,g)
844         xor     %g4,%o0,%g3             ! Sigma1(e)
846         srlx    %o1,28,%o0
847         add     %g5,%g2,%g2
848         ldx     [%i3+120],%g5   ! K[15]
849         sllx    %o1,25,%g4
850         add     %g3,%g2,%g2
851         srlx    %o1,34,%g3
852         xor     %g4,%o0,%o0
853         sllx    %o1,30,%g4
854         xor     %g3,%o0,%o0
855         srlx    %o1,39,%g3
856         xor     %g4,%o0,%o0     
857         sllx    %o1,36,%g4
858         xor     %g3,%o0,%o0
859         xor     %g4,%o0,%o0             ! Sigma0(a)
861         or      %o1,%o2,%g3
862         and     %o1,%o2,%g4
863         and     %o3,%g3,%g3
864         or      %g3,%g4,%g4     ! Maj(a,b,c)
865         add     %g5,%g2,%g2             ! +=K[15]
866         add     %g4,%o0,%o0
868         add     %g2,%o4,%o4
869         add     %g2,%o0,%o0
870 .L16_xx:
871         sllx    %l2,32,%g3              !! Xupdate(16)
872         or      %l3,%g3,%g3
874         srlx    %g3,7,%g2
875         ld      [%sp+128],%l2
876         sllx    %g3,56,%g4
877         ld      [%sp+132],%l3
878         srlx    %g3,1,%g3
879         xor     %g4,%g2,%g2
880         sllx    %g4,7,%g4
881         xor     %g3,%g2,%g2
882         srlx    %g3,7,%g3
883         xor     %g4,%g2,%g2
884         sllx    %l6,32,%g5
885         xor     %g3,%g2,%g2             ! sigma0(X[16+1])
886         or      %l7,%g5,%g5
888         srlx    %g5,6,%g4
889         ld      [%sp+232],%l6
890         sllx    %g5,3,%g3
891         ld      [%sp+236],%l7
892         srlx    %g5,19,%g5
893         xor     %g3,%g4,%g4
894         sllx    %g3,42,%g3
895         xor     %g5,%g4,%g4
896         srlx    %g5,42,%g5
897         xor     %g3,%g4,%g4
898         sllx    %l4,32,%g3
899         xor     %g5,%g4,%g4     ! sigma1(X[16+14])
900         ld      [%sp+192],%l4
901         or      %l5,%g3,%g3
902         ld      [%sp+196],%l5
904         sllx    %l0,32,%g5
905         add     %g4,%g2,%g2
906         ld      [%sp+120],%l0
907         or      %l1,%g5,%g5
908         add     %g3,%g2,%g2             ! +=X[16+9]
909         ld      [%sp+124],%l1
910         add     %g5,%g2,%g2             ! +=X[16]
911         stx     %g2,[%sp+112]
912         add     %o7,%g2,%g2
913         srlx    %o4,14,%o7      !! 16
914         xor     %o5,%g1,%g5
915         sllx    %o4,23,%g4
916         and     %o4,%g5,%g5
917         srlx    %o4,18,%g3
918         xor     %g4,%o7,%o7
919         sllx    %o4,46,%g4
920         xor     %g3,%o7,%o7
921         srlx    %o4,41,%g3
922         xor     %g4,%o7,%o7
923         sllx    %o4,50,%g4
924         xor     %g3,%o7,%o7
925         xor     %g1,%g5,%g5             ! Ch(e,f,g)
926         xor     %g4,%o7,%g3             ! Sigma1(e)
928         srlx    %o0,28,%o7
929         add     %g5,%g2,%g2
930         ldx     [%i3+128],%g5   ! K[16]
931         sllx    %o0,25,%g4
932         add     %g3,%g2,%g2
933         srlx    %o0,34,%g3
934         xor     %g4,%o7,%o7
935         sllx    %o0,30,%g4
936         xor     %g3,%o7,%o7
937         srlx    %o0,39,%g3
938         xor     %g4,%o7,%o7     
939         sllx    %o0,36,%g4
940         xor     %g3,%o7,%o7
941         xor     %g4,%o7,%o7             ! Sigma0(a)
943         or      %o0,%o1,%g3
944         and     %o0,%o1,%g4
945         and     %o2,%g3,%g3
946         or      %g3,%g4,%g4     ! Maj(a,b,c)
947         add     %g5,%g2,%g2             ! +=K[16]
948         add     %g4,%o7,%o7
950         add     %g2,%o3,%o3
951         add     %g2,%o7,%o7
952         sllx    %l2,32,%g3              !! Xupdate(17)
953         or      %l3,%g3,%g3
955         srlx    %g3,7,%g2
956         ld      [%sp+136],%l2
957         sllx    %g3,56,%g4
958         ld      [%sp+140],%l3
959         srlx    %g3,1,%g3
960         xor     %g4,%g2,%g2
961         sllx    %g4,7,%g4
962         xor     %g3,%g2,%g2
963         srlx    %g3,7,%g3
964         xor     %g4,%g2,%g2
965         sllx    %l6,32,%g5
966         xor     %g3,%g2,%g2             ! sigma0(X[17+1])
967         or      %l7,%g5,%g5
969         srlx    %g5,6,%g4
970         ld      [%sp+112],%l6
971         sllx    %g5,3,%g3
972         ld      [%sp+116],%l7
973         srlx    %g5,19,%g5
974         xor     %g3,%g4,%g4
975         sllx    %g3,42,%g3
976         xor     %g5,%g4,%g4
977         srlx    %g5,42,%g5
978         xor     %g3,%g4,%g4
979         sllx    %l4,32,%g3
980         xor     %g5,%g4,%g4     ! sigma1(X[17+14])
981         ld      [%sp+200],%l4
982         or      %l5,%g3,%g3
983         ld      [%sp+204],%l5
985         sllx    %l0,32,%g5
986         add     %g4,%g2,%g2
987         ld      [%sp+128],%l0
988         or      %l1,%g5,%g5
989         add     %g3,%g2,%g2             ! +=X[17+9]
990         ld      [%sp+132],%l1
991         add     %g5,%g2,%g2             ! +=X[17]
992         stx     %g2,[%sp+120]
993         add     %g1,%g2,%g2
994         srlx    %o3,14,%g1      !! 17
995         xor     %o4,%o5,%g5
996         sllx    %o3,23,%g4
997         and     %o3,%g5,%g5
998         srlx    %o3,18,%g3
999         xor     %g4,%g1,%g1
1000         sllx    %o3,46,%g4
1001         xor     %g3,%g1,%g1
1002         srlx    %o3,41,%g3
1003         xor     %g4,%g1,%g1
1004         sllx    %o3,50,%g4
1005         xor     %g3,%g1,%g1
1006         xor     %o5,%g5,%g5             ! Ch(e,f,g)
1007         xor     %g4,%g1,%g3             ! Sigma1(e)
1009         srlx    %o7,28,%g1
1010         add     %g5,%g2,%g2
1011         ldx     [%i3+136],%g5   ! K[17]
1012         sllx    %o7,25,%g4
1013         add     %g3,%g2,%g2
1014         srlx    %o7,34,%g3
1015         xor     %g4,%g1,%g1
1016         sllx    %o7,30,%g4
1017         xor     %g3,%g1,%g1
1018         srlx    %o7,39,%g3
1019         xor     %g4,%g1,%g1     
1020         sllx    %o7,36,%g4
1021         xor     %g3,%g1,%g1
1022         xor     %g4,%g1,%g1             ! Sigma0(a)
1024         or      %o7,%o0,%g3
1025         and     %o7,%o0,%g4
1026         and     %o1,%g3,%g3
1027         or      %g3,%g4,%g4     ! Maj(a,b,c)
1028         add     %g5,%g2,%g2             ! +=K[17]
1029         add     %g4,%g1,%g1
1031         add     %g2,%o2,%o2
1032         add     %g2,%g1,%g1
1033         sllx    %l2,32,%g3              !! Xupdate(18)
1034         or      %l3,%g3,%g3
1036         srlx    %g3,7,%g2
1037         ld      [%sp+144],%l2
1038         sllx    %g3,56,%g4
1039         ld      [%sp+148],%l3
1040         srlx    %g3,1,%g3
1041         xor     %g4,%g2,%g2
1042         sllx    %g4,7,%g4
1043         xor     %g3,%g2,%g2
1044         srlx    %g3,7,%g3
1045         xor     %g4,%g2,%g2
1046         sllx    %l6,32,%g5
1047         xor     %g3,%g2,%g2             ! sigma0(X[18+1])
1048         or      %l7,%g5,%g5
1050         srlx    %g5,6,%g4
1051         ld      [%sp+120],%l6
1052         sllx    %g5,3,%g3
1053         ld      [%sp+124],%l7
1054         srlx    %g5,19,%g5
1055         xor     %g3,%g4,%g4
1056         sllx    %g3,42,%g3
1057         xor     %g5,%g4,%g4
1058         srlx    %g5,42,%g5
1059         xor     %g3,%g4,%g4
1060         sllx    %l4,32,%g3
1061         xor     %g5,%g4,%g4     ! sigma1(X[18+14])
1062         ld      [%sp+208],%l4
1063         or      %l5,%g3,%g3
1064         ld      [%sp+212],%l5
1066         sllx    %l0,32,%g5
1067         add     %g4,%g2,%g2
1068         ld      [%sp+136],%l0
1069         or      %l1,%g5,%g5
1070         add     %g3,%g2,%g2             ! +=X[18+9]
1071         ld      [%sp+140],%l1
1072         add     %g5,%g2,%g2             ! +=X[18]
1073         stx     %g2,[%sp+128]
1074         add     %o5,%g2,%g2
1075         srlx    %o2,14,%o5      !! 18
1076         xor     %o3,%o4,%g5
1077         sllx    %o2,23,%g4
1078         and     %o2,%g5,%g5
1079         srlx    %o2,18,%g3
1080         xor     %g4,%o5,%o5
1081         sllx    %o2,46,%g4
1082         xor     %g3,%o5,%o5
1083         srlx    %o2,41,%g3
1084         xor     %g4,%o5,%o5
1085         sllx    %o2,50,%g4
1086         xor     %g3,%o5,%o5
1087         xor     %o4,%g5,%g5             ! Ch(e,f,g)
1088         xor     %g4,%o5,%g3             ! Sigma1(e)
1090         srlx    %g1,28,%o5
1091         add     %g5,%g2,%g2
1092         ldx     [%i3+144],%g5   ! K[18]
1093         sllx    %g1,25,%g4
1094         add     %g3,%g2,%g2
1095         srlx    %g1,34,%g3
1096         xor     %g4,%o5,%o5
1097         sllx    %g1,30,%g4
1098         xor     %g3,%o5,%o5
1099         srlx    %g1,39,%g3
1100         xor     %g4,%o5,%o5     
1101         sllx    %g1,36,%g4
1102         xor     %g3,%o5,%o5
1103         xor     %g4,%o5,%o5             ! Sigma0(a)
1105         or      %g1,%o7,%g3
1106         and     %g1,%o7,%g4
1107         and     %o0,%g3,%g3
1108         or      %g3,%g4,%g4     ! Maj(a,b,c)
1109         add     %g5,%g2,%g2             ! +=K[18]
1110         add     %g4,%o5,%o5
1112         add     %g2,%o1,%o1
1113         add     %g2,%o5,%o5
1114         sllx    %l2,32,%g3              !! Xupdate(19)
1115         or      %l3,%g3,%g3
1117         srlx    %g3,7,%g2
1118         ld      [%sp+152],%l2
1119         sllx    %g3,56,%g4
1120         ld      [%sp+156],%l3
1121         srlx    %g3,1,%g3
1122         xor     %g4,%g2,%g2
1123         sllx    %g4,7,%g4
1124         xor     %g3,%g2,%g2
1125         srlx    %g3,7,%g3
1126         xor     %g4,%g2,%g2
1127         sllx    %l6,32,%g5
1128         xor     %g3,%g2,%g2             ! sigma0(X[19+1])
1129         or      %l7,%g5,%g5
1131         srlx    %g5,6,%g4
1132         ld      [%sp+128],%l6
1133         sllx    %g5,3,%g3
1134         ld      [%sp+132],%l7
1135         srlx    %g5,19,%g5
1136         xor     %g3,%g4,%g4
1137         sllx    %g3,42,%g3
1138         xor     %g5,%g4,%g4
1139         srlx    %g5,42,%g5
1140         xor     %g3,%g4,%g4
1141         sllx    %l4,32,%g3
1142         xor     %g5,%g4,%g4     ! sigma1(X[19+14])
1143         ld      [%sp+216],%l4
1144         or      %l5,%g3,%g3
1145         ld      [%sp+220],%l5
1147         sllx    %l0,32,%g5
1148         add     %g4,%g2,%g2
1149         ld      [%sp+144],%l0
1150         or      %l1,%g5,%g5
1151         add     %g3,%g2,%g2             ! +=X[19+9]
1152         ld      [%sp+148],%l1
1153         add     %g5,%g2,%g2             ! +=X[19]
1154         stx     %g2,[%sp+136]
1155         add     %o4,%g2,%g2
1156         srlx    %o1,14,%o4      !! 19
1157         xor     %o2,%o3,%g5
1158         sllx    %o1,23,%g4
1159         and     %o1,%g5,%g5
1160         srlx    %o1,18,%g3
1161         xor     %g4,%o4,%o4
1162         sllx    %o1,46,%g4
1163         xor     %g3,%o4,%o4
1164         srlx    %o1,41,%g3
1165         xor     %g4,%o4,%o4
1166         sllx    %o1,50,%g4
1167         xor     %g3,%o4,%o4
1168         xor     %o3,%g5,%g5             ! Ch(e,f,g)
1169         xor     %g4,%o4,%g3             ! Sigma1(e)
1171         srlx    %o5,28,%o4
1172         add     %g5,%g2,%g2
1173         ldx     [%i3+152],%g5   ! K[19]
1174         sllx    %o5,25,%g4
1175         add     %g3,%g2,%g2
1176         srlx    %o5,34,%g3
1177         xor     %g4,%o4,%o4
1178         sllx    %o5,30,%g4
1179         xor     %g3,%o4,%o4
1180         srlx    %o5,39,%g3
1181         xor     %g4,%o4,%o4     
1182         sllx    %o5,36,%g4
1183         xor     %g3,%o4,%o4
1184         xor     %g4,%o4,%o4             ! Sigma0(a)
1186         or      %o5,%g1,%g3
1187         and     %o5,%g1,%g4
1188         and     %o7,%g3,%g3
1189         or      %g3,%g4,%g4     ! Maj(a,b,c)
1190         add     %g5,%g2,%g2             ! +=K[19]
1191         add     %g4,%o4,%o4
1193         add     %g2,%o0,%o0
1194         add     %g2,%o4,%o4
1195         sllx    %l2,32,%g3              !! Xupdate(20)
1196         or      %l3,%g3,%g3
1198         srlx    %g3,7,%g2
1199         ld      [%sp+160],%l2
1200         sllx    %g3,56,%g4
1201         ld      [%sp+164],%l3
1202         srlx    %g3,1,%g3
1203         xor     %g4,%g2,%g2
1204         sllx    %g4,7,%g4
1205         xor     %g3,%g2,%g2
1206         srlx    %g3,7,%g3
1207         xor     %g4,%g2,%g2
1208         sllx    %l6,32,%g5
1209         xor     %g3,%g2,%g2             ! sigma0(X[20+1])
1210         or      %l7,%g5,%g5
1212         srlx    %g5,6,%g4
1213         ld      [%sp+136],%l6
1214         sllx    %g5,3,%g3
1215         ld      [%sp+140],%l7
1216         srlx    %g5,19,%g5
1217         xor     %g3,%g4,%g4
1218         sllx    %g3,42,%g3
1219         xor     %g5,%g4,%g4
1220         srlx    %g5,42,%g5
1221         xor     %g3,%g4,%g4
1222         sllx    %l4,32,%g3
1223         xor     %g5,%g4,%g4     ! sigma1(X[20+14])
1224         ld      [%sp+224],%l4
1225         or      %l5,%g3,%g3
1226         ld      [%sp+228],%l5
1228         sllx    %l0,32,%g5
1229         add     %g4,%g2,%g2
1230         ld      [%sp+152],%l0
1231         or      %l1,%g5,%g5
1232         add     %g3,%g2,%g2             ! +=X[20+9]
1233         ld      [%sp+156],%l1
1234         add     %g5,%g2,%g2             ! +=X[20]
1235         stx     %g2,[%sp+144]
1236         add     %o3,%g2,%g2
1237         srlx    %o0,14,%o3      !! 20
1238         xor     %o1,%o2,%g5
1239         sllx    %o0,23,%g4
1240         and     %o0,%g5,%g5
1241         srlx    %o0,18,%g3
1242         xor     %g4,%o3,%o3
1243         sllx    %o0,46,%g4
1244         xor     %g3,%o3,%o3
1245         srlx    %o0,41,%g3
1246         xor     %g4,%o3,%o3
1247         sllx    %o0,50,%g4
1248         xor     %g3,%o3,%o3
1249         xor     %o2,%g5,%g5             ! Ch(e,f,g)
1250         xor     %g4,%o3,%g3             ! Sigma1(e)
1252         srlx    %o4,28,%o3
1253         add     %g5,%g2,%g2
1254         ldx     [%i3+160],%g5   ! K[20]
1255         sllx    %o4,25,%g4
1256         add     %g3,%g2,%g2
1257         srlx    %o4,34,%g3
1258         xor     %g4,%o3,%o3
1259         sllx    %o4,30,%g4
1260         xor     %g3,%o3,%o3
1261         srlx    %o4,39,%g3
1262         xor     %g4,%o3,%o3     
1263         sllx    %o4,36,%g4
1264         xor     %g3,%o3,%o3
1265         xor     %g4,%o3,%o3             ! Sigma0(a)
1267         or      %o4,%o5,%g3
1268         and     %o4,%o5,%g4
1269         and     %g1,%g3,%g3
1270         or      %g3,%g4,%g4     ! Maj(a,b,c)
1271         add     %g5,%g2,%g2             ! +=K[20]
1272         add     %g4,%o3,%o3
1274         add     %g2,%o7,%o7
1275         add     %g2,%o3,%o3
1276         sllx    %l2,32,%g3              !! Xupdate(21)
1277         or      %l3,%g3,%g3
1279         srlx    %g3,7,%g2
1280         ld      [%sp+168],%l2
1281         sllx    %g3,56,%g4
1282         ld      [%sp+172],%l3
1283         srlx    %g3,1,%g3
1284         xor     %g4,%g2,%g2
1285         sllx    %g4,7,%g4
1286         xor     %g3,%g2,%g2
1287         srlx    %g3,7,%g3
1288         xor     %g4,%g2,%g2
1289         sllx    %l6,32,%g5
1290         xor     %g3,%g2,%g2             ! sigma0(X[21+1])
1291         or      %l7,%g5,%g5
1293         srlx    %g5,6,%g4
1294         ld      [%sp+144],%l6
1295         sllx    %g5,3,%g3
1296         ld      [%sp+148],%l7
1297         srlx    %g5,19,%g5
1298         xor     %g3,%g4,%g4
1299         sllx    %g3,42,%g3
1300         xor     %g5,%g4,%g4
1301         srlx    %g5,42,%g5
1302         xor     %g3,%g4,%g4
1303         sllx    %l4,32,%g3
1304         xor     %g5,%g4,%g4     ! sigma1(X[21+14])
1305         ld      [%sp+232],%l4
1306         or      %l5,%g3,%g3
1307         ld      [%sp+236],%l5
1309         sllx    %l0,32,%g5
1310         add     %g4,%g2,%g2
1311         ld      [%sp+160],%l0
1312         or      %l1,%g5,%g5
1313         add     %g3,%g2,%g2             ! +=X[21+9]
1314         ld      [%sp+164],%l1
1315         add     %g5,%g2,%g2             ! +=X[21]
1316         stx     %g2,[%sp+152]
1317         add     %o2,%g2,%g2
1318         srlx    %o7,14,%o2      !! 21
1319         xor     %o0,%o1,%g5
1320         sllx    %o7,23,%g4
1321         and     %o7,%g5,%g5
1322         srlx    %o7,18,%g3
1323         xor     %g4,%o2,%o2
1324         sllx    %o7,46,%g4
1325         xor     %g3,%o2,%o2
1326         srlx    %o7,41,%g3
1327         xor     %g4,%o2,%o2
1328         sllx    %o7,50,%g4
1329         xor     %g3,%o2,%o2
1330         xor     %o1,%g5,%g5             ! Ch(e,f,g)
1331         xor     %g4,%o2,%g3             ! Sigma1(e)
1333         srlx    %o3,28,%o2
1334         add     %g5,%g2,%g2
1335         ldx     [%i3+168],%g5   ! K[21]
1336         sllx    %o3,25,%g4
1337         add     %g3,%g2,%g2
1338         srlx    %o3,34,%g3
1339         xor     %g4,%o2,%o2
1340         sllx    %o3,30,%g4
1341         xor     %g3,%o2,%o2
1342         srlx    %o3,39,%g3
1343         xor     %g4,%o2,%o2     
1344         sllx    %o3,36,%g4
1345         xor     %g3,%o2,%o2
1346         xor     %g4,%o2,%o2             ! Sigma0(a)
1348         or      %o3,%o4,%g3
1349         and     %o3,%o4,%g4
1350         and     %o5,%g3,%g3
1351         or      %g3,%g4,%g4     ! Maj(a,b,c)
1352         add     %g5,%g2,%g2             ! +=K[21]
1353         add     %g4,%o2,%o2
1355         add     %g2,%g1,%g1
1356         add     %g2,%o2,%o2
1357         sllx    %l2,32,%g3              !! Xupdate(22)
1358         or      %l3,%g3,%g3
1360         srlx    %g3,7,%g2
1361         ld      [%sp+176],%l2
1362         sllx    %g3,56,%g4
1363         ld      [%sp+180],%l3
1364         srlx    %g3,1,%g3
1365         xor     %g4,%g2,%g2
1366         sllx    %g4,7,%g4
1367         xor     %g3,%g2,%g2
1368         srlx    %g3,7,%g3
1369         xor     %g4,%g2,%g2
1370         sllx    %l6,32,%g5
1371         xor     %g3,%g2,%g2             ! sigma0(X[22+1])
1372         or      %l7,%g5,%g5
1374         srlx    %g5,6,%g4
1375         ld      [%sp+152],%l6
1376         sllx    %g5,3,%g3
1377         ld      [%sp+156],%l7
1378         srlx    %g5,19,%g5
1379         xor     %g3,%g4,%g4
1380         sllx    %g3,42,%g3
1381         xor     %g5,%g4,%g4
1382         srlx    %g5,42,%g5
1383         xor     %g3,%g4,%g4
1384         sllx    %l4,32,%g3
1385         xor     %g5,%g4,%g4     ! sigma1(X[22+14])
1386         ld      [%sp+112],%l4
1387         or      %l5,%g3,%g3
1388         ld      [%sp+116],%l5
1390         sllx    %l0,32,%g5
1391         add     %g4,%g2,%g2
1392         ld      [%sp+168],%l0
1393         or      %l1,%g5,%g5
1394         add     %g3,%g2,%g2             ! +=X[22+9]
1395         ld      [%sp+172],%l1
1396         add     %g5,%g2,%g2             ! +=X[22]
1397         stx     %g2,[%sp+160]
1398         add     %o1,%g2,%g2
1399         srlx    %g1,14,%o1      !! 22
1400         xor     %o7,%o0,%g5
1401         sllx    %g1,23,%g4
1402         and     %g1,%g5,%g5
1403         srlx    %g1,18,%g3
1404         xor     %g4,%o1,%o1
1405         sllx    %g1,46,%g4
1406         xor     %g3,%o1,%o1
1407         srlx    %g1,41,%g3
1408         xor     %g4,%o1,%o1
1409         sllx    %g1,50,%g4
1410         xor     %g3,%o1,%o1
1411         xor     %o0,%g5,%g5             ! Ch(e,f,g)
1412         xor     %g4,%o1,%g3             ! Sigma1(e)
1414         srlx    %o2,28,%o1
1415         add     %g5,%g2,%g2
1416         ldx     [%i3+176],%g5   ! K[22]
1417         sllx    %o2,25,%g4
1418         add     %g3,%g2,%g2
1419         srlx    %o2,34,%g3
1420         xor     %g4,%o1,%o1
1421         sllx    %o2,30,%g4
1422         xor     %g3,%o1,%o1
1423         srlx    %o2,39,%g3
1424         xor     %g4,%o1,%o1     
1425         sllx    %o2,36,%g4
1426         xor     %g3,%o1,%o1
1427         xor     %g4,%o1,%o1             ! Sigma0(a)
1429         or      %o2,%o3,%g3
1430         and     %o2,%o3,%g4
1431         and     %o4,%g3,%g3
1432         or      %g3,%g4,%g4     ! Maj(a,b,c)
1433         add     %g5,%g2,%g2             ! +=K[22]
1434         add     %g4,%o1,%o1
1436         add     %g2,%o5,%o5
1437         add     %g2,%o1,%o1
1438         sllx    %l2,32,%g3              !! Xupdate(23)
1439         or      %l3,%g3,%g3
1441         srlx    %g3,7,%g2
1442         ld      [%sp+184],%l2
1443         sllx    %g3,56,%g4
1444         ld      [%sp+188],%l3
1445         srlx    %g3,1,%g3
1446         xor     %g4,%g2,%g2
1447         sllx    %g4,7,%g4
1448         xor     %g3,%g2,%g2
1449         srlx    %g3,7,%g3
1450         xor     %g4,%g2,%g2
1451         sllx    %l6,32,%g5
1452         xor     %g3,%g2,%g2             ! sigma0(X[23+1])
1453         or      %l7,%g5,%g5
1455         srlx    %g5,6,%g4
1456         ld      [%sp+160],%l6
1457         sllx    %g5,3,%g3
1458         ld      [%sp+164],%l7
1459         srlx    %g5,19,%g5
1460         xor     %g3,%g4,%g4
1461         sllx    %g3,42,%g3
1462         xor     %g5,%g4,%g4
1463         srlx    %g5,42,%g5
1464         xor     %g3,%g4,%g4
1465         sllx    %l4,32,%g3
1466         xor     %g5,%g4,%g4     ! sigma1(X[23+14])
1467         ld      [%sp+120],%l4
1468         or      %l5,%g3,%g3
1469         ld      [%sp+124],%l5
1471         sllx    %l0,32,%g5
1472         add     %g4,%g2,%g2
1473         ld      [%sp+176],%l0
1474         or      %l1,%g5,%g5
1475         add     %g3,%g2,%g2             ! +=X[23+9]
1476         ld      [%sp+180],%l1
1477         add     %g5,%g2,%g2             ! +=X[23]
1478         stx     %g2,[%sp+168]
1479         add     %o0,%g2,%g2
1480         srlx    %o5,14,%o0      !! 23
1481         xor     %g1,%o7,%g5
1482         sllx    %o5,23,%g4
1483         and     %o5,%g5,%g5
1484         srlx    %o5,18,%g3
1485         xor     %g4,%o0,%o0
1486         sllx    %o5,46,%g4
1487         xor     %g3,%o0,%o0
1488         srlx    %o5,41,%g3
1489         xor     %g4,%o0,%o0
1490         sllx    %o5,50,%g4
1491         xor     %g3,%o0,%o0
1492         xor     %o7,%g5,%g5             ! Ch(e,f,g)
1493         xor     %g4,%o0,%g3             ! Sigma1(e)
1495         srlx    %o1,28,%o0
1496         add     %g5,%g2,%g2
1497         ldx     [%i3+184],%g5   ! K[23]
1498         sllx    %o1,25,%g4
1499         add     %g3,%g2,%g2
1500         srlx    %o1,34,%g3
1501         xor     %g4,%o0,%o0
1502         sllx    %o1,30,%g4
1503         xor     %g3,%o0,%o0
1504         srlx    %o1,39,%g3
1505         xor     %g4,%o0,%o0     
1506         sllx    %o1,36,%g4
1507         xor     %g3,%o0,%o0
1508         xor     %g4,%o0,%o0             ! Sigma0(a)
1510         or      %o1,%o2,%g3
1511         and     %o1,%o2,%g4
1512         and     %o3,%g3,%g3
1513         or      %g3,%g4,%g4     ! Maj(a,b,c)
1514         add     %g5,%g2,%g2             ! +=K[23]
1515         add     %g4,%o0,%o0
1517         add     %g2,%o4,%o4
1518         add     %g2,%o0,%o0
1519         sllx    %l2,32,%g3              !! Xupdate(24)
1520         or      %l3,%g3,%g3
1522         srlx    %g3,7,%g2
1523         ld      [%sp+192],%l2
1524         sllx    %g3,56,%g4
1525         ld      [%sp+196],%l3
1526         srlx    %g3,1,%g3
1527         xor     %g4,%g2,%g2
1528         sllx    %g4,7,%g4
1529         xor     %g3,%g2,%g2
1530         srlx    %g3,7,%g3
1531         xor     %g4,%g2,%g2
1532         sllx    %l6,32,%g5
1533         xor     %g3,%g2,%g2             ! sigma0(X[24+1])
1534         or      %l7,%g5,%g5
1536         srlx    %g5,6,%g4
1537         ld      [%sp+168],%l6
1538         sllx    %g5,3,%g3
1539         ld      [%sp+172],%l7
1540         srlx    %g5,19,%g5
1541         xor     %g3,%g4,%g4
1542         sllx    %g3,42,%g3
1543         xor     %g5,%g4,%g4
1544         srlx    %g5,42,%g5
1545         xor     %g3,%g4,%g4
1546         sllx    %l4,32,%g3
1547         xor     %g5,%g4,%g4     ! sigma1(X[24+14])
1548         ld      [%sp+128],%l4
1549         or      %l5,%g3,%g3
1550         ld      [%sp+132],%l5
1552         sllx    %l0,32,%g5
1553         add     %g4,%g2,%g2
1554         ld      [%sp+184],%l0
1555         or      %l1,%g5,%g5
1556         add     %g3,%g2,%g2             ! +=X[24+9]
1557         ld      [%sp+188],%l1
1558         add     %g5,%g2,%g2             ! +=X[24]
1559         stx     %g2,[%sp+176]
1560         add     %o7,%g2,%g2
1561         srlx    %o4,14,%o7      !! 24
1562         xor     %o5,%g1,%g5
1563         sllx    %o4,23,%g4
1564         and     %o4,%g5,%g5
1565         srlx    %o4,18,%g3
1566         xor     %g4,%o7,%o7
1567         sllx    %o4,46,%g4
1568         xor     %g3,%o7,%o7
1569         srlx    %o4,41,%g3
1570         xor     %g4,%o7,%o7
1571         sllx    %o4,50,%g4
1572         xor     %g3,%o7,%o7
1573         xor     %g1,%g5,%g5             ! Ch(e,f,g)
1574         xor     %g4,%o7,%g3             ! Sigma1(e)
1576         srlx    %o0,28,%o7
1577         add     %g5,%g2,%g2
1578         ldx     [%i3+192],%g5   ! K[24]
1579         sllx    %o0,25,%g4
1580         add     %g3,%g2,%g2
1581         srlx    %o0,34,%g3
1582         xor     %g4,%o7,%o7
1583         sllx    %o0,30,%g4
1584         xor     %g3,%o7,%o7
1585         srlx    %o0,39,%g3
1586         xor     %g4,%o7,%o7     
1587         sllx    %o0,36,%g4
1588         xor     %g3,%o7,%o7
1589         xor     %g4,%o7,%o7             ! Sigma0(a)
1591         or      %o0,%o1,%g3
1592         and     %o0,%o1,%g4
1593         and     %o2,%g3,%g3
1594         or      %g3,%g4,%g4     ! Maj(a,b,c)
1595         add     %g5,%g2,%g2             ! +=K[24]
1596         add     %g4,%o7,%o7
1598         add     %g2,%o3,%o3
1599         add     %g2,%o7,%o7
1600         sllx    %l2,32,%g3              !! Xupdate(25)
1601         or      %l3,%g3,%g3
1603         srlx    %g3,7,%g2
1604         ld      [%sp+200],%l2
1605         sllx    %g3,56,%g4
1606         ld      [%sp+204],%l3
1607         srlx    %g3,1,%g3
1608         xor     %g4,%g2,%g2
1609         sllx    %g4,7,%g4
1610         xor     %g3,%g2,%g2
1611         srlx    %g3,7,%g3
1612         xor     %g4,%g2,%g2
1613         sllx    %l6,32,%g5
1614         xor     %g3,%g2,%g2             ! sigma0(X[25+1])
1615         or      %l7,%g5,%g5
1617         srlx    %g5,6,%g4
1618         ld      [%sp+176],%l6
1619         sllx    %g5,3,%g3
1620         ld      [%sp+180],%l7
1621         srlx    %g5,19,%g5
1622         xor     %g3,%g4,%g4
1623         sllx    %g3,42,%g3
1624         xor     %g5,%g4,%g4
1625         srlx    %g5,42,%g5
1626         xor     %g3,%g4,%g4
1627         sllx    %l4,32,%g3
1628         xor     %g5,%g4,%g4     ! sigma1(X[25+14])
1629         ld      [%sp+136],%l4
1630         or      %l5,%g3,%g3
1631         ld      [%sp+140],%l5
1633         sllx    %l0,32,%g5
1634         add     %g4,%g2,%g2
1635         ld      [%sp+192],%l0
1636         or      %l1,%g5,%g5
1637         add     %g3,%g2,%g2             ! +=X[25+9]
1638         ld      [%sp+196],%l1
1639         add     %g5,%g2,%g2             ! +=X[25]
1640         stx     %g2,[%sp+184]
1641         add     %g1,%g2,%g2
1642         srlx    %o3,14,%g1      !! 25
1643         xor     %o4,%o5,%g5
1644         sllx    %o3,23,%g4
1645         and     %o3,%g5,%g5
1646         srlx    %o3,18,%g3
1647         xor     %g4,%g1,%g1
1648         sllx    %o3,46,%g4
1649         xor     %g3,%g1,%g1
1650         srlx    %o3,41,%g3
1651         xor     %g4,%g1,%g1
1652         sllx    %o3,50,%g4
1653         xor     %g3,%g1,%g1
1654         xor     %o5,%g5,%g5             ! Ch(e,f,g)
1655         xor     %g4,%g1,%g3             ! Sigma1(e)
1657         srlx    %o7,28,%g1
1658         add     %g5,%g2,%g2
1659         ldx     [%i3+200],%g5   ! K[25]
1660         sllx    %o7,25,%g4
1661         add     %g3,%g2,%g2
1662         srlx    %o7,34,%g3
1663         xor     %g4,%g1,%g1
1664         sllx    %o7,30,%g4
1665         xor     %g3,%g1,%g1
1666         srlx    %o7,39,%g3
1667         xor     %g4,%g1,%g1     
1668         sllx    %o7,36,%g4
1669         xor     %g3,%g1,%g1
1670         xor     %g4,%g1,%g1             ! Sigma0(a)
1672         or      %o7,%o0,%g3
1673         and     %o7,%o0,%g4
1674         and     %o1,%g3,%g3
1675         or      %g3,%g4,%g4     ! Maj(a,b,c)
1676         add     %g5,%g2,%g2             ! +=K[25]
1677         add     %g4,%g1,%g1
1679         add     %g2,%o2,%o2
1680         add     %g2,%g1,%g1
1681         sllx    %l2,32,%g3              !! Xupdate(26)
1682         or      %l3,%g3,%g3
1684         srlx    %g3,7,%g2
1685         ld      [%sp+208],%l2
1686         sllx    %g3,56,%g4
1687         ld      [%sp+212],%l3
1688         srlx    %g3,1,%g3
1689         xor     %g4,%g2,%g2
1690         sllx    %g4,7,%g4
1691         xor     %g3,%g2,%g2
1692         srlx    %g3,7,%g3
1693         xor     %g4,%g2,%g2
1694         sllx    %l6,32,%g5
1695         xor     %g3,%g2,%g2             ! sigma0(X[26+1])
1696         or      %l7,%g5,%g5
1698         srlx    %g5,6,%g4
1699         ld      [%sp+184],%l6
1700         sllx    %g5,3,%g3
1701         ld      [%sp+188],%l7
1702         srlx    %g5,19,%g5
1703         xor     %g3,%g4,%g4
1704         sllx    %g3,42,%g3
1705         xor     %g5,%g4,%g4
1706         srlx    %g5,42,%g5
1707         xor     %g3,%g4,%g4
1708         sllx    %l4,32,%g3
1709         xor     %g5,%g4,%g4     ! sigma1(X[26+14])
1710         ld      [%sp+144],%l4
1711         or      %l5,%g3,%g3
1712         ld      [%sp+148],%l5
1714         sllx    %l0,32,%g5
1715         add     %g4,%g2,%g2
1716         ld      [%sp+200],%l0
1717         or      %l1,%g5,%g5
1718         add     %g3,%g2,%g2             ! +=X[26+9]
1719         ld      [%sp+204],%l1
1720         add     %g5,%g2,%g2             ! +=X[26]
1721         stx     %g2,[%sp+192]
1722         add     %o5,%g2,%g2
1723         srlx    %o2,14,%o5      !! 26
1724         xor     %o3,%o4,%g5
1725         sllx    %o2,23,%g4
1726         and     %o2,%g5,%g5
1727         srlx    %o2,18,%g3
1728         xor     %g4,%o5,%o5
1729         sllx    %o2,46,%g4
1730         xor     %g3,%o5,%o5
1731         srlx    %o2,41,%g3
1732         xor     %g4,%o5,%o5
1733         sllx    %o2,50,%g4
1734         xor     %g3,%o5,%o5
1735         xor     %o4,%g5,%g5             ! Ch(e,f,g)
1736         xor     %g4,%o5,%g3             ! Sigma1(e)
1738         srlx    %g1,28,%o5
1739         add     %g5,%g2,%g2
1740         ldx     [%i3+208],%g5   ! K[26]
1741         sllx    %g1,25,%g4
1742         add     %g3,%g2,%g2
1743         srlx    %g1,34,%g3
1744         xor     %g4,%o5,%o5
1745         sllx    %g1,30,%g4
1746         xor     %g3,%o5,%o5
1747         srlx    %g1,39,%g3
1748         xor     %g4,%o5,%o5     
1749         sllx    %g1,36,%g4
1750         xor     %g3,%o5,%o5
1751         xor     %g4,%o5,%o5             ! Sigma0(a)
1753         or      %g1,%o7,%g3
1754         and     %g1,%o7,%g4
1755         and     %o0,%g3,%g3
1756         or      %g3,%g4,%g4     ! Maj(a,b,c)
1757         add     %g5,%g2,%g2             ! +=K[26]
1758         add     %g4,%o5,%o5
1760         add     %g2,%o1,%o1
1761         add     %g2,%o5,%o5
1762         sllx    %l2,32,%g3              !! Xupdate(27)
1763         or      %l3,%g3,%g3
1765         srlx    %g3,7,%g2
1766         ld      [%sp+216],%l2
1767         sllx    %g3,56,%g4
1768         ld      [%sp+220],%l3
1769         srlx    %g3,1,%g3
1770         xor     %g4,%g2,%g2
1771         sllx    %g4,7,%g4
1772         xor     %g3,%g2,%g2
1773         srlx    %g3,7,%g3
1774         xor     %g4,%g2,%g2
1775         sllx    %l6,32,%g5
1776         xor     %g3,%g2,%g2             ! sigma0(X[27+1])
1777         or      %l7,%g5,%g5
1779         srlx    %g5,6,%g4
1780         ld      [%sp+192],%l6
1781         sllx    %g5,3,%g3
1782         ld      [%sp+196],%l7
1783         srlx    %g5,19,%g5
1784         xor     %g3,%g4,%g4
1785         sllx    %g3,42,%g3
1786         xor     %g5,%g4,%g4
1787         srlx    %g5,42,%g5
1788         xor     %g3,%g4,%g4
1789         sllx    %l4,32,%g3
1790         xor     %g5,%g4,%g4     ! sigma1(X[27+14])
1791         ld      [%sp+152],%l4
1792         or      %l5,%g3,%g3
1793         ld      [%sp+156],%l5
1795         sllx    %l0,32,%g5
1796         add     %g4,%g2,%g2
1797         ld      [%sp+208],%l0
1798         or      %l1,%g5,%g5
1799         add     %g3,%g2,%g2             ! +=X[27+9]
1800         ld      [%sp+212],%l1
1801         add     %g5,%g2,%g2             ! +=X[27]
1802         stx     %g2,[%sp+200]
1803         add     %o4,%g2,%g2
1804         srlx    %o1,14,%o4      !! 27
1805         xor     %o2,%o3,%g5
1806         sllx    %o1,23,%g4
1807         and     %o1,%g5,%g5
1808         srlx    %o1,18,%g3
1809         xor     %g4,%o4,%o4
1810         sllx    %o1,46,%g4
1811         xor     %g3,%o4,%o4
1812         srlx    %o1,41,%g3
1813         xor     %g4,%o4,%o4
1814         sllx    %o1,50,%g4
1815         xor     %g3,%o4,%o4
1816         xor     %o3,%g5,%g5             ! Ch(e,f,g)
1817         xor     %g4,%o4,%g3             ! Sigma1(e)
1819         srlx    %o5,28,%o4
1820         add     %g5,%g2,%g2
1821         ldx     [%i3+216],%g5   ! K[27]
1822         sllx    %o5,25,%g4
1823         add     %g3,%g2,%g2
1824         srlx    %o5,34,%g3
1825         xor     %g4,%o4,%o4
1826         sllx    %o5,30,%g4
1827         xor     %g3,%o4,%o4
1828         srlx    %o5,39,%g3
1829         xor     %g4,%o4,%o4     
1830         sllx    %o5,36,%g4
1831         xor     %g3,%o4,%o4
1832         xor     %g4,%o4,%o4             ! Sigma0(a)
1834         or      %o5,%g1,%g3
1835         and     %o5,%g1,%g4
1836         and     %o7,%g3,%g3
1837         or      %g3,%g4,%g4     ! Maj(a,b,c)
1838         add     %g5,%g2,%g2             ! +=K[27]
1839         add     %g4,%o4,%o4
1841         add     %g2,%o0,%o0
1842         add     %g2,%o4,%o4
1843         sllx    %l2,32,%g3              !! Xupdate(28)
1844         or      %l3,%g3,%g3
1846         srlx    %g3,7,%g2
1847         ld      [%sp+224],%l2
1848         sllx    %g3,56,%g4
1849         ld      [%sp+228],%l3
1850         srlx    %g3,1,%g3
1851         xor     %g4,%g2,%g2
1852         sllx    %g4,7,%g4
1853         xor     %g3,%g2,%g2
1854         srlx    %g3,7,%g3
1855         xor     %g4,%g2,%g2
1856         sllx    %l6,32,%g5
1857         xor     %g3,%g2,%g2             ! sigma0(X[28+1])
1858         or      %l7,%g5,%g5
1860         srlx    %g5,6,%g4
1861         ld      [%sp+200],%l6
1862         sllx    %g5,3,%g3
1863         ld      [%sp+204],%l7
1864         srlx    %g5,19,%g5
1865         xor     %g3,%g4,%g4
1866         sllx    %g3,42,%g3
1867         xor     %g5,%g4,%g4
1868         srlx    %g5,42,%g5
1869         xor     %g3,%g4,%g4
1870         sllx    %l4,32,%g3
1871         xor     %g5,%g4,%g4     ! sigma1(X[28+14])
1872         ld      [%sp+160],%l4
1873         or      %l5,%g3,%g3
1874         ld      [%sp+164],%l5
1876         sllx    %l0,32,%g5
1877         add     %g4,%g2,%g2
1878         ld      [%sp+216],%l0
1879         or      %l1,%g5,%g5
1880         add     %g3,%g2,%g2             ! +=X[28+9]
1881         ld      [%sp+220],%l1
1882         add     %g5,%g2,%g2             ! +=X[28]
1883         stx     %g2,[%sp+208]
1884         add     %o3,%g2,%g2
1885         srlx    %o0,14,%o3      !! 28
1886         xor     %o1,%o2,%g5
1887         sllx    %o0,23,%g4
1888         and     %o0,%g5,%g5
1889         srlx    %o0,18,%g3
1890         xor     %g4,%o3,%o3
1891         sllx    %o0,46,%g4
1892         xor     %g3,%o3,%o3
1893         srlx    %o0,41,%g3
1894         xor     %g4,%o3,%o3
1895         sllx    %o0,50,%g4
1896         xor     %g3,%o3,%o3
1897         xor     %o2,%g5,%g5             ! Ch(e,f,g)
1898         xor     %g4,%o3,%g3             ! Sigma1(e)
1900         srlx    %o4,28,%o3
1901         add     %g5,%g2,%g2
1902         ldx     [%i3+224],%g5   ! K[28]
1903         sllx    %o4,25,%g4
1904         add     %g3,%g2,%g2
1905         srlx    %o4,34,%g3
1906         xor     %g4,%o3,%o3
1907         sllx    %o4,30,%g4
1908         xor     %g3,%o3,%o3
1909         srlx    %o4,39,%g3
1910         xor     %g4,%o3,%o3     
1911         sllx    %o4,36,%g4
1912         xor     %g3,%o3,%o3
1913         xor     %g4,%o3,%o3             ! Sigma0(a)
1915         or      %o4,%o5,%g3
1916         and     %o4,%o5,%g4
1917         and     %g1,%g3,%g3
1918         or      %g3,%g4,%g4     ! Maj(a,b,c)
1919         add     %g5,%g2,%g2             ! +=K[28]
1920         add     %g4,%o3,%o3
1922         add     %g2,%o7,%o7
1923         add     %g2,%o3,%o3
1924         sllx    %l2,32,%g3              !! Xupdate(29)
1925         or      %l3,%g3,%g3
1927         srlx    %g3,7,%g2
1928         ld      [%sp+232],%l2
1929         sllx    %g3,56,%g4
1930         ld      [%sp+236],%l3
1931         srlx    %g3,1,%g3
1932         xor     %g4,%g2,%g2
1933         sllx    %g4,7,%g4
1934         xor     %g3,%g2,%g2
1935         srlx    %g3,7,%g3
1936         xor     %g4,%g2,%g2
1937         sllx    %l6,32,%g5
1938         xor     %g3,%g2,%g2             ! sigma0(X[29+1])
1939         or      %l7,%g5,%g5
1941         srlx    %g5,6,%g4
1942         ld      [%sp+208],%l6
1943         sllx    %g5,3,%g3
1944         ld      [%sp+212],%l7
1945         srlx    %g5,19,%g5
1946         xor     %g3,%g4,%g4
1947         sllx    %g3,42,%g3
1948         xor     %g5,%g4,%g4
1949         srlx    %g5,42,%g5
1950         xor     %g3,%g4,%g4
1951         sllx    %l4,32,%g3
1952         xor     %g5,%g4,%g4     ! sigma1(X[29+14])
1953         ld      [%sp+168],%l4
1954         or      %l5,%g3,%g3
1955         ld      [%sp+172],%l5
1957         sllx    %l0,32,%g5
1958         add     %g4,%g2,%g2
1959         ld      [%sp+224],%l0
1960         or      %l1,%g5,%g5
1961         add     %g3,%g2,%g2             ! +=X[29+9]
1962         ld      [%sp+228],%l1
1963         add     %g5,%g2,%g2             ! +=X[29]
1964         stx     %g2,[%sp+216]
1965         add     %o2,%g2,%g2
1966         srlx    %o7,14,%o2      !! 29
1967         xor     %o0,%o1,%g5
1968         sllx    %o7,23,%g4
1969         and     %o7,%g5,%g5
1970         srlx    %o7,18,%g3
1971         xor     %g4,%o2,%o2
1972         sllx    %o7,46,%g4
1973         xor     %g3,%o2,%o2
1974         srlx    %o7,41,%g3
1975         xor     %g4,%o2,%o2
1976         sllx    %o7,50,%g4
1977         xor     %g3,%o2,%o2
1978         xor     %o1,%g5,%g5             ! Ch(e,f,g)
1979         xor     %g4,%o2,%g3             ! Sigma1(e)
1981         srlx    %o3,28,%o2
1982         add     %g5,%g2,%g2
1983         ldx     [%i3+232],%g5   ! K[29]
1984         sllx    %o3,25,%g4
1985         add     %g3,%g2,%g2
1986         srlx    %o3,34,%g3
1987         xor     %g4,%o2,%o2
1988         sllx    %o3,30,%g4
1989         xor     %g3,%o2,%o2
1990         srlx    %o3,39,%g3
1991         xor     %g4,%o2,%o2     
1992         sllx    %o3,36,%g4
1993         xor     %g3,%o2,%o2
1994         xor     %g4,%o2,%o2             ! Sigma0(a)
1996         or      %o3,%o4,%g3
1997         and     %o3,%o4,%g4
1998         and     %o5,%g3,%g3
1999         or      %g3,%g4,%g4     ! Maj(a,b,c)
2000         add     %g5,%g2,%g2             ! +=K[29]
2001         add     %g4,%o2,%o2
2003         add     %g2,%g1,%g1
2004         add     %g2,%o2,%o2
2005         sllx    %l2,32,%g3              !! Xupdate(30)
2006         or      %l3,%g3,%g3
2008         srlx    %g3,7,%g2
2009         ld      [%sp+112],%l2
2010         sllx    %g3,56,%g4
2011         ld      [%sp+116],%l3
2012         srlx    %g3,1,%g3
2013         xor     %g4,%g2,%g2
2014         sllx    %g4,7,%g4
2015         xor     %g3,%g2,%g2
2016         srlx    %g3,7,%g3
2017         xor     %g4,%g2,%g2
2018         sllx    %l6,32,%g5
2019         xor     %g3,%g2,%g2             ! sigma0(X[30+1])
2020         or      %l7,%g5,%g5
2022         srlx    %g5,6,%g4
2023         ld      [%sp+216],%l6
2024         sllx    %g5,3,%g3
2025         ld      [%sp+220],%l7
2026         srlx    %g5,19,%g5
2027         xor     %g3,%g4,%g4
2028         sllx    %g3,42,%g3
2029         xor     %g5,%g4,%g4
2030         srlx    %g5,42,%g5
2031         xor     %g3,%g4,%g4
2032         sllx    %l4,32,%g3
2033         xor     %g5,%g4,%g4     ! sigma1(X[30+14])
2034         ld      [%sp+176],%l4
2035         or      %l5,%g3,%g3
2036         ld      [%sp+180],%l5
2038         sllx    %l0,32,%g5
2039         add     %g4,%g2,%g2
2040         ld      [%sp+232],%l0
2041         or      %l1,%g5,%g5
2042         add     %g3,%g2,%g2             ! +=X[30+9]
2043         ld      [%sp+236],%l1
2044         add     %g5,%g2,%g2             ! +=X[30]
2045         stx     %g2,[%sp+224]
2046         add     %o1,%g2,%g2
2047         srlx    %g1,14,%o1      !! 30
2048         xor     %o7,%o0,%g5
2049         sllx    %g1,23,%g4
2050         and     %g1,%g5,%g5
2051         srlx    %g1,18,%g3
2052         xor     %g4,%o1,%o1
2053         sllx    %g1,46,%g4
2054         xor     %g3,%o1,%o1
2055         srlx    %g1,41,%g3
2056         xor     %g4,%o1,%o1
2057         sllx    %g1,50,%g4
2058         xor     %g3,%o1,%o1
2059         xor     %o0,%g5,%g5             ! Ch(e,f,g)
2060         xor     %g4,%o1,%g3             ! Sigma1(e)
2062         srlx    %o2,28,%o1
2063         add     %g5,%g2,%g2
2064         ldx     [%i3+240],%g5   ! K[30]
2065         sllx    %o2,25,%g4
2066         add     %g3,%g2,%g2
2067         srlx    %o2,34,%g3
2068         xor     %g4,%o1,%o1
2069         sllx    %o2,30,%g4
2070         xor     %g3,%o1,%o1
2071         srlx    %o2,39,%g3
2072         xor     %g4,%o1,%o1     
2073         sllx    %o2,36,%g4
2074         xor     %g3,%o1,%o1
2075         xor     %g4,%o1,%o1             ! Sigma0(a)
2077         or      %o2,%o3,%g3
2078         and     %o2,%o3,%g4
2079         and     %o4,%g3,%g3
2080         or      %g3,%g4,%g4     ! Maj(a,b,c)
2081         add     %g5,%g2,%g2             ! +=K[30]
2082         add     %g4,%o1,%o1
2084         add     %g2,%o5,%o5
2085         add     %g2,%o1,%o1
2086         sllx    %l2,32,%g3              !! Xupdate(31)
2087         or      %l3,%g3,%g3
2089         srlx    %g3,7,%g2
2090         ld      [%sp+120],%l2
2091         sllx    %g3,56,%g4
2092         ld      [%sp+124],%l3
2093         srlx    %g3,1,%g3
2094         xor     %g4,%g2,%g2
2095         sllx    %g4,7,%g4
2096         xor     %g3,%g2,%g2
2097         srlx    %g3,7,%g3
2098         xor     %g4,%g2,%g2
2099         sllx    %l6,32,%g5
2100         xor     %g3,%g2,%g2             ! sigma0(X[31+1])
2101         or      %l7,%g5,%g5
2103         srlx    %g5,6,%g4
2104         ld      [%sp+224],%l6
2105         sllx    %g5,3,%g3
2106         ld      [%sp+228],%l7
2107         srlx    %g5,19,%g5
2108         xor     %g3,%g4,%g4
2109         sllx    %g3,42,%g3
2110         xor     %g5,%g4,%g4
2111         srlx    %g5,42,%g5
2112         xor     %g3,%g4,%g4
2113         sllx    %l4,32,%g3
2114         xor     %g5,%g4,%g4     ! sigma1(X[31+14])
2115         ld      [%sp+184],%l4
2116         or      %l5,%g3,%g3
2117         ld      [%sp+188],%l5
2119         sllx    %l0,32,%g5
2120         add     %g4,%g2,%g2
2121         ld      [%sp+112],%l0
2122         or      %l1,%g5,%g5
2123         add     %g3,%g2,%g2             ! +=X[31+9]
2124         ld      [%sp+116],%l1
2125         add     %g5,%g2,%g2             ! +=X[31]
2126         stx     %g2,[%sp+232]
2127         add     %o0,%g2,%g2
2128         srlx    %o5,14,%o0      !! 31
2129         xor     %g1,%o7,%g5
2130         sllx    %o5,23,%g4
2131         and     %o5,%g5,%g5
2132         srlx    %o5,18,%g3
2133         xor     %g4,%o0,%o0
2134         sllx    %o5,46,%g4
2135         xor     %g3,%o0,%o0
2136         srlx    %o5,41,%g3
2137         xor     %g4,%o0,%o0
2138         sllx    %o5,50,%g4
2139         xor     %g3,%o0,%o0
2140         xor     %o7,%g5,%g5             ! Ch(e,f,g)
2141         xor     %g4,%o0,%g3             ! Sigma1(e)
2143         srlx    %o1,28,%o0
2144         add     %g5,%g2,%g2
2145         ldx     [%i3+248],%g5   ! K[31]
2146         sllx    %o1,25,%g4
2147         add     %g3,%g2,%g2
2148         srlx    %o1,34,%g3
2149         xor     %g4,%o0,%o0
2150         sllx    %o1,30,%g4
2151         xor     %g3,%o0,%o0
2152         srlx    %o1,39,%g3
2153         xor     %g4,%o0,%o0     
2154         sllx    %o1,36,%g4
2155         xor     %g3,%o0,%o0
2156         xor     %g4,%o0,%o0             ! Sigma0(a)
2158         or      %o1,%o2,%g3
2159         and     %o1,%o2,%g4
2160         and     %o3,%g3,%g3
2161         or      %g3,%g4,%g4     ! Maj(a,b,c)
2162         add     %g5,%g2,%g2             ! +=K[31]
2163         add     %g4,%o0,%o0
2165         add     %g2,%o4,%o4
2166         add     %g2,%o0,%o0
2167         and     %g5,0xfff,%g5
2168         cmp     %g5,2071
2169         bne     .L16_xx
2170         add     %i3,128,%i3     ! Ktbl+=16
2172         ld      [%i0+0],%l0
2173         ld      [%i0+4],%l1
2174         ld      [%i0+8],%l2
2175         ld      [%i0+12],%l3
2176         ld      [%i0+16],%l4
2177         ld      [%i0+20],%l5
2178         ld      [%i0+24],%l6
2180         sllx    %l0,32,%g3
2181         ld      [%i0+28],%l7
2182         sllx    %l2,32,%g4
2183         or      %l1,%g3,%g3
2184         or      %l3,%g4,%g4
2185         add     %g3,%o0,%o0
2186         add     %g4,%o1,%o1
2187         stx     %o0,[%i0+0]
2188         sllx    %l4,32,%g5
2189         stx     %o1,[%i0+8]
2190         sllx    %l6,32,%g2
2191         or      %l5,%g5,%g5
2192         or      %l7,%g2,%g2
2193         add     %g5,%o2,%o2
2194         stx     %o2,[%i0+16]
2195         add     %g2,%o3,%o3
2196         stx     %o3,[%i0+24]
2198         ld      [%i0+32],%l0
2199         ld      [%i0+36],%l1
2200         ld      [%i0+40],%l2
2201         ld      [%i0+44],%l3
2202         ld      [%i0+48],%l4
2203         ld      [%i0+52],%l5
2204         ld      [%i0+56],%l6
2206         sllx    %l0,32,%g3
2207         ld      [%i0+60],%l7
2208         sllx    %l2,32,%g4
2209         or      %l1,%g3,%g3
2210         or      %l3,%g4,%g4
2211         add     %g3,%o4,%o4
2212         add     %g4,%o5,%o5
2213         stx     %o4,[%i0+32]
2214         sllx    %l4,32,%g5
2215         stx     %o5,[%i0+40]
2216         sllx    %l6,32,%g2
2217         or      %l5,%g5,%g5
2218         or      %l7,%g2,%g2
2219         add     %g5,%g1,%g1
2220         stx     %g1,[%i0+48]
2221         add     %g2,%o7,%o7
2222         stx     %o7,[%i0+56]
2223         add     %i1,128,%i1             ! advance inp
2224         cmp     %i1,%i2
2225         bne     %icc,.Lloop
2226         sub     %i3,512,%i3     ! rewind Ktbl
2228         ret
2229         restore
2230 .type   sha512_block_data_order,#function
2231 .size   sha512_block_data_order,(.-sha512_block_data_order)
2232 .asciz  "SHA512 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>"
2233 .align  4