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