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