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