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