xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/ghash-x86.S (revision 1b3d6f93806f8821fe459e13ad13e605b37c6d43)
1#include <machine/asm.h>
2.text
3.globl	gcm_gmult_4bit_x86
4.type	gcm_gmult_4bit_x86,@function
5.align	16
6gcm_gmult_4bit_x86:
7.L_gcm_gmult_4bit_x86_begin:
8	#ifdef __CET__
9
10.byte	243,15,30,251
11	#endif
12
13	pushl	%ebp
14	pushl	%ebx
15	pushl	%esi
16	pushl	%edi
17	subl	$84,%esp
18	movl	104(%esp),%edi
19	movl	108(%esp),%esi
20	movl	(%edi),%ebp
21	movl	4(%edi),%edx
22	movl	8(%edi),%ecx
23	movl	12(%edi),%ebx
24	movl	$0,16(%esp)
25	movl	$471859200,20(%esp)
26	movl	$943718400,24(%esp)
27	movl	$610271232,28(%esp)
28	movl	$1887436800,32(%esp)
29	movl	$1822425088,36(%esp)
30	movl	$1220542464,40(%esp)
31	movl	$1423966208,44(%esp)
32	movl	$3774873600,48(%esp)
33	movl	$4246732800,52(%esp)
34	movl	$3644850176,56(%esp)
35	movl	$3311403008,60(%esp)
36	movl	$2441084928,64(%esp)
37	movl	$2376073216,68(%esp)
38	movl	$2847932416,72(%esp)
39	movl	$3051356160,76(%esp)
40	movl	%ebp,(%esp)
41	movl	%edx,4(%esp)
42	movl	%ecx,8(%esp)
43	movl	%ebx,12(%esp)
44	shrl	$20,%ebx
45	andl	$240,%ebx
46	movl	4(%esi,%ebx,1),%ebp
47	movl	(%esi,%ebx,1),%edx
48	movl	12(%esi,%ebx,1),%ecx
49	movl	8(%esi,%ebx,1),%ebx
50	xorl	%eax,%eax
51	movl	$15,%edi
52	jmp	.L000x86_loop
53.align	16
54.L000x86_loop:
55	movb	%bl,%al
56	shrdl	$4,%ecx,%ebx
57	andb	$15,%al
58	shrdl	$4,%edx,%ecx
59	shrdl	$4,%ebp,%edx
60	shrl	$4,%ebp
61	xorl	16(%esp,%eax,4),%ebp
62	movb	(%esp,%edi,1),%al
63	andb	$240,%al
64	xorl	8(%esi,%eax,1),%ebx
65	xorl	12(%esi,%eax,1),%ecx
66	xorl	(%esi,%eax,1),%edx
67	xorl	4(%esi,%eax,1),%ebp
68	decl	%edi
69	js	.L001x86_break
70	movb	%bl,%al
71	shrdl	$4,%ecx,%ebx
72	andb	$15,%al
73	shrdl	$4,%edx,%ecx
74	shrdl	$4,%ebp,%edx
75	shrl	$4,%ebp
76	xorl	16(%esp,%eax,4),%ebp
77	movb	(%esp,%edi,1),%al
78	shlb	$4,%al
79	xorl	8(%esi,%eax,1),%ebx
80	xorl	12(%esi,%eax,1),%ecx
81	xorl	(%esi,%eax,1),%edx
82	xorl	4(%esi,%eax,1),%ebp
83	jmp	.L000x86_loop
84.align	16
85.L001x86_break:
86	bswap	%ebx
87	bswap	%ecx
88	bswap	%edx
89	bswap	%ebp
90	movl	104(%esp),%edi
91	movl	%ebx,12(%edi)
92	movl	%ecx,8(%edi)
93	movl	%edx,4(%edi)
94	movl	%ebp,(%edi)
95	addl	$84,%esp
96	popl	%edi
97	popl	%esi
98	popl	%ebx
99	popl	%ebp
100	ret
101.size	gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
102.globl	gcm_ghash_4bit_x86
103.type	gcm_ghash_4bit_x86,@function
104.align	16
105gcm_ghash_4bit_x86:
106.L_gcm_ghash_4bit_x86_begin:
107	#ifdef __CET__
108
109.byte	243,15,30,251
110	#endif
111
112	pushl	%ebp
113	pushl	%ebx
114	pushl	%esi
115	pushl	%edi
116	subl	$84,%esp
117	movl	104(%esp),%ebx
118	movl	108(%esp),%esi
119	movl	112(%esp),%edi
120	movl	116(%esp),%ecx
121	addl	%edi,%ecx
122	movl	%ecx,116(%esp)
123	movl	(%ebx),%ebp
124	movl	4(%ebx),%edx
125	movl	8(%ebx),%ecx
126	movl	12(%ebx),%ebx
127	movl	$0,16(%esp)
128	movl	$471859200,20(%esp)
129	movl	$943718400,24(%esp)
130	movl	$610271232,28(%esp)
131	movl	$1887436800,32(%esp)
132	movl	$1822425088,36(%esp)
133	movl	$1220542464,40(%esp)
134	movl	$1423966208,44(%esp)
135	movl	$3774873600,48(%esp)
136	movl	$4246732800,52(%esp)
137	movl	$3644850176,56(%esp)
138	movl	$3311403008,60(%esp)
139	movl	$2441084928,64(%esp)
140	movl	$2376073216,68(%esp)
141	movl	$2847932416,72(%esp)
142	movl	$3051356160,76(%esp)
143.align	16
144.L002x86_outer_loop:
145	xorl	12(%edi),%ebx
146	xorl	8(%edi),%ecx
147	xorl	4(%edi),%edx
148	xorl	(%edi),%ebp
149	movl	%ebx,12(%esp)
150	movl	%ecx,8(%esp)
151	movl	%edx,4(%esp)
152	movl	%ebp,(%esp)
153	shrl	$20,%ebx
154	andl	$240,%ebx
155	movl	4(%esi,%ebx,1),%ebp
156	movl	(%esi,%ebx,1),%edx
157	movl	12(%esi,%ebx,1),%ecx
158	movl	8(%esi,%ebx,1),%ebx
159	xorl	%eax,%eax
160	movl	$15,%edi
161	jmp	.L003x86_loop
162.align	16
163.L003x86_loop:
164	movb	%bl,%al
165	shrdl	$4,%ecx,%ebx
166	andb	$15,%al
167	shrdl	$4,%edx,%ecx
168	shrdl	$4,%ebp,%edx
169	shrl	$4,%ebp
170	xorl	16(%esp,%eax,4),%ebp
171	movb	(%esp,%edi,1),%al
172	andb	$240,%al
173	xorl	8(%esi,%eax,1),%ebx
174	xorl	12(%esi,%eax,1),%ecx
175	xorl	(%esi,%eax,1),%edx
176	xorl	4(%esi,%eax,1),%ebp
177	decl	%edi
178	js	.L004x86_break
179	movb	%bl,%al
180	shrdl	$4,%ecx,%ebx
181	andb	$15,%al
182	shrdl	$4,%edx,%ecx
183	shrdl	$4,%ebp,%edx
184	shrl	$4,%ebp
185	xorl	16(%esp,%eax,4),%ebp
186	movb	(%esp,%edi,1),%al
187	shlb	$4,%al
188	xorl	8(%esi,%eax,1),%ebx
189	xorl	12(%esi,%eax,1),%ecx
190	xorl	(%esi,%eax,1),%edx
191	xorl	4(%esi,%eax,1),%ebp
192	jmp	.L003x86_loop
193.align	16
194.L004x86_break:
195	bswap	%ebx
196	bswap	%ecx
197	bswap	%edx
198	bswap	%ebp
199	movl	112(%esp),%edi
200	leal	16(%edi),%edi
201	cmpl	116(%esp),%edi
202	movl	%edi,112(%esp)
203	jb	.L002x86_outer_loop
204	movl	104(%esp),%edi
205	movl	%ebx,12(%edi)
206	movl	%ecx,8(%edi)
207	movl	%edx,4(%edi)
208	movl	%ebp,(%edi)
209	addl	$84,%esp
210	popl	%edi
211	popl	%esi
212	popl	%ebx
213	popl	%ebp
214	ret
215.size	gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
216.globl	gcm_gmult_4bit_mmx
217.type	gcm_gmult_4bit_mmx,@function
218.align	16
219gcm_gmult_4bit_mmx:
220.L_gcm_gmult_4bit_mmx_begin:
221	#ifdef __CET__
222
223.byte	243,15,30,251
224	#endif
225
226	pushl	%ebp
227	pushl	%ebx
228	pushl	%esi
229	pushl	%edi
230	movl	20(%esp),%edi
231	movl	24(%esp),%esi
232	call	.L005pic_point
233.L005pic_point:
234	popl	%eax
235	leal	.Lrem_4bit-.L005pic_point(%eax),%eax
236	movzbl	15(%edi),%ebx
237	xorl	%ecx,%ecx
238	movl	%ebx,%edx
239	movb	%dl,%cl
240	movl	$14,%ebp
241	shlb	$4,%cl
242	andl	$240,%edx
243	movq	8(%esi,%ecx,1),%mm0
244	movq	(%esi,%ecx,1),%mm1
245	movd	%mm0,%ebx
246	jmp	.L006mmx_loop
247.align	16
248.L006mmx_loop:
249	psrlq	$4,%mm0
250	andl	$15,%ebx
251	movq	%mm1,%mm2
252	psrlq	$4,%mm1
253	pxor	8(%esi,%edx,1),%mm0
254	movb	(%edi,%ebp,1),%cl
255	psllq	$60,%mm2
256	pxor	(%eax,%ebx,8),%mm1
257	decl	%ebp
258	movd	%mm0,%ebx
259	pxor	(%esi,%edx,1),%mm1
260	movl	%ecx,%edx
261	pxor	%mm2,%mm0
262	js	.L007mmx_break
263	shlb	$4,%cl
264	andl	$15,%ebx
265	psrlq	$4,%mm0
266	andl	$240,%edx
267	movq	%mm1,%mm2
268	psrlq	$4,%mm1
269	pxor	8(%esi,%ecx,1),%mm0
270	psllq	$60,%mm2
271	pxor	(%eax,%ebx,8),%mm1
272	movd	%mm0,%ebx
273	pxor	(%esi,%ecx,1),%mm1
274	pxor	%mm2,%mm0
275	jmp	.L006mmx_loop
276.align	16
277.L007mmx_break:
278	shlb	$4,%cl
279	andl	$15,%ebx
280	psrlq	$4,%mm0
281	andl	$240,%edx
282	movq	%mm1,%mm2
283	psrlq	$4,%mm1
284	pxor	8(%esi,%ecx,1),%mm0
285	psllq	$60,%mm2
286	pxor	(%eax,%ebx,8),%mm1
287	movd	%mm0,%ebx
288	pxor	(%esi,%ecx,1),%mm1
289	pxor	%mm2,%mm0
290	psrlq	$4,%mm0
291	andl	$15,%ebx
292	movq	%mm1,%mm2
293	psrlq	$4,%mm1
294	pxor	8(%esi,%edx,1),%mm0
295	psllq	$60,%mm2
296	pxor	(%eax,%ebx,8),%mm1
297	movd	%mm0,%ebx
298	pxor	(%esi,%edx,1),%mm1
299	pxor	%mm2,%mm0
300	psrlq	$32,%mm0
301	movd	%mm1,%edx
302	psrlq	$32,%mm1
303	movd	%mm0,%ecx
304	movd	%mm1,%ebp
305	bswap	%ebx
306	bswap	%edx
307	bswap	%ecx
308	bswap	%ebp
309	emms
310	movl	%ebx,12(%edi)
311	movl	%edx,4(%edi)
312	movl	%ecx,8(%edi)
313	movl	%ebp,(%edi)
314	popl	%edi
315	popl	%esi
316	popl	%ebx
317	popl	%ebp
318	ret
319.size	gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
320.globl	gcm_ghash_4bit_mmx
321.type	gcm_ghash_4bit_mmx,@function
322.align	16
323gcm_ghash_4bit_mmx:
324.L_gcm_ghash_4bit_mmx_begin:
325	#ifdef __CET__
326
327.byte	243,15,30,251
328	#endif
329
330	pushl	%ebp
331	pushl	%ebx
332	pushl	%esi
333	pushl	%edi
334	movl	20(%esp),%eax
335	movl	24(%esp),%ebx
336	movl	28(%esp),%ecx
337	movl	32(%esp),%edx
338	movl	%esp,%ebp
339	call	.L008pic_point
340.L008pic_point:
341	popl	%esi
342	leal	.Lrem_8bit-.L008pic_point(%esi),%esi
343	subl	$544,%esp
344	andl	$-64,%esp
345	subl	$16,%esp
346	addl	%ecx,%edx
347	movl	%eax,544(%esp)
348	movl	%edx,552(%esp)
349	movl	%ebp,556(%esp)
350	addl	$128,%ebx
351	leal	144(%esp),%edi
352	leal	400(%esp),%ebp
353	movl	-120(%ebx),%edx
354	movq	-120(%ebx),%mm0
355	movq	-128(%ebx),%mm3
356	shll	$4,%edx
357	movb	%dl,(%esp)
358	movl	-104(%ebx),%edx
359	movq	-104(%ebx),%mm2
360	movq	-112(%ebx),%mm5
361	movq	%mm0,-128(%edi)
362	psrlq	$4,%mm0
363	movq	%mm3,(%edi)
364	movq	%mm3,%mm7
365	psrlq	$4,%mm3
366	shll	$4,%edx
367	movb	%dl,1(%esp)
368	movl	-88(%ebx),%edx
369	movq	-88(%ebx),%mm1
370	psllq	$60,%mm7
371	movq	-96(%ebx),%mm4
372	por	%mm7,%mm0
373	movq	%mm2,-120(%edi)
374	psrlq	$4,%mm2
375	movq	%mm5,8(%edi)
376	movq	%mm5,%mm6
377	movq	%mm0,-128(%ebp)
378	psrlq	$4,%mm5
379	movq	%mm3,(%ebp)
380	shll	$4,%edx
381	movb	%dl,2(%esp)
382	movl	-72(%ebx),%edx
383	movq	-72(%ebx),%mm0
384	psllq	$60,%mm6
385	movq	-80(%ebx),%mm3
386	por	%mm6,%mm2
387	movq	%mm1,-112(%edi)
388	psrlq	$4,%mm1
389	movq	%mm4,16(%edi)
390	movq	%mm4,%mm7
391	movq	%mm2,-120(%ebp)
392	psrlq	$4,%mm4
393	movq	%mm5,8(%ebp)
394	shll	$4,%edx
395	movb	%dl,3(%esp)
396	movl	-56(%ebx),%edx
397	movq	-56(%ebx),%mm2
398	psllq	$60,%mm7
399	movq	-64(%ebx),%mm5
400	por	%mm7,%mm1
401	movq	%mm0,-104(%edi)
402	psrlq	$4,%mm0
403	movq	%mm3,24(%edi)
404	movq	%mm3,%mm6
405	movq	%mm1,-112(%ebp)
406	psrlq	$4,%mm3
407	movq	%mm4,16(%ebp)
408	shll	$4,%edx
409	movb	%dl,4(%esp)
410	movl	-40(%ebx),%edx
411	movq	-40(%ebx),%mm1
412	psllq	$60,%mm6
413	movq	-48(%ebx),%mm4
414	por	%mm6,%mm0
415	movq	%mm2,-96(%edi)
416	psrlq	$4,%mm2
417	movq	%mm5,32(%edi)
418	movq	%mm5,%mm7
419	movq	%mm0,-104(%ebp)
420	psrlq	$4,%mm5
421	movq	%mm3,24(%ebp)
422	shll	$4,%edx
423	movb	%dl,5(%esp)
424	movl	-24(%ebx),%edx
425	movq	-24(%ebx),%mm0
426	psllq	$60,%mm7
427	movq	-32(%ebx),%mm3
428	por	%mm7,%mm2
429	movq	%mm1,-88(%edi)
430	psrlq	$4,%mm1
431	movq	%mm4,40(%edi)
432	movq	%mm4,%mm6
433	movq	%mm2,-96(%ebp)
434	psrlq	$4,%mm4
435	movq	%mm5,32(%ebp)
436	shll	$4,%edx
437	movb	%dl,6(%esp)
438	movl	-8(%ebx),%edx
439	movq	-8(%ebx),%mm2
440	psllq	$60,%mm6
441	movq	-16(%ebx),%mm5
442	por	%mm6,%mm1
443	movq	%mm0,-80(%edi)
444	psrlq	$4,%mm0
445	movq	%mm3,48(%edi)
446	movq	%mm3,%mm7
447	movq	%mm1,-88(%ebp)
448	psrlq	$4,%mm3
449	movq	%mm4,40(%ebp)
450	shll	$4,%edx
451	movb	%dl,7(%esp)
452	movl	8(%ebx),%edx
453	movq	8(%ebx),%mm1
454	psllq	$60,%mm7
455	movq	(%ebx),%mm4
456	por	%mm7,%mm0
457	movq	%mm2,-72(%edi)
458	psrlq	$4,%mm2
459	movq	%mm5,56(%edi)
460	movq	%mm5,%mm6
461	movq	%mm0,-80(%ebp)
462	psrlq	$4,%mm5
463	movq	%mm3,48(%ebp)
464	shll	$4,%edx
465	movb	%dl,8(%esp)
466	movl	24(%ebx),%edx
467	movq	24(%ebx),%mm0
468	psllq	$60,%mm6
469	movq	16(%ebx),%mm3
470	por	%mm6,%mm2
471	movq	%mm1,-64(%edi)
472	psrlq	$4,%mm1
473	movq	%mm4,64(%edi)
474	movq	%mm4,%mm7
475	movq	%mm2,-72(%ebp)
476	psrlq	$4,%mm4
477	movq	%mm5,56(%ebp)
478	shll	$4,%edx
479	movb	%dl,9(%esp)
480	movl	40(%ebx),%edx
481	movq	40(%ebx),%mm2
482	psllq	$60,%mm7
483	movq	32(%ebx),%mm5
484	por	%mm7,%mm1
485	movq	%mm0,-56(%edi)
486	psrlq	$4,%mm0
487	movq	%mm3,72(%edi)
488	movq	%mm3,%mm6
489	movq	%mm1,-64(%ebp)
490	psrlq	$4,%mm3
491	movq	%mm4,64(%ebp)
492	shll	$4,%edx
493	movb	%dl,10(%esp)
494	movl	56(%ebx),%edx
495	movq	56(%ebx),%mm1
496	psllq	$60,%mm6
497	movq	48(%ebx),%mm4
498	por	%mm6,%mm0
499	movq	%mm2,-48(%edi)
500	psrlq	$4,%mm2
501	movq	%mm5,80(%edi)
502	movq	%mm5,%mm7
503	movq	%mm0,-56(%ebp)
504	psrlq	$4,%mm5
505	movq	%mm3,72(%ebp)
506	shll	$4,%edx
507	movb	%dl,11(%esp)
508	movl	72(%ebx),%edx
509	movq	72(%ebx),%mm0
510	psllq	$60,%mm7
511	movq	64(%ebx),%mm3
512	por	%mm7,%mm2
513	movq	%mm1,-40(%edi)
514	psrlq	$4,%mm1
515	movq	%mm4,88(%edi)
516	movq	%mm4,%mm6
517	movq	%mm2,-48(%ebp)
518	psrlq	$4,%mm4
519	movq	%mm5,80(%ebp)
520	shll	$4,%edx
521	movb	%dl,12(%esp)
522	movl	88(%ebx),%edx
523	movq	88(%ebx),%mm2
524	psllq	$60,%mm6
525	movq	80(%ebx),%mm5
526	por	%mm6,%mm1
527	movq	%mm0,-32(%edi)
528	psrlq	$4,%mm0
529	movq	%mm3,96(%edi)
530	movq	%mm3,%mm7
531	movq	%mm1,-40(%ebp)
532	psrlq	$4,%mm3
533	movq	%mm4,88(%ebp)
534	shll	$4,%edx
535	movb	%dl,13(%esp)
536	movl	104(%ebx),%edx
537	movq	104(%ebx),%mm1
538	psllq	$60,%mm7
539	movq	96(%ebx),%mm4
540	por	%mm7,%mm0
541	movq	%mm2,-24(%edi)
542	psrlq	$4,%mm2
543	movq	%mm5,104(%edi)
544	movq	%mm5,%mm6
545	movq	%mm0,-32(%ebp)
546	psrlq	$4,%mm5
547	movq	%mm3,96(%ebp)
548	shll	$4,%edx
549	movb	%dl,14(%esp)
550	movl	120(%ebx),%edx
551	movq	120(%ebx),%mm0
552	psllq	$60,%mm6
553	movq	112(%ebx),%mm3
554	por	%mm6,%mm2
555	movq	%mm1,-16(%edi)
556	psrlq	$4,%mm1
557	movq	%mm4,112(%edi)
558	movq	%mm4,%mm7
559	movq	%mm2,-24(%ebp)
560	psrlq	$4,%mm4
561	movq	%mm5,104(%ebp)
562	shll	$4,%edx
563	movb	%dl,15(%esp)
564	psllq	$60,%mm7
565	por	%mm7,%mm1
566	movq	%mm0,-8(%edi)
567	psrlq	$4,%mm0
568	movq	%mm3,120(%edi)
569	movq	%mm3,%mm6
570	movq	%mm1,-16(%ebp)
571	psrlq	$4,%mm3
572	movq	%mm4,112(%ebp)
573	psllq	$60,%mm6
574	por	%mm6,%mm0
575	movq	%mm0,-8(%ebp)
576	movq	%mm3,120(%ebp)
577	movq	(%eax),%mm6
578	movl	8(%eax),%ebx
579	movl	12(%eax),%edx
580.align	16
581.L009outer:
582	xorl	12(%ecx),%edx
583	xorl	8(%ecx),%ebx
584	pxor	(%ecx),%mm6
585	leal	16(%ecx),%ecx
586	movl	%ebx,536(%esp)
587	movq	%mm6,528(%esp)
588	movl	%ecx,548(%esp)
589	xorl	%eax,%eax
590	roll	$8,%edx
591	movb	%dl,%al
592	movl	%eax,%ebp
593	andb	$15,%al
594	shrl	$4,%ebp
595	pxor	%mm0,%mm0
596	roll	$8,%edx
597	pxor	%mm1,%mm1
598	pxor	%mm2,%mm2
599	movq	16(%esp,%eax,8),%mm7
600	movq	144(%esp,%eax,8),%mm6
601	movb	%dl,%al
602	movd	%mm7,%ebx
603	psrlq	$8,%mm7
604	movq	%mm6,%mm3
605	movl	%eax,%edi
606	psrlq	$8,%mm6
607	pxor	272(%esp,%ebp,8),%mm7
608	andb	$15,%al
609	psllq	$56,%mm3
610	shrl	$4,%edi
611	pxor	16(%esp,%eax,8),%mm7
612	roll	$8,%edx
613	pxor	144(%esp,%eax,8),%mm6
614	pxor	%mm3,%mm7
615	pxor	400(%esp,%ebp,8),%mm6
616	xorb	(%esp,%ebp,1),%bl
617	movb	%dl,%al
618	movd	%mm7,%ecx
619	movzbl	%bl,%ebx
620	psrlq	$8,%mm7
621	movq	%mm6,%mm3
622	movl	%eax,%ebp
623	psrlq	$8,%mm6
624	pxor	272(%esp,%edi,8),%mm7
625	andb	$15,%al
626	psllq	$56,%mm3
627	shrl	$4,%ebp
628	pinsrw	$2,(%esi,%ebx,2),%mm2
629	pxor	16(%esp,%eax,8),%mm7
630	roll	$8,%edx
631	pxor	144(%esp,%eax,8),%mm6
632	pxor	%mm3,%mm7
633	pxor	400(%esp,%edi,8),%mm6
634	xorb	(%esp,%edi,1),%cl
635	movb	%dl,%al
636	movl	536(%esp),%edx
637	movd	%mm7,%ebx
638	movzbl	%cl,%ecx
639	psrlq	$8,%mm7
640	movq	%mm6,%mm3
641	movl	%eax,%edi
642	psrlq	$8,%mm6
643	pxor	272(%esp,%ebp,8),%mm7
644	andb	$15,%al
645	psllq	$56,%mm3
646	pxor	%mm2,%mm6
647	shrl	$4,%edi
648	pinsrw	$2,(%esi,%ecx,2),%mm1
649	pxor	16(%esp,%eax,8),%mm7
650	roll	$8,%edx
651	pxor	144(%esp,%eax,8),%mm6
652	pxor	%mm3,%mm7
653	pxor	400(%esp,%ebp,8),%mm6
654	xorb	(%esp,%ebp,1),%bl
655	movb	%dl,%al
656	movd	%mm7,%ecx
657	movzbl	%bl,%ebx
658	psrlq	$8,%mm7
659	movq	%mm6,%mm3
660	movl	%eax,%ebp
661	psrlq	$8,%mm6
662	pxor	272(%esp,%edi,8),%mm7
663	andb	$15,%al
664	psllq	$56,%mm3
665	pxor	%mm1,%mm6
666	shrl	$4,%ebp
667	pinsrw	$2,(%esi,%ebx,2),%mm0
668	pxor	16(%esp,%eax,8),%mm7
669	roll	$8,%edx
670	pxor	144(%esp,%eax,8),%mm6
671	pxor	%mm3,%mm7
672	pxor	400(%esp,%edi,8),%mm6
673	xorb	(%esp,%edi,1),%cl
674	movb	%dl,%al
675	movd	%mm7,%ebx
676	movzbl	%cl,%ecx
677	psrlq	$8,%mm7
678	movq	%mm6,%mm3
679	movl	%eax,%edi
680	psrlq	$8,%mm6
681	pxor	272(%esp,%ebp,8),%mm7
682	andb	$15,%al
683	psllq	$56,%mm3
684	pxor	%mm0,%mm6
685	shrl	$4,%edi
686	pinsrw	$2,(%esi,%ecx,2),%mm2
687	pxor	16(%esp,%eax,8),%mm7
688	roll	$8,%edx
689	pxor	144(%esp,%eax,8),%mm6
690	pxor	%mm3,%mm7
691	pxor	400(%esp,%ebp,8),%mm6
692	xorb	(%esp,%ebp,1),%bl
693	movb	%dl,%al
694	movd	%mm7,%ecx
695	movzbl	%bl,%ebx
696	psrlq	$8,%mm7
697	movq	%mm6,%mm3
698	movl	%eax,%ebp
699	psrlq	$8,%mm6
700	pxor	272(%esp,%edi,8),%mm7
701	andb	$15,%al
702	psllq	$56,%mm3
703	pxor	%mm2,%mm6
704	shrl	$4,%ebp
705	pinsrw	$2,(%esi,%ebx,2),%mm1
706	pxor	16(%esp,%eax,8),%mm7
707	roll	$8,%edx
708	pxor	144(%esp,%eax,8),%mm6
709	pxor	%mm3,%mm7
710	pxor	400(%esp,%edi,8),%mm6
711	xorb	(%esp,%edi,1),%cl
712	movb	%dl,%al
713	movl	532(%esp),%edx
714	movd	%mm7,%ebx
715	movzbl	%cl,%ecx
716	psrlq	$8,%mm7
717	movq	%mm6,%mm3
718	movl	%eax,%edi
719	psrlq	$8,%mm6
720	pxor	272(%esp,%ebp,8),%mm7
721	andb	$15,%al
722	psllq	$56,%mm3
723	pxor	%mm1,%mm6
724	shrl	$4,%edi
725	pinsrw	$2,(%esi,%ecx,2),%mm0
726	pxor	16(%esp,%eax,8),%mm7
727	roll	$8,%edx
728	pxor	144(%esp,%eax,8),%mm6
729	pxor	%mm3,%mm7
730	pxor	400(%esp,%ebp,8),%mm6
731	xorb	(%esp,%ebp,1),%bl
732	movb	%dl,%al
733	movd	%mm7,%ecx
734	movzbl	%bl,%ebx
735	psrlq	$8,%mm7
736	movq	%mm6,%mm3
737	movl	%eax,%ebp
738	psrlq	$8,%mm6
739	pxor	272(%esp,%edi,8),%mm7
740	andb	$15,%al
741	psllq	$56,%mm3
742	pxor	%mm0,%mm6
743	shrl	$4,%ebp
744	pinsrw	$2,(%esi,%ebx,2),%mm2
745	pxor	16(%esp,%eax,8),%mm7
746	roll	$8,%edx
747	pxor	144(%esp,%eax,8),%mm6
748	pxor	%mm3,%mm7
749	pxor	400(%esp,%edi,8),%mm6
750	xorb	(%esp,%edi,1),%cl
751	movb	%dl,%al
752	movd	%mm7,%ebx
753	movzbl	%cl,%ecx
754	psrlq	$8,%mm7
755	movq	%mm6,%mm3
756	movl	%eax,%edi
757	psrlq	$8,%mm6
758	pxor	272(%esp,%ebp,8),%mm7
759	andb	$15,%al
760	psllq	$56,%mm3
761	pxor	%mm2,%mm6
762	shrl	$4,%edi
763	pinsrw	$2,(%esi,%ecx,2),%mm1
764	pxor	16(%esp,%eax,8),%mm7
765	roll	$8,%edx
766	pxor	144(%esp,%eax,8),%mm6
767	pxor	%mm3,%mm7
768	pxor	400(%esp,%ebp,8),%mm6
769	xorb	(%esp,%ebp,1),%bl
770	movb	%dl,%al
771	movd	%mm7,%ecx
772	movzbl	%bl,%ebx
773	psrlq	$8,%mm7
774	movq	%mm6,%mm3
775	movl	%eax,%ebp
776	psrlq	$8,%mm6
777	pxor	272(%esp,%edi,8),%mm7
778	andb	$15,%al
779	psllq	$56,%mm3
780	pxor	%mm1,%mm6
781	shrl	$4,%ebp
782	pinsrw	$2,(%esi,%ebx,2),%mm0
783	pxor	16(%esp,%eax,8),%mm7
784	roll	$8,%edx
785	pxor	144(%esp,%eax,8),%mm6
786	pxor	%mm3,%mm7
787	pxor	400(%esp,%edi,8),%mm6
788	xorb	(%esp,%edi,1),%cl
789	movb	%dl,%al
790	movl	528(%esp),%edx
791	movd	%mm7,%ebx
792	movzbl	%cl,%ecx
793	psrlq	$8,%mm7
794	movq	%mm6,%mm3
795	movl	%eax,%edi
796	psrlq	$8,%mm6
797	pxor	272(%esp,%ebp,8),%mm7
798	andb	$15,%al
799	psllq	$56,%mm3
800	pxor	%mm0,%mm6
801	shrl	$4,%edi
802	pinsrw	$2,(%esi,%ecx,2),%mm2
803	pxor	16(%esp,%eax,8),%mm7
804	roll	$8,%edx
805	pxor	144(%esp,%eax,8),%mm6
806	pxor	%mm3,%mm7
807	pxor	400(%esp,%ebp,8),%mm6
808	xorb	(%esp,%ebp,1),%bl
809	movb	%dl,%al
810	movd	%mm7,%ecx
811	movzbl	%bl,%ebx
812	psrlq	$8,%mm7
813	movq	%mm6,%mm3
814	movl	%eax,%ebp
815	psrlq	$8,%mm6
816	pxor	272(%esp,%edi,8),%mm7
817	andb	$15,%al
818	psllq	$56,%mm3
819	pxor	%mm2,%mm6
820	shrl	$4,%ebp
821	pinsrw	$2,(%esi,%ebx,2),%mm1
822	pxor	16(%esp,%eax,8),%mm7
823	roll	$8,%edx
824	pxor	144(%esp,%eax,8),%mm6
825	pxor	%mm3,%mm7
826	pxor	400(%esp,%edi,8),%mm6
827	xorb	(%esp,%edi,1),%cl
828	movb	%dl,%al
829	movd	%mm7,%ebx
830	movzbl	%cl,%ecx
831	psrlq	$8,%mm7
832	movq	%mm6,%mm3
833	movl	%eax,%edi
834	psrlq	$8,%mm6
835	pxor	272(%esp,%ebp,8),%mm7
836	andb	$15,%al
837	psllq	$56,%mm3
838	pxor	%mm1,%mm6
839	shrl	$4,%edi
840	pinsrw	$2,(%esi,%ecx,2),%mm0
841	pxor	16(%esp,%eax,8),%mm7
842	roll	$8,%edx
843	pxor	144(%esp,%eax,8),%mm6
844	pxor	%mm3,%mm7
845	pxor	400(%esp,%ebp,8),%mm6
846	xorb	(%esp,%ebp,1),%bl
847	movb	%dl,%al
848	movd	%mm7,%ecx
849	movzbl	%bl,%ebx
850	psrlq	$8,%mm7
851	movq	%mm6,%mm3
852	movl	%eax,%ebp
853	psrlq	$8,%mm6
854	pxor	272(%esp,%edi,8),%mm7
855	andb	$15,%al
856	psllq	$56,%mm3
857	pxor	%mm0,%mm6
858	shrl	$4,%ebp
859	pinsrw	$2,(%esi,%ebx,2),%mm2
860	pxor	16(%esp,%eax,8),%mm7
861	roll	$8,%edx
862	pxor	144(%esp,%eax,8),%mm6
863	pxor	%mm3,%mm7
864	pxor	400(%esp,%edi,8),%mm6
865	xorb	(%esp,%edi,1),%cl
866	movb	%dl,%al
867	movl	524(%esp),%edx
868	movd	%mm7,%ebx
869	movzbl	%cl,%ecx
870	psrlq	$8,%mm7
871	movq	%mm6,%mm3
872	movl	%eax,%edi
873	psrlq	$8,%mm6
874	pxor	272(%esp,%ebp,8),%mm7
875	andb	$15,%al
876	psllq	$56,%mm3
877	pxor	%mm2,%mm6
878	shrl	$4,%edi
879	pinsrw	$2,(%esi,%ecx,2),%mm1
880	pxor	16(%esp,%eax,8),%mm7
881	pxor	144(%esp,%eax,8),%mm6
882	xorb	(%esp,%ebp,1),%bl
883	pxor	%mm3,%mm7
884	pxor	400(%esp,%ebp,8),%mm6
885	movzbl	%bl,%ebx
886	pxor	%mm2,%mm2
887	psllq	$4,%mm1
888	movd	%mm7,%ecx
889	psrlq	$4,%mm7
890	movq	%mm6,%mm3
891	psrlq	$4,%mm6
892	shll	$4,%ecx
893	pxor	16(%esp,%edi,8),%mm7
894	psllq	$60,%mm3
895	movzbl	%cl,%ecx
896	pxor	%mm3,%mm7
897	pxor	144(%esp,%edi,8),%mm6
898	pinsrw	$2,(%esi,%ebx,2),%mm0
899	pxor	%mm1,%mm6
900	movd	%mm7,%edx
901	pinsrw	$3,(%esi,%ecx,2),%mm2
902	psllq	$12,%mm0
903	pxor	%mm0,%mm6
904	psrlq	$32,%mm7
905	pxor	%mm2,%mm6
906	movl	548(%esp),%ecx
907	movd	%mm7,%ebx
908	movq	%mm6,%mm3
909	psllw	$8,%mm6
910	psrlw	$8,%mm3
911	por	%mm3,%mm6
912	bswap	%edx
913	pshufw	$27,%mm6,%mm6
914	bswap	%ebx
915	cmpl	552(%esp),%ecx
916	jne	.L009outer
917	movl	544(%esp),%eax
918	movl	%edx,12(%eax)
919	movl	%ebx,8(%eax)
920	movq	%mm6,(%eax)
921	movl	556(%esp),%esp
922	emms
923	popl	%edi
924	popl	%esi
925	popl	%ebx
926	popl	%ebp
927	ret
928.size	gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
929.globl	gcm_init_clmul
930.type	gcm_init_clmul,@function
931.align	16
932gcm_init_clmul:
933.L_gcm_init_clmul_begin:
934	#ifdef __CET__
935
936.byte	243,15,30,251
937	#endif
938
939	movl	4(%esp),%edx
940	movl	8(%esp),%eax
941	call	.L010pic
942.L010pic:
943	popl	%ecx
944	leal	.Lbswap-.L010pic(%ecx),%ecx
945	movdqu	(%eax),%xmm2
946	pshufd	$78,%xmm2,%xmm2
947	pshufd	$255,%xmm2,%xmm4
948	movdqa	%xmm2,%xmm3
949	psllq	$1,%xmm2
950	pxor	%xmm5,%xmm5
951	psrlq	$63,%xmm3
952	pcmpgtd	%xmm4,%xmm5
953	pslldq	$8,%xmm3
954	por	%xmm3,%xmm2
955	pand	16(%ecx),%xmm5
956	pxor	%xmm5,%xmm2
957	movdqa	%xmm2,%xmm0
958	movdqa	%xmm0,%xmm1
959	pshufd	$78,%xmm0,%xmm3
960	pshufd	$78,%xmm2,%xmm4
961	pxor	%xmm0,%xmm3
962	pxor	%xmm2,%xmm4
963.byte	102,15,58,68,194,0
964.byte	102,15,58,68,202,17
965.byte	102,15,58,68,220,0
966	xorps	%xmm0,%xmm3
967	xorps	%xmm1,%xmm3
968	movdqa	%xmm3,%xmm4
969	psrldq	$8,%xmm3
970	pslldq	$8,%xmm4
971	pxor	%xmm3,%xmm1
972	pxor	%xmm4,%xmm0
973	movdqa	%xmm0,%xmm4
974	movdqa	%xmm0,%xmm3
975	psllq	$5,%xmm0
976	pxor	%xmm0,%xmm3
977	psllq	$1,%xmm0
978	pxor	%xmm3,%xmm0
979	psllq	$57,%xmm0
980	movdqa	%xmm0,%xmm3
981	pslldq	$8,%xmm0
982	psrldq	$8,%xmm3
983	pxor	%xmm4,%xmm0
984	pxor	%xmm3,%xmm1
985	movdqa	%xmm0,%xmm4
986	psrlq	$1,%xmm0
987	pxor	%xmm4,%xmm1
988	pxor	%xmm0,%xmm4
989	psrlq	$5,%xmm0
990	pxor	%xmm4,%xmm0
991	psrlq	$1,%xmm0
992	pxor	%xmm1,%xmm0
993	pshufd	$78,%xmm2,%xmm3
994	pshufd	$78,%xmm0,%xmm4
995	pxor	%xmm2,%xmm3
996	movdqu	%xmm2,(%edx)
997	pxor	%xmm0,%xmm4
998	movdqu	%xmm0,16(%edx)
999.byte	102,15,58,15,227,8
1000	movdqu	%xmm4,32(%edx)
1001	ret
1002.size	gcm_init_clmul,.-.L_gcm_init_clmul_begin
1003.globl	gcm_gmult_clmul
1004.type	gcm_gmult_clmul,@function
1005.align	16
1006gcm_gmult_clmul:
1007.L_gcm_gmult_clmul_begin:
1008	#ifdef __CET__
1009
1010.byte	243,15,30,251
1011	#endif
1012
1013	movl	4(%esp),%eax
1014	movl	8(%esp),%edx
1015	call	.L011pic
1016.L011pic:
1017	popl	%ecx
1018	leal	.Lbswap-.L011pic(%ecx),%ecx
1019	movdqu	(%eax),%xmm0
1020	movdqa	(%ecx),%xmm5
1021	movups	(%edx),%xmm2
1022.byte	102,15,56,0,197
1023	movups	32(%edx),%xmm4
1024	movdqa	%xmm0,%xmm1
1025	pshufd	$78,%xmm0,%xmm3
1026	pxor	%xmm0,%xmm3
1027.byte	102,15,58,68,194,0
1028.byte	102,15,58,68,202,17
1029.byte	102,15,58,68,220,0
1030	xorps	%xmm0,%xmm3
1031	xorps	%xmm1,%xmm3
1032	movdqa	%xmm3,%xmm4
1033	psrldq	$8,%xmm3
1034	pslldq	$8,%xmm4
1035	pxor	%xmm3,%xmm1
1036	pxor	%xmm4,%xmm0
1037	movdqa	%xmm0,%xmm4
1038	movdqa	%xmm0,%xmm3
1039	psllq	$5,%xmm0
1040	pxor	%xmm0,%xmm3
1041	psllq	$1,%xmm0
1042	pxor	%xmm3,%xmm0
1043	psllq	$57,%xmm0
1044	movdqa	%xmm0,%xmm3
1045	pslldq	$8,%xmm0
1046	psrldq	$8,%xmm3
1047	pxor	%xmm4,%xmm0
1048	pxor	%xmm3,%xmm1
1049	movdqa	%xmm0,%xmm4
1050	psrlq	$1,%xmm0
1051	pxor	%xmm4,%xmm1
1052	pxor	%xmm0,%xmm4
1053	psrlq	$5,%xmm0
1054	pxor	%xmm4,%xmm0
1055	psrlq	$1,%xmm0
1056	pxor	%xmm1,%xmm0
1057.byte	102,15,56,0,197
1058	movdqu	%xmm0,(%eax)
1059	ret
1060.size	gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
1061.globl	gcm_ghash_clmul
1062.type	gcm_ghash_clmul,@function
1063.align	16
1064gcm_ghash_clmul:
1065.L_gcm_ghash_clmul_begin:
1066	#ifdef __CET__
1067
1068.byte	243,15,30,251
1069	#endif
1070
1071	pushl	%ebp
1072	pushl	%ebx
1073	pushl	%esi
1074	pushl	%edi
1075	movl	20(%esp),%eax
1076	movl	24(%esp),%edx
1077	movl	28(%esp),%esi
1078	movl	32(%esp),%ebx
1079	call	.L012pic
1080.L012pic:
1081	popl	%ecx
1082	leal	.Lbswap-.L012pic(%ecx),%ecx
1083	movdqu	(%eax),%xmm0
1084	movdqa	(%ecx),%xmm5
1085	movdqu	(%edx),%xmm2
1086.byte	102,15,56,0,197
1087	subl	$16,%ebx
1088	jz	.L013odd_tail
1089	movdqu	(%esi),%xmm3
1090	movdqu	16(%esi),%xmm6
1091.byte	102,15,56,0,221
1092.byte	102,15,56,0,245
1093	movdqu	32(%edx),%xmm5
1094	pxor	%xmm3,%xmm0
1095	pshufd	$78,%xmm6,%xmm3
1096	movdqa	%xmm6,%xmm7
1097	pxor	%xmm6,%xmm3
1098	leal	32(%esi),%esi
1099.byte	102,15,58,68,242,0
1100.byte	102,15,58,68,250,17
1101.byte	102,15,58,68,221,0
1102	movups	16(%edx),%xmm2
1103	nop
1104	subl	$32,%ebx
1105	jbe	.L014even_tail
1106	jmp	.L015mod_loop
1107.align	32
1108.L015mod_loop:
1109	pshufd	$78,%xmm0,%xmm4
1110	movdqa	%xmm0,%xmm1
1111	pxor	%xmm0,%xmm4
1112	nop
1113.byte	102,15,58,68,194,0
1114.byte	102,15,58,68,202,17
1115.byte	102,15,58,68,229,16
1116	movups	(%edx),%xmm2
1117	xorps	%xmm6,%xmm0
1118	movdqa	(%ecx),%xmm5
1119	xorps	%xmm7,%xmm1
1120	movdqu	(%esi),%xmm7
1121	pxor	%xmm0,%xmm3
1122	movdqu	16(%esi),%xmm6
1123	pxor	%xmm1,%xmm3
1124.byte	102,15,56,0,253
1125	pxor	%xmm3,%xmm4
1126	movdqa	%xmm4,%xmm3
1127	psrldq	$8,%xmm4
1128	pslldq	$8,%xmm3
1129	pxor	%xmm4,%xmm1
1130	pxor	%xmm3,%xmm0
1131.byte	102,15,56,0,245
1132	pxor	%xmm7,%xmm1
1133	movdqa	%xmm6,%xmm7
1134	movdqa	%xmm0,%xmm4
1135	movdqa	%xmm0,%xmm3
1136	psllq	$5,%xmm0
1137	pxor	%xmm0,%xmm3
1138	psllq	$1,%xmm0
1139	pxor	%xmm3,%xmm0
1140.byte	102,15,58,68,242,0
1141	movups	32(%edx),%xmm5
1142	psllq	$57,%xmm0
1143	movdqa	%xmm0,%xmm3
1144	pslldq	$8,%xmm0
1145	psrldq	$8,%xmm3
1146	pxor	%xmm4,%xmm0
1147	pxor	%xmm3,%xmm1
1148	pshufd	$78,%xmm7,%xmm3
1149	movdqa	%xmm0,%xmm4
1150	psrlq	$1,%xmm0
1151	pxor	%xmm7,%xmm3
1152	pxor	%xmm4,%xmm1
1153.byte	102,15,58,68,250,17
1154	movups	16(%edx),%xmm2
1155	pxor	%xmm0,%xmm4
1156	psrlq	$5,%xmm0
1157	pxor	%xmm4,%xmm0
1158	psrlq	$1,%xmm0
1159	pxor	%xmm1,%xmm0
1160.byte	102,15,58,68,221,0
1161	leal	32(%esi),%esi
1162	subl	$32,%ebx
1163	ja	.L015mod_loop
1164.L014even_tail:
1165	pshufd	$78,%xmm0,%xmm4
1166	movdqa	%xmm0,%xmm1
1167	pxor	%xmm0,%xmm4
1168.byte	102,15,58,68,194,0
1169.byte	102,15,58,68,202,17
1170.byte	102,15,58,68,229,16
1171	movdqa	(%ecx),%xmm5
1172	xorps	%xmm6,%xmm0
1173	xorps	%xmm7,%xmm1
1174	pxor	%xmm0,%xmm3
1175	pxor	%xmm1,%xmm3
1176	pxor	%xmm3,%xmm4
1177	movdqa	%xmm4,%xmm3
1178	psrldq	$8,%xmm4
1179	pslldq	$8,%xmm3
1180	pxor	%xmm4,%xmm1
1181	pxor	%xmm3,%xmm0
1182	movdqa	%xmm0,%xmm4
1183	movdqa	%xmm0,%xmm3
1184	psllq	$5,%xmm0
1185	pxor	%xmm0,%xmm3
1186	psllq	$1,%xmm0
1187	pxor	%xmm3,%xmm0
1188	psllq	$57,%xmm0
1189	movdqa	%xmm0,%xmm3
1190	pslldq	$8,%xmm0
1191	psrldq	$8,%xmm3
1192	pxor	%xmm4,%xmm0
1193	pxor	%xmm3,%xmm1
1194	movdqa	%xmm0,%xmm4
1195	psrlq	$1,%xmm0
1196	pxor	%xmm4,%xmm1
1197	pxor	%xmm0,%xmm4
1198	psrlq	$5,%xmm0
1199	pxor	%xmm4,%xmm0
1200	psrlq	$1,%xmm0
1201	pxor	%xmm1,%xmm0
1202	testl	%ebx,%ebx
1203	jnz	.L016done
1204	movups	(%edx),%xmm2
1205.L013odd_tail:
1206	movdqu	(%esi),%xmm3
1207.byte	102,15,56,0,221
1208	pxor	%xmm3,%xmm0
1209	movdqa	%xmm0,%xmm1
1210	pshufd	$78,%xmm0,%xmm3
1211	pshufd	$78,%xmm2,%xmm4
1212	pxor	%xmm0,%xmm3
1213	pxor	%xmm2,%xmm4
1214.byte	102,15,58,68,194,0
1215.byte	102,15,58,68,202,17
1216.byte	102,15,58,68,220,0
1217	xorps	%xmm0,%xmm3
1218	xorps	%xmm1,%xmm3
1219	movdqa	%xmm3,%xmm4
1220	psrldq	$8,%xmm3
1221	pslldq	$8,%xmm4
1222	pxor	%xmm3,%xmm1
1223	pxor	%xmm4,%xmm0
1224	movdqa	%xmm0,%xmm4
1225	movdqa	%xmm0,%xmm3
1226	psllq	$5,%xmm0
1227	pxor	%xmm0,%xmm3
1228	psllq	$1,%xmm0
1229	pxor	%xmm3,%xmm0
1230	psllq	$57,%xmm0
1231	movdqa	%xmm0,%xmm3
1232	pslldq	$8,%xmm0
1233	psrldq	$8,%xmm3
1234	pxor	%xmm4,%xmm0
1235	pxor	%xmm3,%xmm1
1236	movdqa	%xmm0,%xmm4
1237	psrlq	$1,%xmm0
1238	pxor	%xmm4,%xmm1
1239	pxor	%xmm0,%xmm4
1240	psrlq	$5,%xmm0
1241	pxor	%xmm4,%xmm0
1242	psrlq	$1,%xmm0
1243	pxor	%xmm1,%xmm0
1244.L016done:
1245.byte	102,15,56,0,197
1246	movdqu	%xmm0,(%eax)
1247	popl	%edi
1248	popl	%esi
1249	popl	%ebx
1250	popl	%ebp
1251	ret
1252.size	gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
1253.align	64
1254.Lbswap:
1255.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1256.byte	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
1257.align	64
1258.Lrem_8bit:
1259.value	0,450,900,582,1800,1738,1164,1358
1260.value	3600,4050,3476,3158,2328,2266,2716,2910
1261.value	7200,7650,8100,7782,6952,6890,6316,6510
1262.value	4656,5106,4532,4214,5432,5370,5820,6014
1263.value	14400,14722,15300,14854,16200,16010,15564,15630
1264.value	13904,14226,13780,13334,12632,12442,13020,13086
1265.value	9312,9634,10212,9766,9064,8874,8428,8494
1266.value	10864,11186,10740,10294,11640,11450,12028,12094
1267.value	28800,28994,29444,29382,30600,30282,29708,30158
1268.value	32400,32594,32020,31958,31128,30810,31260,31710
1269.value	27808,28002,28452,28390,27560,27242,26668,27118
1270.value	25264,25458,24884,24822,26040,25722,26172,26622
1271.value	18624,18690,19268,19078,20424,19978,19532,19854
1272.value	18128,18194,17748,17558,16856,16410,16988,17310
1273.value	21728,21794,22372,22182,21480,21034,20588,20910
1274.value	23280,23346,22900,22710,24056,23610,24188,24510
1275.value	57600,57538,57988,58182,58888,59338,58764,58446
1276.value	61200,61138,60564,60758,59416,59866,60316,59998
1277.value	64800,64738,65188,65382,64040,64490,63916,63598
1278.value	62256,62194,61620,61814,62520,62970,63420,63102
1279.value	55616,55426,56004,56070,56904,57226,56780,56334
1280.value	55120,54930,54484,54550,53336,53658,54236,53790
1281.value	50528,50338,50916,50982,49768,50090,49644,49198
1282.value	52080,51890,51444,51510,52344,52666,53244,52798
1283.value	37248,36930,37380,37830,38536,38730,38156,38094
1284.value	40848,40530,39956,40406,39064,39258,39708,39646
1285.value	36256,35938,36388,36838,35496,35690,35116,35054
1286.value	33712,33394,32820,33270,33976,34170,34620,34558
1287.value	43456,43010,43588,43910,44744,44810,44364,44174
1288.value	42960,42514,42068,42390,41176,41242,41820,41630
1289.value	46560,46114,46692,47014,45800,45866,45420,45230
1290.value	48112,47666,47220,47542,48376,48442,49020,48830
1291.align	64
1292.Lrem_4bit:
1293.long	0,0,0,471859200,0,943718400,0,610271232
1294.long	0,1887436800,0,1822425088,0,1220542464,0,1423966208
1295.long	0,3774873600,0,4246732800,0,3644850176,0,3311403008
1296.long	0,2441084928,0,2376073216,0,2847932416,0,3051356160
1297.byte	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
1298.byte	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
1299.byte	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
1300.byte	0
1301
1302	.section ".note.gnu.property", "a"
1303	.p2align 2
1304	.long 1f - 0f
1305	.long 4f - 1f
1306	.long 5
13070:
1308	.asciz "GNU"
13091:
1310	.p2align 2
1311	.long 0xc0000002
1312	.long 3f - 2f
13132:
1314	.long 3
13153:
1316	.p2align 2
13174:
1318