OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / crypto / curve25519 / ladderstep_amd64.s
1 // Copyright 2012 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // This code was translated into a form compatible with 6a from the public
6 // domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html
7
8 // +build amd64,!gccgo,!appengine
9
10 #include "const_amd64.h"
11
12 // func ladderstep(inout *[5][5]uint64)
13 TEXT ·ladderstep(SB),0,$296-8
14         MOVQ inout+0(FP),DI
15
16         MOVQ 40(DI),SI
17         MOVQ 48(DI),DX
18         MOVQ 56(DI),CX
19         MOVQ 64(DI),R8
20         MOVQ 72(DI),R9
21         MOVQ SI,AX
22         MOVQ DX,R10
23         MOVQ CX,R11
24         MOVQ R8,R12
25         MOVQ R9,R13
26         ADDQ ·_2P0(SB),AX
27         ADDQ ·_2P1234(SB),R10
28         ADDQ ·_2P1234(SB),R11
29         ADDQ ·_2P1234(SB),R12
30         ADDQ ·_2P1234(SB),R13
31         ADDQ 80(DI),SI
32         ADDQ 88(DI),DX
33         ADDQ 96(DI),CX
34         ADDQ 104(DI),R8
35         ADDQ 112(DI),R9
36         SUBQ 80(DI),AX
37         SUBQ 88(DI),R10
38         SUBQ 96(DI),R11
39         SUBQ 104(DI),R12
40         SUBQ 112(DI),R13
41         MOVQ SI,0(SP)
42         MOVQ DX,8(SP)
43         MOVQ CX,16(SP)
44         MOVQ R8,24(SP)
45         MOVQ R9,32(SP)
46         MOVQ AX,40(SP)
47         MOVQ R10,48(SP)
48         MOVQ R11,56(SP)
49         MOVQ R12,64(SP)
50         MOVQ R13,72(SP)
51         MOVQ 40(SP),AX
52         MULQ 40(SP)
53         MOVQ AX,SI
54         MOVQ DX,CX
55         MOVQ 40(SP),AX
56         SHLQ $1,AX
57         MULQ 48(SP)
58         MOVQ AX,R8
59         MOVQ DX,R9
60         MOVQ 40(SP),AX
61         SHLQ $1,AX
62         MULQ 56(SP)
63         MOVQ AX,R10
64         MOVQ DX,R11
65         MOVQ 40(SP),AX
66         SHLQ $1,AX
67         MULQ 64(SP)
68         MOVQ AX,R12
69         MOVQ DX,R13
70         MOVQ 40(SP),AX
71         SHLQ $1,AX
72         MULQ 72(SP)
73         MOVQ AX,R14
74         MOVQ DX,R15
75         MOVQ 48(SP),AX
76         MULQ 48(SP)
77         ADDQ AX,R10
78         ADCQ DX,R11
79         MOVQ 48(SP),AX
80         SHLQ $1,AX
81         MULQ 56(SP)
82         ADDQ AX,R12
83         ADCQ DX,R13
84         MOVQ 48(SP),AX
85         SHLQ $1,AX
86         MULQ 64(SP)
87         ADDQ AX,R14
88         ADCQ DX,R15
89         MOVQ 48(SP),DX
90         IMUL3Q $38,DX,AX
91         MULQ 72(SP)
92         ADDQ AX,SI
93         ADCQ DX,CX
94         MOVQ 56(SP),AX
95         MULQ 56(SP)
96         ADDQ AX,R14
97         ADCQ DX,R15
98         MOVQ 56(SP),DX
99         IMUL3Q $38,DX,AX
100         MULQ 64(SP)
101         ADDQ AX,SI
102         ADCQ DX,CX
103         MOVQ 56(SP),DX
104         IMUL3Q $38,DX,AX
105         MULQ 72(SP)
106         ADDQ AX,R8
107         ADCQ DX,R9
108         MOVQ 64(SP),DX
109         IMUL3Q $19,DX,AX
110         MULQ 64(SP)
111         ADDQ AX,R8
112         ADCQ DX,R9
113         MOVQ 64(SP),DX
114         IMUL3Q $38,DX,AX
115         MULQ 72(SP)
116         ADDQ AX,R10
117         ADCQ DX,R11
118         MOVQ 72(SP),DX
119         IMUL3Q $19,DX,AX
120         MULQ 72(SP)
121         ADDQ AX,R12
122         ADCQ DX,R13
123         MOVQ $REDMASK51,DX
124         SHLQ $13,CX:SI
125         ANDQ DX,SI
126         SHLQ $13,R9:R8
127         ANDQ DX,R8
128         ADDQ CX,R8
129         SHLQ $13,R11:R10
130         ANDQ DX,R10
131         ADDQ R9,R10
132         SHLQ $13,R13:R12
133         ANDQ DX,R12
134         ADDQ R11,R12
135         SHLQ $13,R15:R14
136         ANDQ DX,R14
137         ADDQ R13,R14
138         IMUL3Q $19,R15,CX
139         ADDQ CX,SI
140         MOVQ SI,CX
141         SHRQ $51,CX
142         ADDQ R8,CX
143         ANDQ DX,SI
144         MOVQ CX,R8
145         SHRQ $51,CX
146         ADDQ R10,CX
147         ANDQ DX,R8
148         MOVQ CX,R9
149         SHRQ $51,CX
150         ADDQ R12,CX
151         ANDQ DX,R9
152         MOVQ CX,AX
153         SHRQ $51,CX
154         ADDQ R14,CX
155         ANDQ DX,AX
156         MOVQ CX,R10
157         SHRQ $51,CX
158         IMUL3Q $19,CX,CX
159         ADDQ CX,SI
160         ANDQ DX,R10
161         MOVQ SI,80(SP)
162         MOVQ R8,88(SP)
163         MOVQ R9,96(SP)
164         MOVQ AX,104(SP)
165         MOVQ R10,112(SP)
166         MOVQ 0(SP),AX
167         MULQ 0(SP)
168         MOVQ AX,SI
169         MOVQ DX,CX
170         MOVQ 0(SP),AX
171         SHLQ $1,AX
172         MULQ 8(SP)
173         MOVQ AX,R8
174         MOVQ DX,R9
175         MOVQ 0(SP),AX
176         SHLQ $1,AX
177         MULQ 16(SP)
178         MOVQ AX,R10
179         MOVQ DX,R11
180         MOVQ 0(SP),AX
181         SHLQ $1,AX
182         MULQ 24(SP)
183         MOVQ AX,R12
184         MOVQ DX,R13
185         MOVQ 0(SP),AX
186         SHLQ $1,AX
187         MULQ 32(SP)
188         MOVQ AX,R14
189         MOVQ DX,R15
190         MOVQ 8(SP),AX
191         MULQ 8(SP)
192         ADDQ AX,R10
193         ADCQ DX,R11
194         MOVQ 8(SP),AX
195         SHLQ $1,AX
196         MULQ 16(SP)
197         ADDQ AX,R12
198         ADCQ DX,R13
199         MOVQ 8(SP),AX
200         SHLQ $1,AX
201         MULQ 24(SP)
202         ADDQ AX,R14
203         ADCQ DX,R15
204         MOVQ 8(SP),DX
205         IMUL3Q $38,DX,AX
206         MULQ 32(SP)
207         ADDQ AX,SI
208         ADCQ DX,CX
209         MOVQ 16(SP),AX
210         MULQ 16(SP)
211         ADDQ AX,R14
212         ADCQ DX,R15
213         MOVQ 16(SP),DX
214         IMUL3Q $38,DX,AX
215         MULQ 24(SP)
216         ADDQ AX,SI
217         ADCQ DX,CX
218         MOVQ 16(SP),DX
219         IMUL3Q $38,DX,AX
220         MULQ 32(SP)
221         ADDQ AX,R8
222         ADCQ DX,R9
223         MOVQ 24(SP),DX
224         IMUL3Q $19,DX,AX
225         MULQ 24(SP)
226         ADDQ AX,R8
227         ADCQ DX,R9
228         MOVQ 24(SP),DX
229         IMUL3Q $38,DX,AX
230         MULQ 32(SP)
231         ADDQ AX,R10
232         ADCQ DX,R11
233         MOVQ 32(SP),DX
234         IMUL3Q $19,DX,AX
235         MULQ 32(SP)
236         ADDQ AX,R12
237         ADCQ DX,R13
238         MOVQ $REDMASK51,DX
239         SHLQ $13,CX:SI
240         ANDQ DX,SI
241         SHLQ $13,R9:R8
242         ANDQ DX,R8
243         ADDQ CX,R8
244         SHLQ $13,R11:R10
245         ANDQ DX,R10
246         ADDQ R9,R10
247         SHLQ $13,R13:R12
248         ANDQ DX,R12
249         ADDQ R11,R12
250         SHLQ $13,R15:R14
251         ANDQ DX,R14
252         ADDQ R13,R14
253         IMUL3Q $19,R15,CX
254         ADDQ CX,SI
255         MOVQ SI,CX
256         SHRQ $51,CX
257         ADDQ R8,CX
258         ANDQ DX,SI
259         MOVQ CX,R8
260         SHRQ $51,CX
261         ADDQ R10,CX
262         ANDQ DX,R8
263         MOVQ CX,R9
264         SHRQ $51,CX
265         ADDQ R12,CX
266         ANDQ DX,R9
267         MOVQ CX,AX
268         SHRQ $51,CX
269         ADDQ R14,CX
270         ANDQ DX,AX
271         MOVQ CX,R10
272         SHRQ $51,CX
273         IMUL3Q $19,CX,CX
274         ADDQ CX,SI
275         ANDQ DX,R10
276         MOVQ SI,120(SP)
277         MOVQ R8,128(SP)
278         MOVQ R9,136(SP)
279         MOVQ AX,144(SP)
280         MOVQ R10,152(SP)
281         MOVQ SI,SI
282         MOVQ R8,DX
283         MOVQ R9,CX
284         MOVQ AX,R8
285         MOVQ R10,R9
286         ADDQ ·_2P0(SB),SI
287         ADDQ ·_2P1234(SB),DX
288         ADDQ ·_2P1234(SB),CX
289         ADDQ ·_2P1234(SB),R8
290         ADDQ ·_2P1234(SB),R9
291         SUBQ 80(SP),SI
292         SUBQ 88(SP),DX
293         SUBQ 96(SP),CX
294         SUBQ 104(SP),R8
295         SUBQ 112(SP),R9
296         MOVQ SI,160(SP)
297         MOVQ DX,168(SP)
298         MOVQ CX,176(SP)
299         MOVQ R8,184(SP)
300         MOVQ R9,192(SP)
301         MOVQ 120(DI),SI
302         MOVQ 128(DI),DX
303         MOVQ 136(DI),CX
304         MOVQ 144(DI),R8
305         MOVQ 152(DI),R9
306         MOVQ SI,AX
307         MOVQ DX,R10
308         MOVQ CX,R11
309         MOVQ R8,R12
310         MOVQ R9,R13
311         ADDQ ·_2P0(SB),AX
312         ADDQ ·_2P1234(SB),R10
313         ADDQ ·_2P1234(SB),R11
314         ADDQ ·_2P1234(SB),R12
315         ADDQ ·_2P1234(SB),R13
316         ADDQ 160(DI),SI
317         ADDQ 168(DI),DX
318         ADDQ 176(DI),CX
319         ADDQ 184(DI),R8
320         ADDQ 192(DI),R9
321         SUBQ 160(DI),AX
322         SUBQ 168(DI),R10
323         SUBQ 176(DI),R11
324         SUBQ 184(DI),R12
325         SUBQ 192(DI),R13
326         MOVQ SI,200(SP)
327         MOVQ DX,208(SP)
328         MOVQ CX,216(SP)
329         MOVQ R8,224(SP)
330         MOVQ R9,232(SP)
331         MOVQ AX,240(SP)
332         MOVQ R10,248(SP)
333         MOVQ R11,256(SP)
334         MOVQ R12,264(SP)
335         MOVQ R13,272(SP)
336         MOVQ 224(SP),SI
337         IMUL3Q $19,SI,AX
338         MOVQ AX,280(SP)
339         MULQ 56(SP)
340         MOVQ AX,SI
341         MOVQ DX,CX
342         MOVQ 232(SP),DX
343         IMUL3Q $19,DX,AX
344         MOVQ AX,288(SP)
345         MULQ 48(SP)
346         ADDQ AX,SI
347         ADCQ DX,CX
348         MOVQ 200(SP),AX
349         MULQ 40(SP)
350         ADDQ AX,SI
351         ADCQ DX,CX
352         MOVQ 200(SP),AX
353         MULQ 48(SP)
354         MOVQ AX,R8
355         MOVQ DX,R9
356         MOVQ 200(SP),AX
357         MULQ 56(SP)
358         MOVQ AX,R10
359         MOVQ DX,R11
360         MOVQ 200(SP),AX
361         MULQ 64(SP)
362         MOVQ AX,R12
363         MOVQ DX,R13
364         MOVQ 200(SP),AX
365         MULQ 72(SP)
366         MOVQ AX,R14
367         MOVQ DX,R15
368         MOVQ 208(SP),AX
369         MULQ 40(SP)
370         ADDQ AX,R8
371         ADCQ DX,R9
372         MOVQ 208(SP),AX
373         MULQ 48(SP)
374         ADDQ AX,R10
375         ADCQ DX,R11
376         MOVQ 208(SP),AX
377         MULQ 56(SP)
378         ADDQ AX,R12
379         ADCQ DX,R13
380         MOVQ 208(SP),AX
381         MULQ 64(SP)
382         ADDQ AX,R14
383         ADCQ DX,R15
384         MOVQ 208(SP),DX
385         IMUL3Q $19,DX,AX
386         MULQ 72(SP)
387         ADDQ AX,SI
388         ADCQ DX,CX
389         MOVQ 216(SP),AX
390         MULQ 40(SP)
391         ADDQ AX,R10
392         ADCQ DX,R11
393         MOVQ 216(SP),AX
394         MULQ 48(SP)
395         ADDQ AX,R12
396         ADCQ DX,R13
397         MOVQ 216(SP),AX
398         MULQ 56(SP)
399         ADDQ AX,R14
400         ADCQ DX,R15
401         MOVQ 216(SP),DX
402         IMUL3Q $19,DX,AX
403         MULQ 64(SP)
404         ADDQ AX,SI
405         ADCQ DX,CX
406         MOVQ 216(SP),DX
407         IMUL3Q $19,DX,AX
408         MULQ 72(SP)
409         ADDQ AX,R8
410         ADCQ DX,R9
411         MOVQ 224(SP),AX
412         MULQ 40(SP)
413         ADDQ AX,R12
414         ADCQ DX,R13
415         MOVQ 224(SP),AX
416         MULQ 48(SP)
417         ADDQ AX,R14
418         ADCQ DX,R15
419         MOVQ 280(SP),AX
420         MULQ 64(SP)
421         ADDQ AX,R8
422         ADCQ DX,R9
423         MOVQ 280(SP),AX
424         MULQ 72(SP)
425         ADDQ AX,R10
426         ADCQ DX,R11
427         MOVQ 232(SP),AX
428         MULQ 40(SP)
429         ADDQ AX,R14
430         ADCQ DX,R15
431         MOVQ 288(SP),AX
432         MULQ 56(SP)
433         ADDQ AX,R8
434         ADCQ DX,R9
435         MOVQ 288(SP),AX
436         MULQ 64(SP)
437         ADDQ AX,R10
438         ADCQ DX,R11
439         MOVQ 288(SP),AX
440         MULQ 72(SP)
441         ADDQ AX,R12
442         ADCQ DX,R13
443         MOVQ $REDMASK51,DX
444         SHLQ $13,CX:SI
445         ANDQ DX,SI
446         SHLQ $13,R9:R8
447         ANDQ DX,R8
448         ADDQ CX,R8
449         SHLQ $13,R11:R10
450         ANDQ DX,R10
451         ADDQ R9,R10
452         SHLQ $13,R13:R12
453         ANDQ DX,R12
454         ADDQ R11,R12
455         SHLQ $13,R15:R14
456         ANDQ DX,R14
457         ADDQ R13,R14
458         IMUL3Q $19,R15,CX
459         ADDQ CX,SI
460         MOVQ SI,CX
461         SHRQ $51,CX
462         ADDQ R8,CX
463         MOVQ CX,R8
464         SHRQ $51,CX
465         ANDQ DX,SI
466         ADDQ R10,CX
467         MOVQ CX,R9
468         SHRQ $51,CX
469         ANDQ DX,R8
470         ADDQ R12,CX
471         MOVQ CX,AX
472         SHRQ $51,CX
473         ANDQ DX,R9
474         ADDQ R14,CX
475         MOVQ CX,R10
476         SHRQ $51,CX
477         ANDQ DX,AX
478         IMUL3Q $19,CX,CX
479         ADDQ CX,SI
480         ANDQ DX,R10
481         MOVQ SI,40(SP)
482         MOVQ R8,48(SP)
483         MOVQ R9,56(SP)
484         MOVQ AX,64(SP)
485         MOVQ R10,72(SP)
486         MOVQ 264(SP),SI
487         IMUL3Q $19,SI,AX
488         MOVQ AX,200(SP)
489         MULQ 16(SP)
490         MOVQ AX,SI
491         MOVQ DX,CX
492         MOVQ 272(SP),DX
493         IMUL3Q $19,DX,AX
494         MOVQ AX,208(SP)
495         MULQ 8(SP)
496         ADDQ AX,SI
497         ADCQ DX,CX
498         MOVQ 240(SP),AX
499         MULQ 0(SP)
500         ADDQ AX,SI
501         ADCQ DX,CX
502         MOVQ 240(SP),AX
503         MULQ 8(SP)
504         MOVQ AX,R8
505         MOVQ DX,R9
506         MOVQ 240(SP),AX
507         MULQ 16(SP)
508         MOVQ AX,R10
509         MOVQ DX,R11
510         MOVQ 240(SP),AX
511         MULQ 24(SP)
512         MOVQ AX,R12
513         MOVQ DX,R13
514         MOVQ 240(SP),AX
515         MULQ 32(SP)
516         MOVQ AX,R14
517         MOVQ DX,R15
518         MOVQ 248(SP),AX
519         MULQ 0(SP)
520         ADDQ AX,R8
521         ADCQ DX,R9
522         MOVQ 248(SP),AX
523         MULQ 8(SP)
524         ADDQ AX,R10
525         ADCQ DX,R11
526         MOVQ 248(SP),AX
527         MULQ 16(SP)
528         ADDQ AX,R12
529         ADCQ DX,R13
530         MOVQ 248(SP),AX
531         MULQ 24(SP)
532         ADDQ AX,R14
533         ADCQ DX,R15
534         MOVQ 248(SP),DX
535         IMUL3Q $19,DX,AX
536         MULQ 32(SP)
537         ADDQ AX,SI
538         ADCQ DX,CX
539         MOVQ 256(SP),AX
540         MULQ 0(SP)
541         ADDQ AX,R10
542         ADCQ DX,R11
543         MOVQ 256(SP),AX
544         MULQ 8(SP)
545         ADDQ AX,R12
546         ADCQ DX,R13
547         MOVQ 256(SP),AX
548         MULQ 16(SP)
549         ADDQ AX,R14
550         ADCQ DX,R15
551         MOVQ 256(SP),DX
552         IMUL3Q $19,DX,AX
553         MULQ 24(SP)
554         ADDQ AX,SI
555         ADCQ DX,CX
556         MOVQ 256(SP),DX
557         IMUL3Q $19,DX,AX
558         MULQ 32(SP)
559         ADDQ AX,R8
560         ADCQ DX,R9
561         MOVQ 264(SP),AX
562         MULQ 0(SP)
563         ADDQ AX,R12
564         ADCQ DX,R13
565         MOVQ 264(SP),AX
566         MULQ 8(SP)
567         ADDQ AX,R14
568         ADCQ DX,R15
569         MOVQ 200(SP),AX
570         MULQ 24(SP)
571         ADDQ AX,R8
572         ADCQ DX,R9
573         MOVQ 200(SP),AX
574         MULQ 32(SP)
575         ADDQ AX,R10
576         ADCQ DX,R11
577         MOVQ 272(SP),AX
578         MULQ 0(SP)
579         ADDQ AX,R14
580         ADCQ DX,R15
581         MOVQ 208(SP),AX
582         MULQ 16(SP)
583         ADDQ AX,R8
584         ADCQ DX,R9
585         MOVQ 208(SP),AX
586         MULQ 24(SP)
587         ADDQ AX,R10
588         ADCQ DX,R11
589         MOVQ 208(SP),AX
590         MULQ 32(SP)
591         ADDQ AX,R12
592         ADCQ DX,R13
593         MOVQ $REDMASK51,DX
594         SHLQ $13,CX:SI
595         ANDQ DX,SI
596         SHLQ $13,R9:R8
597         ANDQ DX,R8
598         ADDQ CX,R8
599         SHLQ $13,R11:R10
600         ANDQ DX,R10
601         ADDQ R9,R10
602         SHLQ $13,R13:R12
603         ANDQ DX,R12
604         ADDQ R11,R12
605         SHLQ $13,R15:R14
606         ANDQ DX,R14
607         ADDQ R13,R14
608         IMUL3Q $19,R15,CX
609         ADDQ CX,SI
610         MOVQ SI,CX
611         SHRQ $51,CX
612         ADDQ R8,CX
613         MOVQ CX,R8
614         SHRQ $51,CX
615         ANDQ DX,SI
616         ADDQ R10,CX
617         MOVQ CX,R9
618         SHRQ $51,CX
619         ANDQ DX,R8
620         ADDQ R12,CX
621         MOVQ CX,AX
622         SHRQ $51,CX
623         ANDQ DX,R9
624         ADDQ R14,CX
625         MOVQ CX,R10
626         SHRQ $51,CX
627         ANDQ DX,AX
628         IMUL3Q $19,CX,CX
629         ADDQ CX,SI
630         ANDQ DX,R10
631         MOVQ SI,DX
632         MOVQ R8,CX
633         MOVQ R9,R11
634         MOVQ AX,R12
635         MOVQ R10,R13
636         ADDQ ·_2P0(SB),DX
637         ADDQ ·_2P1234(SB),CX
638         ADDQ ·_2P1234(SB),R11
639         ADDQ ·_2P1234(SB),R12
640         ADDQ ·_2P1234(SB),R13
641         ADDQ 40(SP),SI
642         ADDQ 48(SP),R8
643         ADDQ 56(SP),R9
644         ADDQ 64(SP),AX
645         ADDQ 72(SP),R10
646         SUBQ 40(SP),DX
647         SUBQ 48(SP),CX
648         SUBQ 56(SP),R11
649         SUBQ 64(SP),R12
650         SUBQ 72(SP),R13
651         MOVQ SI,120(DI)
652         MOVQ R8,128(DI)
653         MOVQ R9,136(DI)
654         MOVQ AX,144(DI)
655         MOVQ R10,152(DI)
656         MOVQ DX,160(DI)
657         MOVQ CX,168(DI)
658         MOVQ R11,176(DI)
659         MOVQ R12,184(DI)
660         MOVQ R13,192(DI)
661         MOVQ 120(DI),AX
662         MULQ 120(DI)
663         MOVQ AX,SI
664         MOVQ DX,CX
665         MOVQ 120(DI),AX
666         SHLQ $1,AX
667         MULQ 128(DI)
668         MOVQ AX,R8
669         MOVQ DX,R9
670         MOVQ 120(DI),AX
671         SHLQ $1,AX
672         MULQ 136(DI)
673         MOVQ AX,R10
674         MOVQ DX,R11
675         MOVQ 120(DI),AX
676         SHLQ $1,AX
677         MULQ 144(DI)
678         MOVQ AX,R12
679         MOVQ DX,R13
680         MOVQ 120(DI),AX
681         SHLQ $1,AX
682         MULQ 152(DI)
683         MOVQ AX,R14
684         MOVQ DX,R15
685         MOVQ 128(DI),AX
686         MULQ 128(DI)
687         ADDQ AX,R10
688         ADCQ DX,R11
689         MOVQ 128(DI),AX
690         SHLQ $1,AX
691         MULQ 136(DI)
692         ADDQ AX,R12
693         ADCQ DX,R13
694         MOVQ 128(DI),AX
695         SHLQ $1,AX
696         MULQ 144(DI)
697         ADDQ AX,R14
698         ADCQ DX,R15
699         MOVQ 128(DI),DX
700         IMUL3Q $38,DX,AX
701         MULQ 152(DI)
702         ADDQ AX,SI
703         ADCQ DX,CX
704         MOVQ 136(DI),AX
705         MULQ 136(DI)
706         ADDQ AX,R14
707         ADCQ DX,R15
708         MOVQ 136(DI),DX
709         IMUL3Q $38,DX,AX
710         MULQ 144(DI)
711         ADDQ AX,SI
712         ADCQ DX,CX
713         MOVQ 136(DI),DX
714         IMUL3Q $38,DX,AX
715         MULQ 152(DI)
716         ADDQ AX,R8
717         ADCQ DX,R9
718         MOVQ 144(DI),DX
719         IMUL3Q $19,DX,AX
720         MULQ 144(DI)
721         ADDQ AX,R8
722         ADCQ DX,R9
723         MOVQ 144(DI),DX
724         IMUL3Q $38,DX,AX
725         MULQ 152(DI)
726         ADDQ AX,R10
727         ADCQ DX,R11
728         MOVQ 152(DI),DX
729         IMUL3Q $19,DX,AX
730         MULQ 152(DI)
731         ADDQ AX,R12
732         ADCQ DX,R13
733         MOVQ $REDMASK51,DX
734         SHLQ $13,CX:SI
735         ANDQ DX,SI
736         SHLQ $13,R9:R8
737         ANDQ DX,R8
738         ADDQ CX,R8
739         SHLQ $13,R11:R10
740         ANDQ DX,R10
741         ADDQ R9,R10
742         SHLQ $13,R13:R12
743         ANDQ DX,R12
744         ADDQ R11,R12
745         SHLQ $13,R15:R14
746         ANDQ DX,R14
747         ADDQ R13,R14
748         IMUL3Q $19,R15,CX
749         ADDQ CX,SI
750         MOVQ SI,CX
751         SHRQ $51,CX
752         ADDQ R8,CX
753         ANDQ DX,SI
754         MOVQ CX,R8
755         SHRQ $51,CX
756         ADDQ R10,CX
757         ANDQ DX,R8
758         MOVQ CX,R9
759         SHRQ $51,CX
760         ADDQ R12,CX
761         ANDQ DX,R9
762         MOVQ CX,AX
763         SHRQ $51,CX
764         ADDQ R14,CX
765         ANDQ DX,AX
766         MOVQ CX,R10
767         SHRQ $51,CX
768         IMUL3Q $19,CX,CX
769         ADDQ CX,SI
770         ANDQ DX,R10
771         MOVQ SI,120(DI)
772         MOVQ R8,128(DI)
773         MOVQ R9,136(DI)
774         MOVQ AX,144(DI)
775         MOVQ R10,152(DI)
776         MOVQ 160(DI),AX
777         MULQ 160(DI)
778         MOVQ AX,SI
779         MOVQ DX,CX
780         MOVQ 160(DI),AX
781         SHLQ $1,AX
782         MULQ 168(DI)
783         MOVQ AX,R8
784         MOVQ DX,R9
785         MOVQ 160(DI),AX
786         SHLQ $1,AX
787         MULQ 176(DI)
788         MOVQ AX,R10
789         MOVQ DX,R11
790         MOVQ 160(DI),AX
791         SHLQ $1,AX
792         MULQ 184(DI)
793         MOVQ AX,R12
794         MOVQ DX,R13
795         MOVQ 160(DI),AX
796         SHLQ $1,AX
797         MULQ 192(DI)
798         MOVQ AX,R14
799         MOVQ DX,R15
800         MOVQ 168(DI),AX
801         MULQ 168(DI)
802         ADDQ AX,R10
803         ADCQ DX,R11
804         MOVQ 168(DI),AX
805         SHLQ $1,AX
806         MULQ 176(DI)
807         ADDQ AX,R12
808         ADCQ DX,R13
809         MOVQ 168(DI),AX
810         SHLQ $1,AX
811         MULQ 184(DI)
812         ADDQ AX,R14
813         ADCQ DX,R15
814         MOVQ 168(DI),DX
815         IMUL3Q $38,DX,AX
816         MULQ 192(DI)
817         ADDQ AX,SI
818         ADCQ DX,CX
819         MOVQ 176(DI),AX
820         MULQ 176(DI)
821         ADDQ AX,R14
822         ADCQ DX,R15
823         MOVQ 176(DI),DX
824         IMUL3Q $38,DX,AX
825         MULQ 184(DI)
826         ADDQ AX,SI
827         ADCQ DX,CX
828         MOVQ 176(DI),DX
829         IMUL3Q $38,DX,AX
830         MULQ 192(DI)
831         ADDQ AX,R8
832         ADCQ DX,R9
833         MOVQ 184(DI),DX
834         IMUL3Q $19,DX,AX
835         MULQ 184(DI)
836         ADDQ AX,R8
837         ADCQ DX,R9
838         MOVQ 184(DI),DX
839         IMUL3Q $38,DX,AX
840         MULQ 192(DI)
841         ADDQ AX,R10
842         ADCQ DX,R11
843         MOVQ 192(DI),DX
844         IMUL3Q $19,DX,AX
845         MULQ 192(DI)
846         ADDQ AX,R12
847         ADCQ DX,R13
848         MOVQ $REDMASK51,DX
849         SHLQ $13,CX:SI
850         ANDQ DX,SI
851         SHLQ $13,R9:R8
852         ANDQ DX,R8
853         ADDQ CX,R8
854         SHLQ $13,R11:R10
855         ANDQ DX,R10
856         ADDQ R9,R10
857         SHLQ $13,R13:R12
858         ANDQ DX,R12
859         ADDQ R11,R12
860         SHLQ $13,R15:R14
861         ANDQ DX,R14
862         ADDQ R13,R14
863         IMUL3Q $19,R15,CX
864         ADDQ CX,SI
865         MOVQ SI,CX
866         SHRQ $51,CX
867         ADDQ R8,CX
868         ANDQ DX,SI
869         MOVQ CX,R8
870         SHRQ $51,CX
871         ADDQ R10,CX
872         ANDQ DX,R8
873         MOVQ CX,R9
874         SHRQ $51,CX
875         ADDQ R12,CX
876         ANDQ DX,R9
877         MOVQ CX,AX
878         SHRQ $51,CX
879         ADDQ R14,CX
880         ANDQ DX,AX
881         MOVQ CX,R10
882         SHRQ $51,CX
883         IMUL3Q $19,CX,CX
884         ADDQ CX,SI
885         ANDQ DX,R10
886         MOVQ SI,160(DI)
887         MOVQ R8,168(DI)
888         MOVQ R9,176(DI)
889         MOVQ AX,184(DI)
890         MOVQ R10,192(DI)
891         MOVQ 184(DI),SI
892         IMUL3Q $19,SI,AX
893         MOVQ AX,0(SP)
894         MULQ 16(DI)
895         MOVQ AX,SI
896         MOVQ DX,CX
897         MOVQ 192(DI),DX
898         IMUL3Q $19,DX,AX
899         MOVQ AX,8(SP)
900         MULQ 8(DI)
901         ADDQ AX,SI
902         ADCQ DX,CX
903         MOVQ 160(DI),AX
904         MULQ 0(DI)
905         ADDQ AX,SI
906         ADCQ DX,CX
907         MOVQ 160(DI),AX
908         MULQ 8(DI)
909         MOVQ AX,R8
910         MOVQ DX,R9
911         MOVQ 160(DI),AX
912         MULQ 16(DI)
913         MOVQ AX,R10
914         MOVQ DX,R11
915         MOVQ 160(DI),AX
916         MULQ 24(DI)
917         MOVQ AX,R12
918         MOVQ DX,R13
919         MOVQ 160(DI),AX
920         MULQ 32(DI)
921         MOVQ AX,R14
922         MOVQ DX,R15
923         MOVQ 168(DI),AX
924         MULQ 0(DI)
925         ADDQ AX,R8
926         ADCQ DX,R9
927         MOVQ 168(DI),AX
928         MULQ 8(DI)
929         ADDQ AX,R10
930         ADCQ DX,R11
931         MOVQ 168(DI),AX
932         MULQ 16(DI)
933         ADDQ AX,R12
934         ADCQ DX,R13
935         MOVQ 168(DI),AX
936         MULQ 24(DI)
937         ADDQ AX,R14
938         ADCQ DX,R15
939         MOVQ 168(DI),DX
940         IMUL3Q $19,DX,AX
941         MULQ 32(DI)
942         ADDQ AX,SI
943         ADCQ DX,CX
944         MOVQ 176(DI),AX
945         MULQ 0(DI)
946         ADDQ AX,R10
947         ADCQ DX,R11
948         MOVQ 176(DI),AX
949         MULQ 8(DI)
950         ADDQ AX,R12
951         ADCQ DX,R13
952         MOVQ 176(DI),AX
953         MULQ 16(DI)
954         ADDQ AX,R14
955         ADCQ DX,R15
956         MOVQ 176(DI),DX
957         IMUL3Q $19,DX,AX
958         MULQ 24(DI)
959         ADDQ AX,SI
960         ADCQ DX,CX
961         MOVQ 176(DI),DX
962         IMUL3Q $19,DX,AX
963         MULQ 32(DI)
964         ADDQ AX,R8
965         ADCQ DX,R9
966         MOVQ 184(DI),AX
967         MULQ 0(DI)
968         ADDQ AX,R12
969         ADCQ DX,R13
970         MOVQ 184(DI),AX
971         MULQ 8(DI)
972         ADDQ AX,R14
973         ADCQ DX,R15
974         MOVQ 0(SP),AX
975         MULQ 24(DI)
976         ADDQ AX,R8
977         ADCQ DX,R9
978         MOVQ 0(SP),AX
979         MULQ 32(DI)
980         ADDQ AX,R10
981         ADCQ DX,R11
982         MOVQ 192(DI),AX
983         MULQ 0(DI)
984         ADDQ AX,R14
985         ADCQ DX,R15
986         MOVQ 8(SP),AX
987         MULQ 16(DI)
988         ADDQ AX,R8
989         ADCQ DX,R9
990         MOVQ 8(SP),AX
991         MULQ 24(DI)
992         ADDQ AX,R10
993         ADCQ DX,R11
994         MOVQ 8(SP),AX
995         MULQ 32(DI)
996         ADDQ AX,R12
997         ADCQ DX,R13
998         MOVQ $REDMASK51,DX
999         SHLQ $13,CX:SI
1000         ANDQ DX,SI
1001         SHLQ $13,R9:R8
1002         ANDQ DX,R8
1003         ADDQ CX,R8
1004         SHLQ $13,R11:R10
1005         ANDQ DX,R10
1006         ADDQ R9,R10
1007         SHLQ $13,R13:R12
1008         ANDQ DX,R12
1009         ADDQ R11,R12
1010         SHLQ $13,R15:R14
1011         ANDQ DX,R14
1012         ADDQ R13,R14
1013         IMUL3Q $19,R15,CX
1014         ADDQ CX,SI
1015         MOVQ SI,CX
1016         SHRQ $51,CX
1017         ADDQ R8,CX
1018         MOVQ CX,R8
1019         SHRQ $51,CX
1020         ANDQ DX,SI
1021         ADDQ R10,CX
1022         MOVQ CX,R9
1023         SHRQ $51,CX
1024         ANDQ DX,R8
1025         ADDQ R12,CX
1026         MOVQ CX,AX
1027         SHRQ $51,CX
1028         ANDQ DX,R9
1029         ADDQ R14,CX
1030         MOVQ CX,R10
1031         SHRQ $51,CX
1032         ANDQ DX,AX
1033         IMUL3Q $19,CX,CX
1034         ADDQ CX,SI
1035         ANDQ DX,R10
1036         MOVQ SI,160(DI)
1037         MOVQ R8,168(DI)
1038         MOVQ R9,176(DI)
1039         MOVQ AX,184(DI)
1040         MOVQ R10,192(DI)
1041         MOVQ 144(SP),SI
1042         IMUL3Q $19,SI,AX
1043         MOVQ AX,0(SP)
1044         MULQ 96(SP)
1045         MOVQ AX,SI
1046         MOVQ DX,CX
1047         MOVQ 152(SP),DX
1048         IMUL3Q $19,DX,AX
1049         MOVQ AX,8(SP)
1050         MULQ 88(SP)
1051         ADDQ AX,SI
1052         ADCQ DX,CX
1053         MOVQ 120(SP),AX
1054         MULQ 80(SP)
1055         ADDQ AX,SI
1056         ADCQ DX,CX
1057         MOVQ 120(SP),AX
1058         MULQ 88(SP)
1059         MOVQ AX,R8
1060         MOVQ DX,R9
1061         MOVQ 120(SP),AX
1062         MULQ 96(SP)
1063         MOVQ AX,R10
1064         MOVQ DX,R11
1065         MOVQ 120(SP),AX
1066         MULQ 104(SP)
1067         MOVQ AX,R12
1068         MOVQ DX,R13
1069         MOVQ 120(SP),AX
1070         MULQ 112(SP)
1071         MOVQ AX,R14
1072         MOVQ DX,R15
1073         MOVQ 128(SP),AX
1074         MULQ 80(SP)
1075         ADDQ AX,R8
1076         ADCQ DX,R9
1077         MOVQ 128(SP),AX
1078         MULQ 88(SP)
1079         ADDQ AX,R10
1080         ADCQ DX,R11
1081         MOVQ 128(SP),AX
1082         MULQ 96(SP)
1083         ADDQ AX,R12
1084         ADCQ DX,R13
1085         MOVQ 128(SP),AX
1086         MULQ 104(SP)
1087         ADDQ AX,R14
1088         ADCQ DX,R15
1089         MOVQ 128(SP),DX
1090         IMUL3Q $19,DX,AX
1091         MULQ 112(SP)
1092         ADDQ AX,SI
1093         ADCQ DX,CX
1094         MOVQ 136(SP),AX
1095         MULQ 80(SP)
1096         ADDQ AX,R10
1097         ADCQ DX,R11
1098         MOVQ 136(SP),AX
1099         MULQ 88(SP)
1100         ADDQ AX,R12
1101         ADCQ DX,R13
1102         MOVQ 136(SP),AX
1103         MULQ 96(SP)
1104         ADDQ AX,R14
1105         ADCQ DX,R15
1106         MOVQ 136(SP),DX
1107         IMUL3Q $19,DX,AX
1108         MULQ 104(SP)
1109         ADDQ AX,SI
1110         ADCQ DX,CX
1111         MOVQ 136(SP),DX
1112         IMUL3Q $19,DX,AX
1113         MULQ 112(SP)
1114         ADDQ AX,R8
1115         ADCQ DX,R9
1116         MOVQ 144(SP),AX
1117         MULQ 80(SP)
1118         ADDQ AX,R12
1119         ADCQ DX,R13
1120         MOVQ 144(SP),AX
1121         MULQ 88(SP)
1122         ADDQ AX,R14
1123         ADCQ DX,R15
1124         MOVQ 0(SP),AX
1125         MULQ 104(SP)
1126         ADDQ AX,R8
1127         ADCQ DX,R9
1128         MOVQ 0(SP),AX
1129         MULQ 112(SP)
1130         ADDQ AX,R10
1131         ADCQ DX,R11
1132         MOVQ 152(SP),AX
1133         MULQ 80(SP)
1134         ADDQ AX,R14
1135         ADCQ DX,R15
1136         MOVQ 8(SP),AX
1137         MULQ 96(SP)
1138         ADDQ AX,R8
1139         ADCQ DX,R9
1140         MOVQ 8(SP),AX
1141         MULQ 104(SP)
1142         ADDQ AX,R10
1143         ADCQ DX,R11
1144         MOVQ 8(SP),AX
1145         MULQ 112(SP)
1146         ADDQ AX,R12
1147         ADCQ DX,R13
1148         MOVQ $REDMASK51,DX
1149         SHLQ $13,CX:SI
1150         ANDQ DX,SI
1151         SHLQ $13,R9:R8
1152         ANDQ DX,R8
1153         ADDQ CX,R8
1154         SHLQ $13,R11:R10
1155         ANDQ DX,R10
1156         ADDQ R9,R10
1157         SHLQ $13,R13:R12
1158         ANDQ DX,R12
1159         ADDQ R11,R12
1160         SHLQ $13,R15:R14
1161         ANDQ DX,R14
1162         ADDQ R13,R14
1163         IMUL3Q $19,R15,CX
1164         ADDQ CX,SI
1165         MOVQ SI,CX
1166         SHRQ $51,CX
1167         ADDQ R8,CX
1168         MOVQ CX,R8
1169         SHRQ $51,CX
1170         ANDQ DX,SI
1171         ADDQ R10,CX
1172         MOVQ CX,R9
1173         SHRQ $51,CX
1174         ANDQ DX,R8
1175         ADDQ R12,CX
1176         MOVQ CX,AX
1177         SHRQ $51,CX
1178         ANDQ DX,R9
1179         ADDQ R14,CX
1180         MOVQ CX,R10
1181         SHRQ $51,CX
1182         ANDQ DX,AX
1183         IMUL3Q $19,CX,CX
1184         ADDQ CX,SI
1185         ANDQ DX,R10
1186         MOVQ SI,40(DI)
1187         MOVQ R8,48(DI)
1188         MOVQ R9,56(DI)
1189         MOVQ AX,64(DI)
1190         MOVQ R10,72(DI)
1191         MOVQ 160(SP),AX
1192         MULQ ·_121666_213(SB)
1193         SHRQ $13,AX
1194         MOVQ AX,SI
1195         MOVQ DX,CX
1196         MOVQ 168(SP),AX
1197         MULQ ·_121666_213(SB)
1198         SHRQ $13,AX
1199         ADDQ AX,CX
1200         MOVQ DX,R8
1201         MOVQ 176(SP),AX
1202         MULQ ·_121666_213(SB)
1203         SHRQ $13,AX
1204         ADDQ AX,R8
1205         MOVQ DX,R9
1206         MOVQ 184(SP),AX
1207         MULQ ·_121666_213(SB)
1208         SHRQ $13,AX
1209         ADDQ AX,R9
1210         MOVQ DX,R10
1211         MOVQ 192(SP),AX
1212         MULQ ·_121666_213(SB)
1213         SHRQ $13,AX
1214         ADDQ AX,R10
1215         IMUL3Q $19,DX,DX
1216         ADDQ DX,SI
1217         ADDQ 80(SP),SI
1218         ADDQ 88(SP),CX
1219         ADDQ 96(SP),R8
1220         ADDQ 104(SP),R9
1221         ADDQ 112(SP),R10
1222         MOVQ SI,80(DI)
1223         MOVQ CX,88(DI)
1224         MOVQ R8,96(DI)
1225         MOVQ R9,104(DI)
1226         MOVQ R10,112(DI)
1227         MOVQ 104(DI),SI
1228         IMUL3Q $19,SI,AX
1229         MOVQ AX,0(SP)
1230         MULQ 176(SP)
1231         MOVQ AX,SI
1232         MOVQ DX,CX
1233         MOVQ 112(DI),DX
1234         IMUL3Q $19,DX,AX
1235         MOVQ AX,8(SP)
1236         MULQ 168(SP)
1237         ADDQ AX,SI
1238         ADCQ DX,CX
1239         MOVQ 80(DI),AX
1240         MULQ 160(SP)
1241         ADDQ AX,SI
1242         ADCQ DX,CX
1243         MOVQ 80(DI),AX
1244         MULQ 168(SP)
1245         MOVQ AX,R8
1246         MOVQ DX,R9
1247         MOVQ 80(DI),AX
1248         MULQ 176(SP)
1249         MOVQ AX,R10
1250         MOVQ DX,R11
1251         MOVQ 80(DI),AX
1252         MULQ 184(SP)
1253         MOVQ AX,R12
1254         MOVQ DX,R13
1255         MOVQ 80(DI),AX
1256         MULQ 192(SP)
1257         MOVQ AX,R14
1258         MOVQ DX,R15
1259         MOVQ 88(DI),AX
1260         MULQ 160(SP)
1261         ADDQ AX,R8
1262         ADCQ DX,R9
1263         MOVQ 88(DI),AX
1264         MULQ 168(SP)
1265         ADDQ AX,R10
1266         ADCQ DX,R11
1267         MOVQ 88(DI),AX
1268         MULQ 176(SP)
1269         ADDQ AX,R12
1270         ADCQ DX,R13
1271         MOVQ 88(DI),AX
1272         MULQ 184(SP)
1273         ADDQ AX,R14
1274         ADCQ DX,R15
1275         MOVQ 88(DI),DX
1276         IMUL3Q $19,DX,AX
1277         MULQ 192(SP)
1278         ADDQ AX,SI
1279         ADCQ DX,CX
1280         MOVQ 96(DI),AX
1281         MULQ 160(SP)
1282         ADDQ AX,R10
1283         ADCQ DX,R11
1284         MOVQ 96(DI),AX
1285         MULQ 168(SP)
1286         ADDQ AX,R12
1287         ADCQ DX,R13
1288         MOVQ 96(DI),AX
1289         MULQ 176(SP)
1290         ADDQ AX,R14
1291         ADCQ DX,R15
1292         MOVQ 96(DI),DX
1293         IMUL3Q $19,DX,AX
1294         MULQ 184(SP)
1295         ADDQ AX,SI
1296         ADCQ DX,CX
1297         MOVQ 96(DI),DX
1298         IMUL3Q $19,DX,AX
1299         MULQ 192(SP)
1300         ADDQ AX,R8
1301         ADCQ DX,R9
1302         MOVQ 104(DI),AX
1303         MULQ 160(SP)
1304         ADDQ AX,R12
1305         ADCQ DX,R13
1306         MOVQ 104(DI),AX
1307         MULQ 168(SP)
1308         ADDQ AX,R14
1309         ADCQ DX,R15
1310         MOVQ 0(SP),AX
1311         MULQ 184(SP)
1312         ADDQ AX,R8
1313         ADCQ DX,R9
1314         MOVQ 0(SP),AX
1315         MULQ 192(SP)
1316         ADDQ AX,R10
1317         ADCQ DX,R11
1318         MOVQ 112(DI),AX
1319         MULQ 160(SP)
1320         ADDQ AX,R14
1321         ADCQ DX,R15
1322         MOVQ 8(SP),AX
1323         MULQ 176(SP)
1324         ADDQ AX,R8
1325         ADCQ DX,R9
1326         MOVQ 8(SP),AX
1327         MULQ 184(SP)
1328         ADDQ AX,R10
1329         ADCQ DX,R11
1330         MOVQ 8(SP),AX
1331         MULQ 192(SP)
1332         ADDQ AX,R12
1333         ADCQ DX,R13
1334         MOVQ $REDMASK51,DX
1335         SHLQ $13,CX:SI
1336         ANDQ DX,SI
1337         SHLQ $13,R9:R8
1338         ANDQ DX,R8
1339         ADDQ CX,R8
1340         SHLQ $13,R11:R10
1341         ANDQ DX,R10
1342         ADDQ R9,R10
1343         SHLQ $13,R13:R12
1344         ANDQ DX,R12
1345         ADDQ R11,R12
1346         SHLQ $13,R15:R14
1347         ANDQ DX,R14
1348         ADDQ R13,R14
1349         IMUL3Q $19,R15,CX
1350         ADDQ CX,SI
1351         MOVQ SI,CX
1352         SHRQ $51,CX
1353         ADDQ R8,CX
1354         MOVQ CX,R8
1355         SHRQ $51,CX
1356         ANDQ DX,SI
1357         ADDQ R10,CX
1358         MOVQ CX,R9
1359         SHRQ $51,CX
1360         ANDQ DX,R8
1361         ADDQ R12,CX
1362         MOVQ CX,AX
1363         SHRQ $51,CX
1364         ANDQ DX,R9
1365         ADDQ R14,CX
1366         MOVQ CX,R10
1367         SHRQ $51,CX
1368         ANDQ DX,AX
1369         IMUL3Q $19,CX,CX
1370         ADDQ CX,SI
1371         ANDQ DX,R10
1372         MOVQ SI,80(DI)
1373         MOVQ R8,88(DI)
1374         MOVQ R9,96(DI)
1375         MOVQ AX,104(DI)
1376         MOVQ R10,112(DI)
1377         RET