xref: /freebsd/sys/crypto/openssl/i386/ghash-x86.S (revision c0855eaa3ee9614804b6bd6a255aa9f71e095f43)
1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from ghash-x86.pl. */
2bc3d5698SJohn Baldwin#ifdef PIC
3bc3d5698SJohn Baldwin.text
4bc3d5698SJohn Baldwin.globl	gcm_gmult_4bit_x86
5bc3d5698SJohn Baldwin.type	gcm_gmult_4bit_x86,@function
6bc3d5698SJohn Baldwin.align	16
7bc3d5698SJohn Baldwingcm_gmult_4bit_x86:
8bc3d5698SJohn Baldwin.L_gcm_gmult_4bit_x86_begin:
9*c0855eaaSJohn Baldwin	#ifdef __CET__
10*c0855eaaSJohn Baldwin
11*c0855eaaSJohn Baldwin.byte	243,15,30,251
12*c0855eaaSJohn Baldwin	#endif
13*c0855eaaSJohn Baldwin
14bc3d5698SJohn Baldwin	pushl	%ebp
15bc3d5698SJohn Baldwin	pushl	%ebx
16bc3d5698SJohn Baldwin	pushl	%esi
17bc3d5698SJohn Baldwin	pushl	%edi
18bc3d5698SJohn Baldwin	subl	$84,%esp
19bc3d5698SJohn Baldwin	movl	104(%esp),%edi
20bc3d5698SJohn Baldwin	movl	108(%esp),%esi
21bc3d5698SJohn Baldwin	movl	(%edi),%ebp
22bc3d5698SJohn Baldwin	movl	4(%edi),%edx
23bc3d5698SJohn Baldwin	movl	8(%edi),%ecx
24bc3d5698SJohn Baldwin	movl	12(%edi),%ebx
25bc3d5698SJohn Baldwin	movl	$0,16(%esp)
26bc3d5698SJohn Baldwin	movl	$471859200,20(%esp)
27bc3d5698SJohn Baldwin	movl	$943718400,24(%esp)
28bc3d5698SJohn Baldwin	movl	$610271232,28(%esp)
29bc3d5698SJohn Baldwin	movl	$1887436800,32(%esp)
30bc3d5698SJohn Baldwin	movl	$1822425088,36(%esp)
31bc3d5698SJohn Baldwin	movl	$1220542464,40(%esp)
32bc3d5698SJohn Baldwin	movl	$1423966208,44(%esp)
33bc3d5698SJohn Baldwin	movl	$3774873600,48(%esp)
34bc3d5698SJohn Baldwin	movl	$4246732800,52(%esp)
35bc3d5698SJohn Baldwin	movl	$3644850176,56(%esp)
36bc3d5698SJohn Baldwin	movl	$3311403008,60(%esp)
37bc3d5698SJohn Baldwin	movl	$2441084928,64(%esp)
38bc3d5698SJohn Baldwin	movl	$2376073216,68(%esp)
39bc3d5698SJohn Baldwin	movl	$2847932416,72(%esp)
40bc3d5698SJohn Baldwin	movl	$3051356160,76(%esp)
41bc3d5698SJohn Baldwin	movl	%ebp,(%esp)
42bc3d5698SJohn Baldwin	movl	%edx,4(%esp)
43bc3d5698SJohn Baldwin	movl	%ecx,8(%esp)
44bc3d5698SJohn Baldwin	movl	%ebx,12(%esp)
45bc3d5698SJohn Baldwin	shrl	$20,%ebx
46bc3d5698SJohn Baldwin	andl	$240,%ebx
47bc3d5698SJohn Baldwin	movl	4(%esi,%ebx,1),%ebp
48bc3d5698SJohn Baldwin	movl	(%esi,%ebx,1),%edx
49bc3d5698SJohn Baldwin	movl	12(%esi,%ebx,1),%ecx
50bc3d5698SJohn Baldwin	movl	8(%esi,%ebx,1),%ebx
51bc3d5698SJohn Baldwin	xorl	%eax,%eax
52bc3d5698SJohn Baldwin	movl	$15,%edi
53bc3d5698SJohn Baldwin	jmp	.L000x86_loop
54bc3d5698SJohn Baldwin.align	16
55bc3d5698SJohn Baldwin.L000x86_loop:
56bc3d5698SJohn Baldwin	movb	%bl,%al
57bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
58bc3d5698SJohn Baldwin	andb	$15,%al
59bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
60bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
61bc3d5698SJohn Baldwin	shrl	$4,%ebp
62bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
63bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
64bc3d5698SJohn Baldwin	andb	$240,%al
65bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
66bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
67bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
68bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
69bc3d5698SJohn Baldwin	decl	%edi
70bc3d5698SJohn Baldwin	js	.L001x86_break
71bc3d5698SJohn Baldwin	movb	%bl,%al
72bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
73bc3d5698SJohn Baldwin	andb	$15,%al
74bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
75bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
76bc3d5698SJohn Baldwin	shrl	$4,%ebp
77bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
78bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
79bc3d5698SJohn Baldwin	shlb	$4,%al
80bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
81bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
82bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
83bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
84bc3d5698SJohn Baldwin	jmp	.L000x86_loop
85bc3d5698SJohn Baldwin.align	16
86bc3d5698SJohn Baldwin.L001x86_break:
87bc3d5698SJohn Baldwin	bswap	%ebx
88bc3d5698SJohn Baldwin	bswap	%ecx
89bc3d5698SJohn Baldwin	bswap	%edx
90bc3d5698SJohn Baldwin	bswap	%ebp
91bc3d5698SJohn Baldwin	movl	104(%esp),%edi
92bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
93bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
94bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
95bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
96bc3d5698SJohn Baldwin	addl	$84,%esp
97bc3d5698SJohn Baldwin	popl	%edi
98bc3d5698SJohn Baldwin	popl	%esi
99bc3d5698SJohn Baldwin	popl	%ebx
100bc3d5698SJohn Baldwin	popl	%ebp
101bc3d5698SJohn Baldwin	ret
102bc3d5698SJohn Baldwin.size	gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
103bc3d5698SJohn Baldwin.globl	gcm_ghash_4bit_x86
104bc3d5698SJohn Baldwin.type	gcm_ghash_4bit_x86,@function
105bc3d5698SJohn Baldwin.align	16
106bc3d5698SJohn Baldwingcm_ghash_4bit_x86:
107bc3d5698SJohn Baldwin.L_gcm_ghash_4bit_x86_begin:
108*c0855eaaSJohn Baldwin	#ifdef __CET__
109*c0855eaaSJohn Baldwin
110*c0855eaaSJohn Baldwin.byte	243,15,30,251
111*c0855eaaSJohn Baldwin	#endif
112*c0855eaaSJohn Baldwin
113bc3d5698SJohn Baldwin	pushl	%ebp
114bc3d5698SJohn Baldwin	pushl	%ebx
115bc3d5698SJohn Baldwin	pushl	%esi
116bc3d5698SJohn Baldwin	pushl	%edi
117bc3d5698SJohn Baldwin	subl	$84,%esp
118bc3d5698SJohn Baldwin	movl	104(%esp),%ebx
119bc3d5698SJohn Baldwin	movl	108(%esp),%esi
120bc3d5698SJohn Baldwin	movl	112(%esp),%edi
121bc3d5698SJohn Baldwin	movl	116(%esp),%ecx
122bc3d5698SJohn Baldwin	addl	%edi,%ecx
123bc3d5698SJohn Baldwin	movl	%ecx,116(%esp)
124bc3d5698SJohn Baldwin	movl	(%ebx),%ebp
125bc3d5698SJohn Baldwin	movl	4(%ebx),%edx
126bc3d5698SJohn Baldwin	movl	8(%ebx),%ecx
127bc3d5698SJohn Baldwin	movl	12(%ebx),%ebx
128bc3d5698SJohn Baldwin	movl	$0,16(%esp)
129bc3d5698SJohn Baldwin	movl	$471859200,20(%esp)
130bc3d5698SJohn Baldwin	movl	$943718400,24(%esp)
131bc3d5698SJohn Baldwin	movl	$610271232,28(%esp)
132bc3d5698SJohn Baldwin	movl	$1887436800,32(%esp)
133bc3d5698SJohn Baldwin	movl	$1822425088,36(%esp)
134bc3d5698SJohn Baldwin	movl	$1220542464,40(%esp)
135bc3d5698SJohn Baldwin	movl	$1423966208,44(%esp)
136bc3d5698SJohn Baldwin	movl	$3774873600,48(%esp)
137bc3d5698SJohn Baldwin	movl	$4246732800,52(%esp)
138bc3d5698SJohn Baldwin	movl	$3644850176,56(%esp)
139bc3d5698SJohn Baldwin	movl	$3311403008,60(%esp)
140bc3d5698SJohn Baldwin	movl	$2441084928,64(%esp)
141bc3d5698SJohn Baldwin	movl	$2376073216,68(%esp)
142bc3d5698SJohn Baldwin	movl	$2847932416,72(%esp)
143bc3d5698SJohn Baldwin	movl	$3051356160,76(%esp)
144bc3d5698SJohn Baldwin.align	16
145bc3d5698SJohn Baldwin.L002x86_outer_loop:
146bc3d5698SJohn Baldwin	xorl	12(%edi),%ebx
147bc3d5698SJohn Baldwin	xorl	8(%edi),%ecx
148bc3d5698SJohn Baldwin	xorl	4(%edi),%edx
149bc3d5698SJohn Baldwin	xorl	(%edi),%ebp
150bc3d5698SJohn Baldwin	movl	%ebx,12(%esp)
151bc3d5698SJohn Baldwin	movl	%ecx,8(%esp)
152bc3d5698SJohn Baldwin	movl	%edx,4(%esp)
153bc3d5698SJohn Baldwin	movl	%ebp,(%esp)
154bc3d5698SJohn Baldwin	shrl	$20,%ebx
155bc3d5698SJohn Baldwin	andl	$240,%ebx
156bc3d5698SJohn Baldwin	movl	4(%esi,%ebx,1),%ebp
157bc3d5698SJohn Baldwin	movl	(%esi,%ebx,1),%edx
158bc3d5698SJohn Baldwin	movl	12(%esi,%ebx,1),%ecx
159bc3d5698SJohn Baldwin	movl	8(%esi,%ebx,1),%ebx
160bc3d5698SJohn Baldwin	xorl	%eax,%eax
161bc3d5698SJohn Baldwin	movl	$15,%edi
162bc3d5698SJohn Baldwin	jmp	.L003x86_loop
163bc3d5698SJohn Baldwin.align	16
164bc3d5698SJohn Baldwin.L003x86_loop:
165bc3d5698SJohn Baldwin	movb	%bl,%al
166bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
167bc3d5698SJohn Baldwin	andb	$15,%al
168bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
169bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
170bc3d5698SJohn Baldwin	shrl	$4,%ebp
171bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
172bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
173bc3d5698SJohn Baldwin	andb	$240,%al
174bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
175bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
176bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
177bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
178bc3d5698SJohn Baldwin	decl	%edi
179bc3d5698SJohn Baldwin	js	.L004x86_break
180bc3d5698SJohn Baldwin	movb	%bl,%al
181bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
182bc3d5698SJohn Baldwin	andb	$15,%al
183bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
184bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
185bc3d5698SJohn Baldwin	shrl	$4,%ebp
186bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
187bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
188bc3d5698SJohn Baldwin	shlb	$4,%al
189bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
190bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
191bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
192bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
193bc3d5698SJohn Baldwin	jmp	.L003x86_loop
194bc3d5698SJohn Baldwin.align	16
195bc3d5698SJohn Baldwin.L004x86_break:
196bc3d5698SJohn Baldwin	bswap	%ebx
197bc3d5698SJohn Baldwin	bswap	%ecx
198bc3d5698SJohn Baldwin	bswap	%edx
199bc3d5698SJohn Baldwin	bswap	%ebp
200bc3d5698SJohn Baldwin	movl	112(%esp),%edi
201bc3d5698SJohn Baldwin	leal	16(%edi),%edi
202bc3d5698SJohn Baldwin	cmpl	116(%esp),%edi
203bc3d5698SJohn Baldwin	movl	%edi,112(%esp)
204bc3d5698SJohn Baldwin	jb	.L002x86_outer_loop
205bc3d5698SJohn Baldwin	movl	104(%esp),%edi
206bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
207bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
208bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
209bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
210bc3d5698SJohn Baldwin	addl	$84,%esp
211bc3d5698SJohn Baldwin	popl	%edi
212bc3d5698SJohn Baldwin	popl	%esi
213bc3d5698SJohn Baldwin	popl	%ebx
214bc3d5698SJohn Baldwin	popl	%ebp
215bc3d5698SJohn Baldwin	ret
216bc3d5698SJohn Baldwin.size	gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
217bc3d5698SJohn Baldwin.globl	gcm_gmult_4bit_mmx
218bc3d5698SJohn Baldwin.type	gcm_gmult_4bit_mmx,@function
219bc3d5698SJohn Baldwin.align	16
220bc3d5698SJohn Baldwingcm_gmult_4bit_mmx:
221bc3d5698SJohn Baldwin.L_gcm_gmult_4bit_mmx_begin:
222*c0855eaaSJohn Baldwin	#ifdef __CET__
223*c0855eaaSJohn Baldwin
224*c0855eaaSJohn Baldwin.byte	243,15,30,251
225*c0855eaaSJohn Baldwin	#endif
226*c0855eaaSJohn Baldwin
227bc3d5698SJohn Baldwin	pushl	%ebp
228bc3d5698SJohn Baldwin	pushl	%ebx
229bc3d5698SJohn Baldwin	pushl	%esi
230bc3d5698SJohn Baldwin	pushl	%edi
231bc3d5698SJohn Baldwin	movl	20(%esp),%edi
232bc3d5698SJohn Baldwin	movl	24(%esp),%esi
233bc3d5698SJohn Baldwin	call	.L005pic_point
234bc3d5698SJohn Baldwin.L005pic_point:
235bc3d5698SJohn Baldwin	popl	%eax
236bc3d5698SJohn Baldwin	leal	.Lrem_4bit-.L005pic_point(%eax),%eax
237bc3d5698SJohn Baldwin	movzbl	15(%edi),%ebx
238bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
239bc3d5698SJohn Baldwin	movl	%ebx,%edx
240bc3d5698SJohn Baldwin	movb	%dl,%cl
241bc3d5698SJohn Baldwin	movl	$14,%ebp
242bc3d5698SJohn Baldwin	shlb	$4,%cl
243bc3d5698SJohn Baldwin	andl	$240,%edx
244bc3d5698SJohn Baldwin	movq	8(%esi,%ecx,1),%mm0
245bc3d5698SJohn Baldwin	movq	(%esi,%ecx,1),%mm1
246bc3d5698SJohn Baldwin	movd	%mm0,%ebx
247bc3d5698SJohn Baldwin	jmp	.L006mmx_loop
248bc3d5698SJohn Baldwin.align	16
249bc3d5698SJohn Baldwin.L006mmx_loop:
250bc3d5698SJohn Baldwin	psrlq	$4,%mm0
251bc3d5698SJohn Baldwin	andl	$15,%ebx
252bc3d5698SJohn Baldwin	movq	%mm1,%mm2
253bc3d5698SJohn Baldwin	psrlq	$4,%mm1
254bc3d5698SJohn Baldwin	pxor	8(%esi,%edx,1),%mm0
255bc3d5698SJohn Baldwin	movb	(%edi,%ebp,1),%cl
256bc3d5698SJohn Baldwin	psllq	$60,%mm2
257bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
258bc3d5698SJohn Baldwin	decl	%ebp
259bc3d5698SJohn Baldwin	movd	%mm0,%ebx
260bc3d5698SJohn Baldwin	pxor	(%esi,%edx,1),%mm1
261bc3d5698SJohn Baldwin	movl	%ecx,%edx
262bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
263bc3d5698SJohn Baldwin	js	.L007mmx_break
264bc3d5698SJohn Baldwin	shlb	$4,%cl
265bc3d5698SJohn Baldwin	andl	$15,%ebx
266bc3d5698SJohn Baldwin	psrlq	$4,%mm0
267bc3d5698SJohn Baldwin	andl	$240,%edx
268bc3d5698SJohn Baldwin	movq	%mm1,%mm2
269bc3d5698SJohn Baldwin	psrlq	$4,%mm1
270bc3d5698SJohn Baldwin	pxor	8(%esi,%ecx,1),%mm0
271bc3d5698SJohn Baldwin	psllq	$60,%mm2
272bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
273bc3d5698SJohn Baldwin	movd	%mm0,%ebx
274bc3d5698SJohn Baldwin	pxor	(%esi,%ecx,1),%mm1
275bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
276bc3d5698SJohn Baldwin	jmp	.L006mmx_loop
277bc3d5698SJohn Baldwin.align	16
278bc3d5698SJohn Baldwin.L007mmx_break:
279bc3d5698SJohn Baldwin	shlb	$4,%cl
280bc3d5698SJohn Baldwin	andl	$15,%ebx
281bc3d5698SJohn Baldwin	psrlq	$4,%mm0
282bc3d5698SJohn Baldwin	andl	$240,%edx
283bc3d5698SJohn Baldwin	movq	%mm1,%mm2
284bc3d5698SJohn Baldwin	psrlq	$4,%mm1
285bc3d5698SJohn Baldwin	pxor	8(%esi,%ecx,1),%mm0
286bc3d5698SJohn Baldwin	psllq	$60,%mm2
287bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
288bc3d5698SJohn Baldwin	movd	%mm0,%ebx
289bc3d5698SJohn Baldwin	pxor	(%esi,%ecx,1),%mm1
290bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
291bc3d5698SJohn Baldwin	psrlq	$4,%mm0
292bc3d5698SJohn Baldwin	andl	$15,%ebx
293bc3d5698SJohn Baldwin	movq	%mm1,%mm2
294bc3d5698SJohn Baldwin	psrlq	$4,%mm1
295bc3d5698SJohn Baldwin	pxor	8(%esi,%edx,1),%mm0
296bc3d5698SJohn Baldwin	psllq	$60,%mm2
297bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
298bc3d5698SJohn Baldwin	movd	%mm0,%ebx
299bc3d5698SJohn Baldwin	pxor	(%esi,%edx,1),%mm1
300bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
301bc3d5698SJohn Baldwin	psrlq	$32,%mm0
302bc3d5698SJohn Baldwin	movd	%mm1,%edx
303bc3d5698SJohn Baldwin	psrlq	$32,%mm1
304bc3d5698SJohn Baldwin	movd	%mm0,%ecx
305bc3d5698SJohn Baldwin	movd	%mm1,%ebp
306bc3d5698SJohn Baldwin	bswap	%ebx
307bc3d5698SJohn Baldwin	bswap	%edx
308bc3d5698SJohn Baldwin	bswap	%ecx
309bc3d5698SJohn Baldwin	bswap	%ebp
310bc3d5698SJohn Baldwin	emms
311bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
312bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
313bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
314bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
315bc3d5698SJohn Baldwin	popl	%edi
316bc3d5698SJohn Baldwin	popl	%esi
317bc3d5698SJohn Baldwin	popl	%ebx
318bc3d5698SJohn Baldwin	popl	%ebp
319bc3d5698SJohn Baldwin	ret
320bc3d5698SJohn Baldwin.size	gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
321bc3d5698SJohn Baldwin.globl	gcm_ghash_4bit_mmx
322bc3d5698SJohn Baldwin.type	gcm_ghash_4bit_mmx,@function
323bc3d5698SJohn Baldwin.align	16
324bc3d5698SJohn Baldwingcm_ghash_4bit_mmx:
325bc3d5698SJohn Baldwin.L_gcm_ghash_4bit_mmx_begin:
326*c0855eaaSJohn Baldwin	#ifdef __CET__
327*c0855eaaSJohn Baldwin
328*c0855eaaSJohn Baldwin.byte	243,15,30,251
329*c0855eaaSJohn Baldwin	#endif
330*c0855eaaSJohn Baldwin
331bc3d5698SJohn Baldwin	pushl	%ebp
332bc3d5698SJohn Baldwin	pushl	%ebx
333bc3d5698SJohn Baldwin	pushl	%esi
334bc3d5698SJohn Baldwin	pushl	%edi
335bc3d5698SJohn Baldwin	movl	20(%esp),%eax
336bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
337bc3d5698SJohn Baldwin	movl	28(%esp),%ecx
338bc3d5698SJohn Baldwin	movl	32(%esp),%edx
339bc3d5698SJohn Baldwin	movl	%esp,%ebp
340bc3d5698SJohn Baldwin	call	.L008pic_point
341bc3d5698SJohn Baldwin.L008pic_point:
342bc3d5698SJohn Baldwin	popl	%esi
343bc3d5698SJohn Baldwin	leal	.Lrem_8bit-.L008pic_point(%esi),%esi
344bc3d5698SJohn Baldwin	subl	$544,%esp
345bc3d5698SJohn Baldwin	andl	$-64,%esp
346bc3d5698SJohn Baldwin	subl	$16,%esp
347bc3d5698SJohn Baldwin	addl	%ecx,%edx
348bc3d5698SJohn Baldwin	movl	%eax,544(%esp)
349bc3d5698SJohn Baldwin	movl	%edx,552(%esp)
350bc3d5698SJohn Baldwin	movl	%ebp,556(%esp)
351bc3d5698SJohn Baldwin	addl	$128,%ebx
352bc3d5698SJohn Baldwin	leal	144(%esp),%edi
353bc3d5698SJohn Baldwin	leal	400(%esp),%ebp
354bc3d5698SJohn Baldwin	movl	-120(%ebx),%edx
355bc3d5698SJohn Baldwin	movq	-120(%ebx),%mm0
356bc3d5698SJohn Baldwin	movq	-128(%ebx),%mm3
357bc3d5698SJohn Baldwin	shll	$4,%edx
358bc3d5698SJohn Baldwin	movb	%dl,(%esp)
359bc3d5698SJohn Baldwin	movl	-104(%ebx),%edx
360bc3d5698SJohn Baldwin	movq	-104(%ebx),%mm2
361bc3d5698SJohn Baldwin	movq	-112(%ebx),%mm5
362bc3d5698SJohn Baldwin	movq	%mm0,-128(%edi)
363bc3d5698SJohn Baldwin	psrlq	$4,%mm0
364bc3d5698SJohn Baldwin	movq	%mm3,(%edi)
365bc3d5698SJohn Baldwin	movq	%mm3,%mm7
366bc3d5698SJohn Baldwin	psrlq	$4,%mm3
367bc3d5698SJohn Baldwin	shll	$4,%edx
368bc3d5698SJohn Baldwin	movb	%dl,1(%esp)
369bc3d5698SJohn Baldwin	movl	-88(%ebx),%edx
370bc3d5698SJohn Baldwin	movq	-88(%ebx),%mm1
371bc3d5698SJohn Baldwin	psllq	$60,%mm7
372bc3d5698SJohn Baldwin	movq	-96(%ebx),%mm4
373bc3d5698SJohn Baldwin	por	%mm7,%mm0
374bc3d5698SJohn Baldwin	movq	%mm2,-120(%edi)
375bc3d5698SJohn Baldwin	psrlq	$4,%mm2
376bc3d5698SJohn Baldwin	movq	%mm5,8(%edi)
377bc3d5698SJohn Baldwin	movq	%mm5,%mm6
378bc3d5698SJohn Baldwin	movq	%mm0,-128(%ebp)
379bc3d5698SJohn Baldwin	psrlq	$4,%mm5
380bc3d5698SJohn Baldwin	movq	%mm3,(%ebp)
381bc3d5698SJohn Baldwin	shll	$4,%edx
382bc3d5698SJohn Baldwin	movb	%dl,2(%esp)
383bc3d5698SJohn Baldwin	movl	-72(%ebx),%edx
384bc3d5698SJohn Baldwin	movq	-72(%ebx),%mm0
385bc3d5698SJohn Baldwin	psllq	$60,%mm6
386bc3d5698SJohn Baldwin	movq	-80(%ebx),%mm3
387bc3d5698SJohn Baldwin	por	%mm6,%mm2
388bc3d5698SJohn Baldwin	movq	%mm1,-112(%edi)
389bc3d5698SJohn Baldwin	psrlq	$4,%mm1
390bc3d5698SJohn Baldwin	movq	%mm4,16(%edi)
391bc3d5698SJohn Baldwin	movq	%mm4,%mm7
392bc3d5698SJohn Baldwin	movq	%mm2,-120(%ebp)
393bc3d5698SJohn Baldwin	psrlq	$4,%mm4
394bc3d5698SJohn Baldwin	movq	%mm5,8(%ebp)
395bc3d5698SJohn Baldwin	shll	$4,%edx
396bc3d5698SJohn Baldwin	movb	%dl,3(%esp)
397bc3d5698SJohn Baldwin	movl	-56(%ebx),%edx
398bc3d5698SJohn Baldwin	movq	-56(%ebx),%mm2
399bc3d5698SJohn Baldwin	psllq	$60,%mm7
400bc3d5698SJohn Baldwin	movq	-64(%ebx),%mm5
401bc3d5698SJohn Baldwin	por	%mm7,%mm1
402bc3d5698SJohn Baldwin	movq	%mm0,-104(%edi)
403bc3d5698SJohn Baldwin	psrlq	$4,%mm0
404bc3d5698SJohn Baldwin	movq	%mm3,24(%edi)
405bc3d5698SJohn Baldwin	movq	%mm3,%mm6
406bc3d5698SJohn Baldwin	movq	%mm1,-112(%ebp)
407bc3d5698SJohn Baldwin	psrlq	$4,%mm3
408bc3d5698SJohn Baldwin	movq	%mm4,16(%ebp)
409bc3d5698SJohn Baldwin	shll	$4,%edx
410bc3d5698SJohn Baldwin	movb	%dl,4(%esp)
411bc3d5698SJohn Baldwin	movl	-40(%ebx),%edx
412bc3d5698SJohn Baldwin	movq	-40(%ebx),%mm1
413bc3d5698SJohn Baldwin	psllq	$60,%mm6
414bc3d5698SJohn Baldwin	movq	-48(%ebx),%mm4
415bc3d5698SJohn Baldwin	por	%mm6,%mm0
416bc3d5698SJohn Baldwin	movq	%mm2,-96(%edi)
417bc3d5698SJohn Baldwin	psrlq	$4,%mm2
418bc3d5698SJohn Baldwin	movq	%mm5,32(%edi)
419bc3d5698SJohn Baldwin	movq	%mm5,%mm7
420bc3d5698SJohn Baldwin	movq	%mm0,-104(%ebp)
421bc3d5698SJohn Baldwin	psrlq	$4,%mm5
422bc3d5698SJohn Baldwin	movq	%mm3,24(%ebp)
423bc3d5698SJohn Baldwin	shll	$4,%edx
424bc3d5698SJohn Baldwin	movb	%dl,5(%esp)
425bc3d5698SJohn Baldwin	movl	-24(%ebx),%edx
426bc3d5698SJohn Baldwin	movq	-24(%ebx),%mm0
427bc3d5698SJohn Baldwin	psllq	$60,%mm7
428bc3d5698SJohn Baldwin	movq	-32(%ebx),%mm3
429bc3d5698SJohn Baldwin	por	%mm7,%mm2
430bc3d5698SJohn Baldwin	movq	%mm1,-88(%edi)
431bc3d5698SJohn Baldwin	psrlq	$4,%mm1
432bc3d5698SJohn Baldwin	movq	%mm4,40(%edi)
433bc3d5698SJohn Baldwin	movq	%mm4,%mm6
434bc3d5698SJohn Baldwin	movq	%mm2,-96(%ebp)
435bc3d5698SJohn Baldwin	psrlq	$4,%mm4
436bc3d5698SJohn Baldwin	movq	%mm5,32(%ebp)
437bc3d5698SJohn Baldwin	shll	$4,%edx
438bc3d5698SJohn Baldwin	movb	%dl,6(%esp)
439bc3d5698SJohn Baldwin	movl	-8(%ebx),%edx
440bc3d5698SJohn Baldwin	movq	-8(%ebx),%mm2
441bc3d5698SJohn Baldwin	psllq	$60,%mm6
442bc3d5698SJohn Baldwin	movq	-16(%ebx),%mm5
443bc3d5698SJohn Baldwin	por	%mm6,%mm1
444bc3d5698SJohn Baldwin	movq	%mm0,-80(%edi)
445bc3d5698SJohn Baldwin	psrlq	$4,%mm0
446bc3d5698SJohn Baldwin	movq	%mm3,48(%edi)
447bc3d5698SJohn Baldwin	movq	%mm3,%mm7
448bc3d5698SJohn Baldwin	movq	%mm1,-88(%ebp)
449bc3d5698SJohn Baldwin	psrlq	$4,%mm3
450bc3d5698SJohn Baldwin	movq	%mm4,40(%ebp)
451bc3d5698SJohn Baldwin	shll	$4,%edx
452bc3d5698SJohn Baldwin	movb	%dl,7(%esp)
453bc3d5698SJohn Baldwin	movl	8(%ebx),%edx
454bc3d5698SJohn Baldwin	movq	8(%ebx),%mm1
455bc3d5698SJohn Baldwin	psllq	$60,%mm7
456bc3d5698SJohn Baldwin	movq	(%ebx),%mm4
457bc3d5698SJohn Baldwin	por	%mm7,%mm0
458bc3d5698SJohn Baldwin	movq	%mm2,-72(%edi)
459bc3d5698SJohn Baldwin	psrlq	$4,%mm2
460bc3d5698SJohn Baldwin	movq	%mm5,56(%edi)
461bc3d5698SJohn Baldwin	movq	%mm5,%mm6
462bc3d5698SJohn Baldwin	movq	%mm0,-80(%ebp)
463bc3d5698SJohn Baldwin	psrlq	$4,%mm5
464bc3d5698SJohn Baldwin	movq	%mm3,48(%ebp)
465bc3d5698SJohn Baldwin	shll	$4,%edx
466bc3d5698SJohn Baldwin	movb	%dl,8(%esp)
467bc3d5698SJohn Baldwin	movl	24(%ebx),%edx
468bc3d5698SJohn Baldwin	movq	24(%ebx),%mm0
469bc3d5698SJohn Baldwin	psllq	$60,%mm6
470bc3d5698SJohn Baldwin	movq	16(%ebx),%mm3
471bc3d5698SJohn Baldwin	por	%mm6,%mm2
472bc3d5698SJohn Baldwin	movq	%mm1,-64(%edi)
473bc3d5698SJohn Baldwin	psrlq	$4,%mm1
474bc3d5698SJohn Baldwin	movq	%mm4,64(%edi)
475bc3d5698SJohn Baldwin	movq	%mm4,%mm7
476bc3d5698SJohn Baldwin	movq	%mm2,-72(%ebp)
477bc3d5698SJohn Baldwin	psrlq	$4,%mm4
478bc3d5698SJohn Baldwin	movq	%mm5,56(%ebp)
479bc3d5698SJohn Baldwin	shll	$4,%edx
480bc3d5698SJohn Baldwin	movb	%dl,9(%esp)
481bc3d5698SJohn Baldwin	movl	40(%ebx),%edx
482bc3d5698SJohn Baldwin	movq	40(%ebx),%mm2
483bc3d5698SJohn Baldwin	psllq	$60,%mm7
484bc3d5698SJohn Baldwin	movq	32(%ebx),%mm5
485bc3d5698SJohn Baldwin	por	%mm7,%mm1
486bc3d5698SJohn Baldwin	movq	%mm0,-56(%edi)
487bc3d5698SJohn Baldwin	psrlq	$4,%mm0
488bc3d5698SJohn Baldwin	movq	%mm3,72(%edi)
489bc3d5698SJohn Baldwin	movq	%mm3,%mm6
490bc3d5698SJohn Baldwin	movq	%mm1,-64(%ebp)
491bc3d5698SJohn Baldwin	psrlq	$4,%mm3
492bc3d5698SJohn Baldwin	movq	%mm4,64(%ebp)
493bc3d5698SJohn Baldwin	shll	$4,%edx
494bc3d5698SJohn Baldwin	movb	%dl,10(%esp)
495bc3d5698SJohn Baldwin	movl	56(%ebx),%edx
496bc3d5698SJohn Baldwin	movq	56(%ebx),%mm1
497bc3d5698SJohn Baldwin	psllq	$60,%mm6
498bc3d5698SJohn Baldwin	movq	48(%ebx),%mm4
499bc3d5698SJohn Baldwin	por	%mm6,%mm0
500bc3d5698SJohn Baldwin	movq	%mm2,-48(%edi)
501bc3d5698SJohn Baldwin	psrlq	$4,%mm2
502bc3d5698SJohn Baldwin	movq	%mm5,80(%edi)
503bc3d5698SJohn Baldwin	movq	%mm5,%mm7
504bc3d5698SJohn Baldwin	movq	%mm0,-56(%ebp)
505bc3d5698SJohn Baldwin	psrlq	$4,%mm5
506bc3d5698SJohn Baldwin	movq	%mm3,72(%ebp)
507bc3d5698SJohn Baldwin	shll	$4,%edx
508bc3d5698SJohn Baldwin	movb	%dl,11(%esp)
509bc3d5698SJohn Baldwin	movl	72(%ebx),%edx
510bc3d5698SJohn Baldwin	movq	72(%ebx),%mm0
511bc3d5698SJohn Baldwin	psllq	$60,%mm7
512bc3d5698SJohn Baldwin	movq	64(%ebx),%mm3
513bc3d5698SJohn Baldwin	por	%mm7,%mm2
514bc3d5698SJohn Baldwin	movq	%mm1,-40(%edi)
515bc3d5698SJohn Baldwin	psrlq	$4,%mm1
516bc3d5698SJohn Baldwin	movq	%mm4,88(%edi)
517bc3d5698SJohn Baldwin	movq	%mm4,%mm6
518bc3d5698SJohn Baldwin	movq	%mm2,-48(%ebp)
519bc3d5698SJohn Baldwin	psrlq	$4,%mm4
520bc3d5698SJohn Baldwin	movq	%mm5,80(%ebp)
521bc3d5698SJohn Baldwin	shll	$4,%edx
522bc3d5698SJohn Baldwin	movb	%dl,12(%esp)
523bc3d5698SJohn Baldwin	movl	88(%ebx),%edx
524bc3d5698SJohn Baldwin	movq	88(%ebx),%mm2
525bc3d5698SJohn Baldwin	psllq	$60,%mm6
526bc3d5698SJohn Baldwin	movq	80(%ebx),%mm5
527bc3d5698SJohn Baldwin	por	%mm6,%mm1
528bc3d5698SJohn Baldwin	movq	%mm0,-32(%edi)
529bc3d5698SJohn Baldwin	psrlq	$4,%mm0
530bc3d5698SJohn Baldwin	movq	%mm3,96(%edi)
531bc3d5698SJohn Baldwin	movq	%mm3,%mm7
532bc3d5698SJohn Baldwin	movq	%mm1,-40(%ebp)
533bc3d5698SJohn Baldwin	psrlq	$4,%mm3
534bc3d5698SJohn Baldwin	movq	%mm4,88(%ebp)
535bc3d5698SJohn Baldwin	shll	$4,%edx
536bc3d5698SJohn Baldwin	movb	%dl,13(%esp)
537bc3d5698SJohn Baldwin	movl	104(%ebx),%edx
538bc3d5698SJohn Baldwin	movq	104(%ebx),%mm1
539bc3d5698SJohn Baldwin	psllq	$60,%mm7
540bc3d5698SJohn Baldwin	movq	96(%ebx),%mm4
541bc3d5698SJohn Baldwin	por	%mm7,%mm0
542bc3d5698SJohn Baldwin	movq	%mm2,-24(%edi)
543bc3d5698SJohn Baldwin	psrlq	$4,%mm2
544bc3d5698SJohn Baldwin	movq	%mm5,104(%edi)
545bc3d5698SJohn Baldwin	movq	%mm5,%mm6
546bc3d5698SJohn Baldwin	movq	%mm0,-32(%ebp)
547bc3d5698SJohn Baldwin	psrlq	$4,%mm5
548bc3d5698SJohn Baldwin	movq	%mm3,96(%ebp)
549bc3d5698SJohn Baldwin	shll	$4,%edx
550bc3d5698SJohn Baldwin	movb	%dl,14(%esp)
551bc3d5698SJohn Baldwin	movl	120(%ebx),%edx
552bc3d5698SJohn Baldwin	movq	120(%ebx),%mm0
553bc3d5698SJohn Baldwin	psllq	$60,%mm6
554bc3d5698SJohn Baldwin	movq	112(%ebx),%mm3
555bc3d5698SJohn Baldwin	por	%mm6,%mm2
556bc3d5698SJohn Baldwin	movq	%mm1,-16(%edi)
557bc3d5698SJohn Baldwin	psrlq	$4,%mm1
558bc3d5698SJohn Baldwin	movq	%mm4,112(%edi)
559bc3d5698SJohn Baldwin	movq	%mm4,%mm7
560bc3d5698SJohn Baldwin	movq	%mm2,-24(%ebp)
561bc3d5698SJohn Baldwin	psrlq	$4,%mm4
562bc3d5698SJohn Baldwin	movq	%mm5,104(%ebp)
563bc3d5698SJohn Baldwin	shll	$4,%edx
564bc3d5698SJohn Baldwin	movb	%dl,15(%esp)
565bc3d5698SJohn Baldwin	psllq	$60,%mm7
566bc3d5698SJohn Baldwin	por	%mm7,%mm1
567bc3d5698SJohn Baldwin	movq	%mm0,-8(%edi)
568bc3d5698SJohn Baldwin	psrlq	$4,%mm0
569bc3d5698SJohn Baldwin	movq	%mm3,120(%edi)
570bc3d5698SJohn Baldwin	movq	%mm3,%mm6
571bc3d5698SJohn Baldwin	movq	%mm1,-16(%ebp)
572bc3d5698SJohn Baldwin	psrlq	$4,%mm3
573bc3d5698SJohn Baldwin	movq	%mm4,112(%ebp)
574bc3d5698SJohn Baldwin	psllq	$60,%mm6
575bc3d5698SJohn Baldwin	por	%mm6,%mm0
576bc3d5698SJohn Baldwin	movq	%mm0,-8(%ebp)
577bc3d5698SJohn Baldwin	movq	%mm3,120(%ebp)
578bc3d5698SJohn Baldwin	movq	(%eax),%mm6
579bc3d5698SJohn Baldwin	movl	8(%eax),%ebx
580bc3d5698SJohn Baldwin	movl	12(%eax),%edx
581bc3d5698SJohn Baldwin.align	16
582bc3d5698SJohn Baldwin.L009outer:
583bc3d5698SJohn Baldwin	xorl	12(%ecx),%edx
584bc3d5698SJohn Baldwin	xorl	8(%ecx),%ebx
585bc3d5698SJohn Baldwin	pxor	(%ecx),%mm6
586bc3d5698SJohn Baldwin	leal	16(%ecx),%ecx
587bc3d5698SJohn Baldwin	movl	%ebx,536(%esp)
588bc3d5698SJohn Baldwin	movq	%mm6,528(%esp)
589bc3d5698SJohn Baldwin	movl	%ecx,548(%esp)
590bc3d5698SJohn Baldwin	xorl	%eax,%eax
591bc3d5698SJohn Baldwin	roll	$8,%edx
592bc3d5698SJohn Baldwin	movb	%dl,%al
593bc3d5698SJohn Baldwin	movl	%eax,%ebp
594bc3d5698SJohn Baldwin	andb	$15,%al
595bc3d5698SJohn Baldwin	shrl	$4,%ebp
596bc3d5698SJohn Baldwin	pxor	%mm0,%mm0
597bc3d5698SJohn Baldwin	roll	$8,%edx
598bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
599bc3d5698SJohn Baldwin	pxor	%mm2,%mm2
600bc3d5698SJohn Baldwin	movq	16(%esp,%eax,8),%mm7
601bc3d5698SJohn Baldwin	movq	144(%esp,%eax,8),%mm6
602bc3d5698SJohn Baldwin	movb	%dl,%al
603bc3d5698SJohn Baldwin	movd	%mm7,%ebx
604bc3d5698SJohn Baldwin	psrlq	$8,%mm7
605bc3d5698SJohn Baldwin	movq	%mm6,%mm3
606bc3d5698SJohn Baldwin	movl	%eax,%edi
607bc3d5698SJohn Baldwin	psrlq	$8,%mm6
608bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
609bc3d5698SJohn Baldwin	andb	$15,%al
610bc3d5698SJohn Baldwin	psllq	$56,%mm3
611bc3d5698SJohn Baldwin	shrl	$4,%edi
612bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
613bc3d5698SJohn Baldwin	roll	$8,%edx
614bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
615bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
616bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
617bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
618bc3d5698SJohn Baldwin	movb	%dl,%al
619bc3d5698SJohn Baldwin	movd	%mm7,%ecx
620bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
621bc3d5698SJohn Baldwin	psrlq	$8,%mm7
622bc3d5698SJohn Baldwin	movq	%mm6,%mm3
623bc3d5698SJohn Baldwin	movl	%eax,%ebp
624bc3d5698SJohn Baldwin	psrlq	$8,%mm6
625bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
626bc3d5698SJohn Baldwin	andb	$15,%al
627bc3d5698SJohn Baldwin	psllq	$56,%mm3
628bc3d5698SJohn Baldwin	shrl	$4,%ebp
629bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
630bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
631bc3d5698SJohn Baldwin	roll	$8,%edx
632bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
633bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
634bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
635bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
636bc3d5698SJohn Baldwin	movb	%dl,%al
637bc3d5698SJohn Baldwin	movl	536(%esp),%edx
638bc3d5698SJohn Baldwin	movd	%mm7,%ebx
639bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
640bc3d5698SJohn Baldwin	psrlq	$8,%mm7
641bc3d5698SJohn Baldwin	movq	%mm6,%mm3
642bc3d5698SJohn Baldwin	movl	%eax,%edi
643bc3d5698SJohn Baldwin	psrlq	$8,%mm6
644bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
645bc3d5698SJohn Baldwin	andb	$15,%al
646bc3d5698SJohn Baldwin	psllq	$56,%mm3
647bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
648bc3d5698SJohn Baldwin	shrl	$4,%edi
649bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
650bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
651bc3d5698SJohn Baldwin	roll	$8,%edx
652bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
653bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
654bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
655bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
656bc3d5698SJohn Baldwin	movb	%dl,%al
657bc3d5698SJohn Baldwin	movd	%mm7,%ecx
658bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
659bc3d5698SJohn Baldwin	psrlq	$8,%mm7
660bc3d5698SJohn Baldwin	movq	%mm6,%mm3
661bc3d5698SJohn Baldwin	movl	%eax,%ebp
662bc3d5698SJohn Baldwin	psrlq	$8,%mm6
663bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
664bc3d5698SJohn Baldwin	andb	$15,%al
665bc3d5698SJohn Baldwin	psllq	$56,%mm3
666bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
667bc3d5698SJohn Baldwin	shrl	$4,%ebp
668bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
669bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
670bc3d5698SJohn Baldwin	roll	$8,%edx
671bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
672bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
673bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
674bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
675bc3d5698SJohn Baldwin	movb	%dl,%al
676bc3d5698SJohn Baldwin	movd	%mm7,%ebx
677bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
678bc3d5698SJohn Baldwin	psrlq	$8,%mm7
679bc3d5698SJohn Baldwin	movq	%mm6,%mm3
680bc3d5698SJohn Baldwin	movl	%eax,%edi
681bc3d5698SJohn Baldwin	psrlq	$8,%mm6
682bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
683bc3d5698SJohn Baldwin	andb	$15,%al
684bc3d5698SJohn Baldwin	psllq	$56,%mm3
685bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
686bc3d5698SJohn Baldwin	shrl	$4,%edi
687bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm2
688bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
689bc3d5698SJohn Baldwin	roll	$8,%edx
690bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
691bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
692bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
693bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
694bc3d5698SJohn Baldwin	movb	%dl,%al
695bc3d5698SJohn Baldwin	movd	%mm7,%ecx
696bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
697bc3d5698SJohn Baldwin	psrlq	$8,%mm7
698bc3d5698SJohn Baldwin	movq	%mm6,%mm3
699bc3d5698SJohn Baldwin	movl	%eax,%ebp
700bc3d5698SJohn Baldwin	psrlq	$8,%mm6
701bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
702bc3d5698SJohn Baldwin	andb	$15,%al
703bc3d5698SJohn Baldwin	psllq	$56,%mm3
704bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
705bc3d5698SJohn Baldwin	shrl	$4,%ebp
706bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm1
707bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
708bc3d5698SJohn Baldwin	roll	$8,%edx
709bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
710bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
711bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
712bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
713bc3d5698SJohn Baldwin	movb	%dl,%al
714bc3d5698SJohn Baldwin	movl	532(%esp),%edx
715bc3d5698SJohn Baldwin	movd	%mm7,%ebx
716bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
717bc3d5698SJohn Baldwin	psrlq	$8,%mm7
718bc3d5698SJohn Baldwin	movq	%mm6,%mm3
719bc3d5698SJohn Baldwin	movl	%eax,%edi
720bc3d5698SJohn Baldwin	psrlq	$8,%mm6
721bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
722bc3d5698SJohn Baldwin	andb	$15,%al
723bc3d5698SJohn Baldwin	psllq	$56,%mm3
724bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
725bc3d5698SJohn Baldwin	shrl	$4,%edi
726bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm0
727bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
728bc3d5698SJohn Baldwin	roll	$8,%edx
729bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
730bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
731bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
732bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
733bc3d5698SJohn Baldwin	movb	%dl,%al
734bc3d5698SJohn Baldwin	movd	%mm7,%ecx
735bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
736bc3d5698SJohn Baldwin	psrlq	$8,%mm7
737bc3d5698SJohn Baldwin	movq	%mm6,%mm3
738bc3d5698SJohn Baldwin	movl	%eax,%ebp
739bc3d5698SJohn Baldwin	psrlq	$8,%mm6
740bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
741bc3d5698SJohn Baldwin	andb	$15,%al
742bc3d5698SJohn Baldwin	psllq	$56,%mm3
743bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
744bc3d5698SJohn Baldwin	shrl	$4,%ebp
745bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
746bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
747bc3d5698SJohn Baldwin	roll	$8,%edx
748bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
749bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
750bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
751bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
752bc3d5698SJohn Baldwin	movb	%dl,%al
753bc3d5698SJohn Baldwin	movd	%mm7,%ebx
754bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
755bc3d5698SJohn Baldwin	psrlq	$8,%mm7
756bc3d5698SJohn Baldwin	movq	%mm6,%mm3
757bc3d5698SJohn Baldwin	movl	%eax,%edi
758bc3d5698SJohn Baldwin	psrlq	$8,%mm6
759bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
760bc3d5698SJohn Baldwin	andb	$15,%al
761bc3d5698SJohn Baldwin	psllq	$56,%mm3
762bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
763bc3d5698SJohn Baldwin	shrl	$4,%edi
764bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
765bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
766bc3d5698SJohn Baldwin	roll	$8,%edx
767bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
768bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
769bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
770bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
771bc3d5698SJohn Baldwin	movb	%dl,%al
772bc3d5698SJohn Baldwin	movd	%mm7,%ecx
773bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
774bc3d5698SJohn Baldwin	psrlq	$8,%mm7
775bc3d5698SJohn Baldwin	movq	%mm6,%mm3
776bc3d5698SJohn Baldwin	movl	%eax,%ebp
777bc3d5698SJohn Baldwin	psrlq	$8,%mm6
778bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
779bc3d5698SJohn Baldwin	andb	$15,%al
780bc3d5698SJohn Baldwin	psllq	$56,%mm3
781bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
782bc3d5698SJohn Baldwin	shrl	$4,%ebp
783bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
784bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
785bc3d5698SJohn Baldwin	roll	$8,%edx
786bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
787bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
788bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
789bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
790bc3d5698SJohn Baldwin	movb	%dl,%al
791bc3d5698SJohn Baldwin	movl	528(%esp),%edx
792bc3d5698SJohn Baldwin	movd	%mm7,%ebx
793bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
794bc3d5698SJohn Baldwin	psrlq	$8,%mm7
795bc3d5698SJohn Baldwin	movq	%mm6,%mm3
796bc3d5698SJohn Baldwin	movl	%eax,%edi
797bc3d5698SJohn Baldwin	psrlq	$8,%mm6
798bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
799bc3d5698SJohn Baldwin	andb	$15,%al
800bc3d5698SJohn Baldwin	psllq	$56,%mm3
801bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
802bc3d5698SJohn Baldwin	shrl	$4,%edi
803bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm2
804bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
805bc3d5698SJohn Baldwin	roll	$8,%edx
806bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
807bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
808bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
809bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
810bc3d5698SJohn Baldwin	movb	%dl,%al
811bc3d5698SJohn Baldwin	movd	%mm7,%ecx
812bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
813bc3d5698SJohn Baldwin	psrlq	$8,%mm7
814bc3d5698SJohn Baldwin	movq	%mm6,%mm3
815bc3d5698SJohn Baldwin	movl	%eax,%ebp
816bc3d5698SJohn Baldwin	psrlq	$8,%mm6
817bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
818bc3d5698SJohn Baldwin	andb	$15,%al
819bc3d5698SJohn Baldwin	psllq	$56,%mm3
820bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
821bc3d5698SJohn Baldwin	shrl	$4,%ebp
822bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm1
823bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
824bc3d5698SJohn Baldwin	roll	$8,%edx
825bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
826bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
827bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
828bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
829bc3d5698SJohn Baldwin	movb	%dl,%al
830bc3d5698SJohn Baldwin	movd	%mm7,%ebx
831bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
832bc3d5698SJohn Baldwin	psrlq	$8,%mm7
833bc3d5698SJohn Baldwin	movq	%mm6,%mm3
834bc3d5698SJohn Baldwin	movl	%eax,%edi
835bc3d5698SJohn Baldwin	psrlq	$8,%mm6
836bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
837bc3d5698SJohn Baldwin	andb	$15,%al
838bc3d5698SJohn Baldwin	psllq	$56,%mm3
839bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
840bc3d5698SJohn Baldwin	shrl	$4,%edi
841bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm0
842bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
843bc3d5698SJohn Baldwin	roll	$8,%edx
844bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
845bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
846bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
847bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
848bc3d5698SJohn Baldwin	movb	%dl,%al
849bc3d5698SJohn Baldwin	movd	%mm7,%ecx
850bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
851bc3d5698SJohn Baldwin	psrlq	$8,%mm7
852bc3d5698SJohn Baldwin	movq	%mm6,%mm3
853bc3d5698SJohn Baldwin	movl	%eax,%ebp
854bc3d5698SJohn Baldwin	psrlq	$8,%mm6
855bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
856bc3d5698SJohn Baldwin	andb	$15,%al
857bc3d5698SJohn Baldwin	psllq	$56,%mm3
858bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
859bc3d5698SJohn Baldwin	shrl	$4,%ebp
860bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
861bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
862bc3d5698SJohn Baldwin	roll	$8,%edx
863bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
864bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
865bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
866bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
867bc3d5698SJohn Baldwin	movb	%dl,%al
868bc3d5698SJohn Baldwin	movl	524(%esp),%edx
869bc3d5698SJohn Baldwin	movd	%mm7,%ebx
870bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
871bc3d5698SJohn Baldwin	psrlq	$8,%mm7
872bc3d5698SJohn Baldwin	movq	%mm6,%mm3
873bc3d5698SJohn Baldwin	movl	%eax,%edi
874bc3d5698SJohn Baldwin	psrlq	$8,%mm6
875bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
876bc3d5698SJohn Baldwin	andb	$15,%al
877bc3d5698SJohn Baldwin	psllq	$56,%mm3
878bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
879bc3d5698SJohn Baldwin	shrl	$4,%edi
880bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
881bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
882bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
883bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
884bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
885bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
886bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
887bc3d5698SJohn Baldwin	pxor	%mm2,%mm2
888bc3d5698SJohn Baldwin	psllq	$4,%mm1
889bc3d5698SJohn Baldwin	movd	%mm7,%ecx
890bc3d5698SJohn Baldwin	psrlq	$4,%mm7
891bc3d5698SJohn Baldwin	movq	%mm6,%mm3
892bc3d5698SJohn Baldwin	psrlq	$4,%mm6
893bc3d5698SJohn Baldwin	shll	$4,%ecx
894bc3d5698SJohn Baldwin	pxor	16(%esp,%edi,8),%mm7
895bc3d5698SJohn Baldwin	psllq	$60,%mm3
896bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
897bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
898bc3d5698SJohn Baldwin	pxor	144(%esp,%edi,8),%mm6
899bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
900bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
901bc3d5698SJohn Baldwin	movd	%mm7,%edx
902bc3d5698SJohn Baldwin	pinsrw	$3,(%esi,%ecx,2),%mm2
903bc3d5698SJohn Baldwin	psllq	$12,%mm0
904bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
905bc3d5698SJohn Baldwin	psrlq	$32,%mm7
906bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
907bc3d5698SJohn Baldwin	movl	548(%esp),%ecx
908bc3d5698SJohn Baldwin	movd	%mm7,%ebx
909bc3d5698SJohn Baldwin	movq	%mm6,%mm3
910bc3d5698SJohn Baldwin	psllw	$8,%mm6
911bc3d5698SJohn Baldwin	psrlw	$8,%mm3
912bc3d5698SJohn Baldwin	por	%mm3,%mm6
913bc3d5698SJohn Baldwin	bswap	%edx
914bc3d5698SJohn Baldwin	pshufw	$27,%mm6,%mm6
915bc3d5698SJohn Baldwin	bswap	%ebx
916bc3d5698SJohn Baldwin	cmpl	552(%esp),%ecx
917bc3d5698SJohn Baldwin	jne	.L009outer
918bc3d5698SJohn Baldwin	movl	544(%esp),%eax
919bc3d5698SJohn Baldwin	movl	%edx,12(%eax)
920bc3d5698SJohn Baldwin	movl	%ebx,8(%eax)
921bc3d5698SJohn Baldwin	movq	%mm6,(%eax)
922bc3d5698SJohn Baldwin	movl	556(%esp),%esp
923bc3d5698SJohn Baldwin	emms
924bc3d5698SJohn Baldwin	popl	%edi
925bc3d5698SJohn Baldwin	popl	%esi
926bc3d5698SJohn Baldwin	popl	%ebx
927bc3d5698SJohn Baldwin	popl	%ebp
928bc3d5698SJohn Baldwin	ret
929bc3d5698SJohn Baldwin.size	gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
930bc3d5698SJohn Baldwin.globl	gcm_init_clmul
931bc3d5698SJohn Baldwin.type	gcm_init_clmul,@function
932bc3d5698SJohn Baldwin.align	16
933bc3d5698SJohn Baldwingcm_init_clmul:
934bc3d5698SJohn Baldwin.L_gcm_init_clmul_begin:
935*c0855eaaSJohn Baldwin	#ifdef __CET__
936*c0855eaaSJohn Baldwin
937*c0855eaaSJohn Baldwin.byte	243,15,30,251
938*c0855eaaSJohn Baldwin	#endif
939*c0855eaaSJohn Baldwin
940bc3d5698SJohn Baldwin	movl	4(%esp),%edx
941bc3d5698SJohn Baldwin	movl	8(%esp),%eax
942bc3d5698SJohn Baldwin	call	.L010pic
943bc3d5698SJohn Baldwin.L010pic:
944bc3d5698SJohn Baldwin	popl	%ecx
945bc3d5698SJohn Baldwin	leal	.Lbswap-.L010pic(%ecx),%ecx
946bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm2
947bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm2
948bc3d5698SJohn Baldwin	pshufd	$255,%xmm2,%xmm4
949bc3d5698SJohn Baldwin	movdqa	%xmm2,%xmm3
950bc3d5698SJohn Baldwin	psllq	$1,%xmm2
951bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm5
952bc3d5698SJohn Baldwin	psrlq	$63,%xmm3
953bc3d5698SJohn Baldwin	pcmpgtd	%xmm4,%xmm5
954bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
955bc3d5698SJohn Baldwin	por	%xmm3,%xmm2
956bc3d5698SJohn Baldwin	pand	16(%ecx),%xmm5
957bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm2
958bc3d5698SJohn Baldwin	movdqa	%xmm2,%xmm0
959bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
960bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
961bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm4
962bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
963bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm4
964bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
965bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
966bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
967bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
968bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
969bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
970bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
971bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
972bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
973bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
974bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
975bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
976bc3d5698SJohn Baldwin	psllq	$5,%xmm0
977bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
978bc3d5698SJohn Baldwin	psllq	$1,%xmm0
979bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
980bc3d5698SJohn Baldwin	psllq	$57,%xmm0
981bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
982bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
983bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
984bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
985bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
986bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
987bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
988bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
989bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
990bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
991bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
992bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
993bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
994bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm3
995bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
996bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm3
997bc3d5698SJohn Baldwin	movdqu	%xmm2,(%edx)
998bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
999bc3d5698SJohn Baldwin	movdqu	%xmm0,16(%edx)
1000bc3d5698SJohn Baldwin.byte	102,15,58,15,227,8
1001bc3d5698SJohn Baldwin	movdqu	%xmm4,32(%edx)
1002bc3d5698SJohn Baldwin	ret
1003bc3d5698SJohn Baldwin.size	gcm_init_clmul,.-.L_gcm_init_clmul_begin
1004bc3d5698SJohn Baldwin.globl	gcm_gmult_clmul
1005bc3d5698SJohn Baldwin.type	gcm_gmult_clmul,@function
1006bc3d5698SJohn Baldwin.align	16
1007bc3d5698SJohn Baldwingcm_gmult_clmul:
1008bc3d5698SJohn Baldwin.L_gcm_gmult_clmul_begin:
1009*c0855eaaSJohn Baldwin	#ifdef __CET__
1010*c0855eaaSJohn Baldwin
1011*c0855eaaSJohn Baldwin.byte	243,15,30,251
1012*c0855eaaSJohn Baldwin	#endif
1013*c0855eaaSJohn Baldwin
1014bc3d5698SJohn Baldwin	movl	4(%esp),%eax
1015bc3d5698SJohn Baldwin	movl	8(%esp),%edx
1016bc3d5698SJohn Baldwin	call	.L011pic
1017bc3d5698SJohn Baldwin.L011pic:
1018bc3d5698SJohn Baldwin	popl	%ecx
1019bc3d5698SJohn Baldwin	leal	.Lbswap-.L011pic(%ecx),%ecx
1020bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm0
1021bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
1022bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
1023bc3d5698SJohn Baldwin.byte	102,15,56,0,197
1024bc3d5698SJohn Baldwin	movups	32(%edx),%xmm4
1025bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
1026bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
1027bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1028bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
1029bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
1030bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
1031bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
1032bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
1033bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
1034bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1035bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
1036bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1037bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1038bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1039bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1040bc3d5698SJohn Baldwin	psllq	$5,%xmm0
1041bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1042bc3d5698SJohn Baldwin	psllq	$1,%xmm0
1043bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1044bc3d5698SJohn Baldwin	psllq	$57,%xmm0
1045bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1046bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
1047bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1048bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1049bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1050bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1051bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1052bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1053bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1054bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
1055bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1056bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1057bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
1058bc3d5698SJohn Baldwin.byte	102,15,56,0,197
1059bc3d5698SJohn Baldwin	movdqu	%xmm0,(%eax)
1060bc3d5698SJohn Baldwin	ret
1061bc3d5698SJohn Baldwin.size	gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
1062bc3d5698SJohn Baldwin.globl	gcm_ghash_clmul
1063bc3d5698SJohn Baldwin.type	gcm_ghash_clmul,@function
1064bc3d5698SJohn Baldwin.align	16
1065bc3d5698SJohn Baldwingcm_ghash_clmul:
1066bc3d5698SJohn Baldwin.L_gcm_ghash_clmul_begin:
1067*c0855eaaSJohn Baldwin	#ifdef __CET__
1068*c0855eaaSJohn Baldwin
1069*c0855eaaSJohn Baldwin.byte	243,15,30,251
1070*c0855eaaSJohn Baldwin	#endif
1071*c0855eaaSJohn Baldwin
1072bc3d5698SJohn Baldwin	pushl	%ebp
1073bc3d5698SJohn Baldwin	pushl	%ebx
1074bc3d5698SJohn Baldwin	pushl	%esi
1075bc3d5698SJohn Baldwin	pushl	%edi
1076bc3d5698SJohn Baldwin	movl	20(%esp),%eax
1077bc3d5698SJohn Baldwin	movl	24(%esp),%edx
1078bc3d5698SJohn Baldwin	movl	28(%esp),%esi
1079bc3d5698SJohn Baldwin	movl	32(%esp),%ebx
1080bc3d5698SJohn Baldwin	call	.L012pic
1081bc3d5698SJohn Baldwin.L012pic:
1082bc3d5698SJohn Baldwin	popl	%ecx
1083bc3d5698SJohn Baldwin	leal	.Lbswap-.L012pic(%ecx),%ecx
1084bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm0
1085bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
1086bc3d5698SJohn Baldwin	movdqu	(%edx),%xmm2
1087bc3d5698SJohn Baldwin.byte	102,15,56,0,197
1088bc3d5698SJohn Baldwin	subl	$16,%ebx
1089bc3d5698SJohn Baldwin	jz	.L013odd_tail
1090bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm3
1091bc3d5698SJohn Baldwin	movdqu	16(%esi),%xmm6
1092bc3d5698SJohn Baldwin.byte	102,15,56,0,221
1093bc3d5698SJohn Baldwin.byte	102,15,56,0,245
1094bc3d5698SJohn Baldwin	movdqu	32(%edx),%xmm5
1095bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1096bc3d5698SJohn Baldwin	pshufd	$78,%xmm6,%xmm3
1097bc3d5698SJohn Baldwin	movdqa	%xmm6,%xmm7
1098bc3d5698SJohn Baldwin	pxor	%xmm6,%xmm3
1099bc3d5698SJohn Baldwin	leal	32(%esi),%esi
1100bc3d5698SJohn Baldwin.byte	102,15,58,68,242,0
1101bc3d5698SJohn Baldwin.byte	102,15,58,68,250,17
1102bc3d5698SJohn Baldwin.byte	102,15,58,68,221,0
1103bc3d5698SJohn Baldwin	movups	16(%edx),%xmm2
1104bc3d5698SJohn Baldwin	nop
1105bc3d5698SJohn Baldwin	subl	$32,%ebx
1106bc3d5698SJohn Baldwin	jbe	.L014even_tail
1107bc3d5698SJohn Baldwin	jmp	.L015mod_loop
1108bc3d5698SJohn Baldwin.align	32
1109bc3d5698SJohn Baldwin.L015mod_loop:
1110bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
1111bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
1112bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1113bc3d5698SJohn Baldwin	nop
1114bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
1115bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
1116bc3d5698SJohn Baldwin.byte	102,15,58,68,229,16
1117bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
1118bc3d5698SJohn Baldwin	xorps	%xmm6,%xmm0
1119bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
1120bc3d5698SJohn Baldwin	xorps	%xmm7,%xmm1
1121bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm7
1122bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1123bc3d5698SJohn Baldwin	movdqu	16(%esi),%xmm6
1124bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm3
1125bc3d5698SJohn Baldwin.byte	102,15,56,0,253
1126bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm4
1127bc3d5698SJohn Baldwin	movdqa	%xmm4,%xmm3
1128bc3d5698SJohn Baldwin	psrldq	$8,%xmm4
1129bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
1130bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1131bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1132bc3d5698SJohn Baldwin.byte	102,15,56,0,245
1133bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm1
1134bc3d5698SJohn Baldwin	movdqa	%xmm6,%xmm7
1135bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1136bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1137bc3d5698SJohn Baldwin	psllq	$5,%xmm0
1138bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1139bc3d5698SJohn Baldwin	psllq	$1,%xmm0
1140bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1141bc3d5698SJohn Baldwin.byte	102,15,58,68,242,0
1142bc3d5698SJohn Baldwin	movups	32(%edx),%xmm5
1143bc3d5698SJohn Baldwin	psllq	$57,%xmm0
1144bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1145bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
1146bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1147bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1148bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1149bc3d5698SJohn Baldwin	pshufd	$78,%xmm7,%xmm3
1150bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1151bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1152bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm3
1153bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1154bc3d5698SJohn Baldwin.byte	102,15,58,68,250,17
1155bc3d5698SJohn Baldwin	movups	16(%edx),%xmm2
1156bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1157bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
1158bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1159bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1160bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
1161bc3d5698SJohn Baldwin.byte	102,15,58,68,221,0
1162bc3d5698SJohn Baldwin	leal	32(%esi),%esi
1163bc3d5698SJohn Baldwin	subl	$32,%ebx
1164bc3d5698SJohn Baldwin	ja	.L015mod_loop
1165bc3d5698SJohn Baldwin.L014even_tail:
1166bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
1167bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
1168bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1169bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
1170bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
1171bc3d5698SJohn Baldwin.byte	102,15,58,68,229,16
1172bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
1173bc3d5698SJohn Baldwin	xorps	%xmm6,%xmm0
1174bc3d5698SJohn Baldwin	xorps	%xmm7,%xmm1
1175bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1176bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm3
1177bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm4
1178bc3d5698SJohn Baldwin	movdqa	%xmm4,%xmm3
1179bc3d5698SJohn Baldwin	psrldq	$8,%xmm4
1180bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
1181bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1182bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1183bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1184bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1185bc3d5698SJohn Baldwin	psllq	$5,%xmm0
1186bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1187bc3d5698SJohn Baldwin	psllq	$1,%xmm0
1188bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1189bc3d5698SJohn Baldwin	psllq	$57,%xmm0
1190bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1191bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
1192bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1193bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1194bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1195bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1196bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1197bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1198bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1199bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
1200bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1201bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1202bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
1203bc3d5698SJohn Baldwin	testl	%ebx,%ebx
1204bc3d5698SJohn Baldwin	jnz	.L016done
1205bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
1206bc3d5698SJohn Baldwin.L013odd_tail:
1207bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm3
1208bc3d5698SJohn Baldwin.byte	102,15,56,0,221
1209bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1210bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
1211bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
1212bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm4
1213bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1214bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm4
1215bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
1216bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
1217bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
1218bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
1219bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
1220bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
1221bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1222bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
1223bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1224bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1225bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1226bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1227bc3d5698SJohn Baldwin	psllq	$5,%xmm0
1228bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
1229bc3d5698SJohn Baldwin	psllq	$1,%xmm0
1230bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
1231bc3d5698SJohn Baldwin	psllq	$57,%xmm0
1232bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
1233bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
1234bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
1235bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1236bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
1237bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
1238bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1239bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
1240bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
1241bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
1242bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
1243bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
1244bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
1245bc3d5698SJohn Baldwin.L016done:
1246bc3d5698SJohn Baldwin.byte	102,15,56,0,197
1247bc3d5698SJohn Baldwin	movdqu	%xmm0,(%eax)
1248bc3d5698SJohn Baldwin	popl	%edi
1249bc3d5698SJohn Baldwin	popl	%esi
1250bc3d5698SJohn Baldwin	popl	%ebx
1251bc3d5698SJohn Baldwin	popl	%ebp
1252bc3d5698SJohn Baldwin	ret
1253bc3d5698SJohn Baldwin.size	gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
1254bc3d5698SJohn Baldwin.align	64
1255bc3d5698SJohn Baldwin.Lbswap:
1256bc3d5698SJohn Baldwin.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1257bc3d5698SJohn Baldwin.byte	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
1258bc3d5698SJohn Baldwin.align	64
1259bc3d5698SJohn Baldwin.Lrem_8bit:
1260bc3d5698SJohn Baldwin.value	0,450,900,582,1800,1738,1164,1358
1261bc3d5698SJohn Baldwin.value	3600,4050,3476,3158,2328,2266,2716,2910
1262bc3d5698SJohn Baldwin.value	7200,7650,8100,7782,6952,6890,6316,6510
1263bc3d5698SJohn Baldwin.value	4656,5106,4532,4214,5432,5370,5820,6014
1264bc3d5698SJohn Baldwin.value	14400,14722,15300,14854,16200,16010,15564,15630
1265bc3d5698SJohn Baldwin.value	13904,14226,13780,13334,12632,12442,13020,13086
1266bc3d5698SJohn Baldwin.value	9312,9634,10212,9766,9064,8874,8428,8494
1267bc3d5698SJohn Baldwin.value	10864,11186,10740,10294,11640,11450,12028,12094
1268bc3d5698SJohn Baldwin.value	28800,28994,29444,29382,30600,30282,29708,30158
1269bc3d5698SJohn Baldwin.value	32400,32594,32020,31958,31128,30810,31260,31710
1270bc3d5698SJohn Baldwin.value	27808,28002,28452,28390,27560,27242,26668,27118
1271bc3d5698SJohn Baldwin.value	25264,25458,24884,24822,26040,25722,26172,26622
1272bc3d5698SJohn Baldwin.value	18624,18690,19268,19078,20424,19978,19532,19854
1273bc3d5698SJohn Baldwin.value	18128,18194,17748,17558,16856,16410,16988,17310
1274bc3d5698SJohn Baldwin.value	21728,21794,22372,22182,21480,21034,20588,20910
1275bc3d5698SJohn Baldwin.value	23280,23346,22900,22710,24056,23610,24188,24510
1276bc3d5698SJohn Baldwin.value	57600,57538,57988,58182,58888,59338,58764,58446
1277bc3d5698SJohn Baldwin.value	61200,61138,60564,60758,59416,59866,60316,59998
1278bc3d5698SJohn Baldwin.value	64800,64738,65188,65382,64040,64490,63916,63598
1279bc3d5698SJohn Baldwin.value	62256,62194,61620,61814,62520,62970,63420,63102
1280bc3d5698SJohn Baldwin.value	55616,55426,56004,56070,56904,57226,56780,56334
1281bc3d5698SJohn Baldwin.value	55120,54930,54484,54550,53336,53658,54236,53790
1282bc3d5698SJohn Baldwin.value	50528,50338,50916,50982,49768,50090,49644,49198
1283bc3d5698SJohn Baldwin.value	52080,51890,51444,51510,52344,52666,53244,52798
1284bc3d5698SJohn Baldwin.value	37248,36930,37380,37830,38536,38730,38156,38094
1285bc3d5698SJohn Baldwin.value	40848,40530,39956,40406,39064,39258,39708,39646
1286bc3d5698SJohn Baldwin.value	36256,35938,36388,36838,35496,35690,35116,35054
1287bc3d5698SJohn Baldwin.value	33712,33394,32820,33270,33976,34170,34620,34558
1288bc3d5698SJohn Baldwin.value	43456,43010,43588,43910,44744,44810,44364,44174
1289bc3d5698SJohn Baldwin.value	42960,42514,42068,42390,41176,41242,41820,41630
1290bc3d5698SJohn Baldwin.value	46560,46114,46692,47014,45800,45866,45420,45230
1291bc3d5698SJohn Baldwin.value	48112,47666,47220,47542,48376,48442,49020,48830
1292bc3d5698SJohn Baldwin.align	64
1293bc3d5698SJohn Baldwin.Lrem_4bit:
1294bc3d5698SJohn Baldwin.long	0,0,0,471859200,0,943718400,0,610271232
1295bc3d5698SJohn Baldwin.long	0,1887436800,0,1822425088,0,1220542464,0,1423966208
1296bc3d5698SJohn Baldwin.long	0,3774873600,0,4246732800,0,3644850176,0,3311403008
1297bc3d5698SJohn Baldwin.long	0,2441084928,0,2376073216,0,2847932416,0,3051356160
1298bc3d5698SJohn Baldwin.byte	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
1299bc3d5698SJohn Baldwin.byte	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
1300bc3d5698SJohn Baldwin.byte	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
1301bc3d5698SJohn Baldwin.byte	0
1302*c0855eaaSJohn Baldwin
1303*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
1304*c0855eaaSJohn Baldwin	.p2align 2
1305*c0855eaaSJohn Baldwin	.long 1f - 0f
1306*c0855eaaSJohn Baldwin	.long 4f - 1f
1307*c0855eaaSJohn Baldwin	.long 5
1308*c0855eaaSJohn Baldwin0:
1309*c0855eaaSJohn Baldwin	.asciz "GNU"
1310*c0855eaaSJohn Baldwin1:
1311*c0855eaaSJohn Baldwin	.p2align 2
1312*c0855eaaSJohn Baldwin	.long 0xc0000002
1313*c0855eaaSJohn Baldwin	.long 3f - 2f
1314*c0855eaaSJohn Baldwin2:
1315*c0855eaaSJohn Baldwin	.long 3
1316*c0855eaaSJohn Baldwin3:
1317*c0855eaaSJohn Baldwin	.p2align 2
1318*c0855eaaSJohn Baldwin4:
1319bc3d5698SJohn Baldwin#else
1320bc3d5698SJohn Baldwin.text
1321bc3d5698SJohn Baldwin.globl	gcm_gmult_4bit_x86
1322bc3d5698SJohn Baldwin.type	gcm_gmult_4bit_x86,@function
1323bc3d5698SJohn Baldwin.align	16
1324bc3d5698SJohn Baldwingcm_gmult_4bit_x86:
1325bc3d5698SJohn Baldwin.L_gcm_gmult_4bit_x86_begin:
1326*c0855eaaSJohn Baldwin	#ifdef __CET__
1327*c0855eaaSJohn Baldwin
1328*c0855eaaSJohn Baldwin.byte	243,15,30,251
1329*c0855eaaSJohn Baldwin	#endif
1330*c0855eaaSJohn Baldwin
1331bc3d5698SJohn Baldwin	pushl	%ebp
1332bc3d5698SJohn Baldwin	pushl	%ebx
1333bc3d5698SJohn Baldwin	pushl	%esi
1334bc3d5698SJohn Baldwin	pushl	%edi
1335bc3d5698SJohn Baldwin	subl	$84,%esp
1336bc3d5698SJohn Baldwin	movl	104(%esp),%edi
1337bc3d5698SJohn Baldwin	movl	108(%esp),%esi
1338bc3d5698SJohn Baldwin	movl	(%edi),%ebp
1339bc3d5698SJohn Baldwin	movl	4(%edi),%edx
1340bc3d5698SJohn Baldwin	movl	8(%edi),%ecx
1341bc3d5698SJohn Baldwin	movl	12(%edi),%ebx
1342bc3d5698SJohn Baldwin	movl	$0,16(%esp)
1343bc3d5698SJohn Baldwin	movl	$471859200,20(%esp)
1344bc3d5698SJohn Baldwin	movl	$943718400,24(%esp)
1345bc3d5698SJohn Baldwin	movl	$610271232,28(%esp)
1346bc3d5698SJohn Baldwin	movl	$1887436800,32(%esp)
1347bc3d5698SJohn Baldwin	movl	$1822425088,36(%esp)
1348bc3d5698SJohn Baldwin	movl	$1220542464,40(%esp)
1349bc3d5698SJohn Baldwin	movl	$1423966208,44(%esp)
1350bc3d5698SJohn Baldwin	movl	$3774873600,48(%esp)
1351bc3d5698SJohn Baldwin	movl	$4246732800,52(%esp)
1352bc3d5698SJohn Baldwin	movl	$3644850176,56(%esp)
1353bc3d5698SJohn Baldwin	movl	$3311403008,60(%esp)
1354bc3d5698SJohn Baldwin	movl	$2441084928,64(%esp)
1355bc3d5698SJohn Baldwin	movl	$2376073216,68(%esp)
1356bc3d5698SJohn Baldwin	movl	$2847932416,72(%esp)
1357bc3d5698SJohn Baldwin	movl	$3051356160,76(%esp)
1358bc3d5698SJohn Baldwin	movl	%ebp,(%esp)
1359bc3d5698SJohn Baldwin	movl	%edx,4(%esp)
1360bc3d5698SJohn Baldwin	movl	%ecx,8(%esp)
1361bc3d5698SJohn Baldwin	movl	%ebx,12(%esp)
1362bc3d5698SJohn Baldwin	shrl	$20,%ebx
1363bc3d5698SJohn Baldwin	andl	$240,%ebx
1364bc3d5698SJohn Baldwin	movl	4(%esi,%ebx,1),%ebp
1365bc3d5698SJohn Baldwin	movl	(%esi,%ebx,1),%edx
1366bc3d5698SJohn Baldwin	movl	12(%esi,%ebx,1),%ecx
1367bc3d5698SJohn Baldwin	movl	8(%esi,%ebx,1),%ebx
1368bc3d5698SJohn Baldwin	xorl	%eax,%eax
1369bc3d5698SJohn Baldwin	movl	$15,%edi
1370bc3d5698SJohn Baldwin	jmp	.L000x86_loop
1371bc3d5698SJohn Baldwin.align	16
1372bc3d5698SJohn Baldwin.L000x86_loop:
1373bc3d5698SJohn Baldwin	movb	%bl,%al
1374bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
1375bc3d5698SJohn Baldwin	andb	$15,%al
1376bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
1377bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
1378bc3d5698SJohn Baldwin	shrl	$4,%ebp
1379bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
1380bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
1381bc3d5698SJohn Baldwin	andb	$240,%al
1382bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
1383bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
1384bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
1385bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
1386bc3d5698SJohn Baldwin	decl	%edi
1387bc3d5698SJohn Baldwin	js	.L001x86_break
1388bc3d5698SJohn Baldwin	movb	%bl,%al
1389bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
1390bc3d5698SJohn Baldwin	andb	$15,%al
1391bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
1392bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
1393bc3d5698SJohn Baldwin	shrl	$4,%ebp
1394bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
1395bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
1396bc3d5698SJohn Baldwin	shlb	$4,%al
1397bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
1398bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
1399bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
1400bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
1401bc3d5698SJohn Baldwin	jmp	.L000x86_loop
1402bc3d5698SJohn Baldwin.align	16
1403bc3d5698SJohn Baldwin.L001x86_break:
1404bc3d5698SJohn Baldwin	bswap	%ebx
1405bc3d5698SJohn Baldwin	bswap	%ecx
1406bc3d5698SJohn Baldwin	bswap	%edx
1407bc3d5698SJohn Baldwin	bswap	%ebp
1408bc3d5698SJohn Baldwin	movl	104(%esp),%edi
1409bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
1410bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
1411bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
1412bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
1413bc3d5698SJohn Baldwin	addl	$84,%esp
1414bc3d5698SJohn Baldwin	popl	%edi
1415bc3d5698SJohn Baldwin	popl	%esi
1416bc3d5698SJohn Baldwin	popl	%ebx
1417bc3d5698SJohn Baldwin	popl	%ebp
1418bc3d5698SJohn Baldwin	ret
1419bc3d5698SJohn Baldwin.size	gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
1420bc3d5698SJohn Baldwin.globl	gcm_ghash_4bit_x86
1421bc3d5698SJohn Baldwin.type	gcm_ghash_4bit_x86,@function
1422bc3d5698SJohn Baldwin.align	16
1423bc3d5698SJohn Baldwingcm_ghash_4bit_x86:
1424bc3d5698SJohn Baldwin.L_gcm_ghash_4bit_x86_begin:
1425*c0855eaaSJohn Baldwin	#ifdef __CET__
1426*c0855eaaSJohn Baldwin
1427*c0855eaaSJohn Baldwin.byte	243,15,30,251
1428*c0855eaaSJohn Baldwin	#endif
1429*c0855eaaSJohn Baldwin
1430bc3d5698SJohn Baldwin	pushl	%ebp
1431bc3d5698SJohn Baldwin	pushl	%ebx
1432bc3d5698SJohn Baldwin	pushl	%esi
1433bc3d5698SJohn Baldwin	pushl	%edi
1434bc3d5698SJohn Baldwin	subl	$84,%esp
1435bc3d5698SJohn Baldwin	movl	104(%esp),%ebx
1436bc3d5698SJohn Baldwin	movl	108(%esp),%esi
1437bc3d5698SJohn Baldwin	movl	112(%esp),%edi
1438bc3d5698SJohn Baldwin	movl	116(%esp),%ecx
1439bc3d5698SJohn Baldwin	addl	%edi,%ecx
1440bc3d5698SJohn Baldwin	movl	%ecx,116(%esp)
1441bc3d5698SJohn Baldwin	movl	(%ebx),%ebp
1442bc3d5698SJohn Baldwin	movl	4(%ebx),%edx
1443bc3d5698SJohn Baldwin	movl	8(%ebx),%ecx
1444bc3d5698SJohn Baldwin	movl	12(%ebx),%ebx
1445bc3d5698SJohn Baldwin	movl	$0,16(%esp)
1446bc3d5698SJohn Baldwin	movl	$471859200,20(%esp)
1447bc3d5698SJohn Baldwin	movl	$943718400,24(%esp)
1448bc3d5698SJohn Baldwin	movl	$610271232,28(%esp)
1449bc3d5698SJohn Baldwin	movl	$1887436800,32(%esp)
1450bc3d5698SJohn Baldwin	movl	$1822425088,36(%esp)
1451bc3d5698SJohn Baldwin	movl	$1220542464,40(%esp)
1452bc3d5698SJohn Baldwin	movl	$1423966208,44(%esp)
1453bc3d5698SJohn Baldwin	movl	$3774873600,48(%esp)
1454bc3d5698SJohn Baldwin	movl	$4246732800,52(%esp)
1455bc3d5698SJohn Baldwin	movl	$3644850176,56(%esp)
1456bc3d5698SJohn Baldwin	movl	$3311403008,60(%esp)
1457bc3d5698SJohn Baldwin	movl	$2441084928,64(%esp)
1458bc3d5698SJohn Baldwin	movl	$2376073216,68(%esp)
1459bc3d5698SJohn Baldwin	movl	$2847932416,72(%esp)
1460bc3d5698SJohn Baldwin	movl	$3051356160,76(%esp)
1461bc3d5698SJohn Baldwin.align	16
1462bc3d5698SJohn Baldwin.L002x86_outer_loop:
1463bc3d5698SJohn Baldwin	xorl	12(%edi),%ebx
1464bc3d5698SJohn Baldwin	xorl	8(%edi),%ecx
1465bc3d5698SJohn Baldwin	xorl	4(%edi),%edx
1466bc3d5698SJohn Baldwin	xorl	(%edi),%ebp
1467bc3d5698SJohn Baldwin	movl	%ebx,12(%esp)
1468bc3d5698SJohn Baldwin	movl	%ecx,8(%esp)
1469bc3d5698SJohn Baldwin	movl	%edx,4(%esp)
1470bc3d5698SJohn Baldwin	movl	%ebp,(%esp)
1471bc3d5698SJohn Baldwin	shrl	$20,%ebx
1472bc3d5698SJohn Baldwin	andl	$240,%ebx
1473bc3d5698SJohn Baldwin	movl	4(%esi,%ebx,1),%ebp
1474bc3d5698SJohn Baldwin	movl	(%esi,%ebx,1),%edx
1475bc3d5698SJohn Baldwin	movl	12(%esi,%ebx,1),%ecx
1476bc3d5698SJohn Baldwin	movl	8(%esi,%ebx,1),%ebx
1477bc3d5698SJohn Baldwin	xorl	%eax,%eax
1478bc3d5698SJohn Baldwin	movl	$15,%edi
1479bc3d5698SJohn Baldwin	jmp	.L003x86_loop
1480bc3d5698SJohn Baldwin.align	16
1481bc3d5698SJohn Baldwin.L003x86_loop:
1482bc3d5698SJohn Baldwin	movb	%bl,%al
1483bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
1484bc3d5698SJohn Baldwin	andb	$15,%al
1485bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
1486bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
1487bc3d5698SJohn Baldwin	shrl	$4,%ebp
1488bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
1489bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
1490bc3d5698SJohn Baldwin	andb	$240,%al
1491bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
1492bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
1493bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
1494bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
1495bc3d5698SJohn Baldwin	decl	%edi
1496bc3d5698SJohn Baldwin	js	.L004x86_break
1497bc3d5698SJohn Baldwin	movb	%bl,%al
1498bc3d5698SJohn Baldwin	shrdl	$4,%ecx,%ebx
1499bc3d5698SJohn Baldwin	andb	$15,%al
1500bc3d5698SJohn Baldwin	shrdl	$4,%edx,%ecx
1501bc3d5698SJohn Baldwin	shrdl	$4,%ebp,%edx
1502bc3d5698SJohn Baldwin	shrl	$4,%ebp
1503bc3d5698SJohn Baldwin	xorl	16(%esp,%eax,4),%ebp
1504bc3d5698SJohn Baldwin	movb	(%esp,%edi,1),%al
1505bc3d5698SJohn Baldwin	shlb	$4,%al
1506bc3d5698SJohn Baldwin	xorl	8(%esi,%eax,1),%ebx
1507bc3d5698SJohn Baldwin	xorl	12(%esi,%eax,1),%ecx
1508bc3d5698SJohn Baldwin	xorl	(%esi,%eax,1),%edx
1509bc3d5698SJohn Baldwin	xorl	4(%esi,%eax,1),%ebp
1510bc3d5698SJohn Baldwin	jmp	.L003x86_loop
1511bc3d5698SJohn Baldwin.align	16
1512bc3d5698SJohn Baldwin.L004x86_break:
1513bc3d5698SJohn Baldwin	bswap	%ebx
1514bc3d5698SJohn Baldwin	bswap	%ecx
1515bc3d5698SJohn Baldwin	bswap	%edx
1516bc3d5698SJohn Baldwin	bswap	%ebp
1517bc3d5698SJohn Baldwin	movl	112(%esp),%edi
1518bc3d5698SJohn Baldwin	leal	16(%edi),%edi
1519bc3d5698SJohn Baldwin	cmpl	116(%esp),%edi
1520bc3d5698SJohn Baldwin	movl	%edi,112(%esp)
1521bc3d5698SJohn Baldwin	jb	.L002x86_outer_loop
1522bc3d5698SJohn Baldwin	movl	104(%esp),%edi
1523bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
1524bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
1525bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
1526bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
1527bc3d5698SJohn Baldwin	addl	$84,%esp
1528bc3d5698SJohn Baldwin	popl	%edi
1529bc3d5698SJohn Baldwin	popl	%esi
1530bc3d5698SJohn Baldwin	popl	%ebx
1531bc3d5698SJohn Baldwin	popl	%ebp
1532bc3d5698SJohn Baldwin	ret
1533bc3d5698SJohn Baldwin.size	gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
1534bc3d5698SJohn Baldwin.globl	gcm_gmult_4bit_mmx
1535bc3d5698SJohn Baldwin.type	gcm_gmult_4bit_mmx,@function
1536bc3d5698SJohn Baldwin.align	16
1537bc3d5698SJohn Baldwingcm_gmult_4bit_mmx:
1538bc3d5698SJohn Baldwin.L_gcm_gmult_4bit_mmx_begin:
1539*c0855eaaSJohn Baldwin	#ifdef __CET__
1540*c0855eaaSJohn Baldwin
1541*c0855eaaSJohn Baldwin.byte	243,15,30,251
1542*c0855eaaSJohn Baldwin	#endif
1543*c0855eaaSJohn Baldwin
1544bc3d5698SJohn Baldwin	pushl	%ebp
1545bc3d5698SJohn Baldwin	pushl	%ebx
1546bc3d5698SJohn Baldwin	pushl	%esi
1547bc3d5698SJohn Baldwin	pushl	%edi
1548bc3d5698SJohn Baldwin	movl	20(%esp),%edi
1549bc3d5698SJohn Baldwin	movl	24(%esp),%esi
1550bc3d5698SJohn Baldwin	call	.L005pic_point
1551bc3d5698SJohn Baldwin.L005pic_point:
1552bc3d5698SJohn Baldwin	popl	%eax
1553bc3d5698SJohn Baldwin	leal	.Lrem_4bit-.L005pic_point(%eax),%eax
1554bc3d5698SJohn Baldwin	movzbl	15(%edi),%ebx
1555bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
1556bc3d5698SJohn Baldwin	movl	%ebx,%edx
1557bc3d5698SJohn Baldwin	movb	%dl,%cl
1558bc3d5698SJohn Baldwin	movl	$14,%ebp
1559bc3d5698SJohn Baldwin	shlb	$4,%cl
1560bc3d5698SJohn Baldwin	andl	$240,%edx
1561bc3d5698SJohn Baldwin	movq	8(%esi,%ecx,1),%mm0
1562bc3d5698SJohn Baldwin	movq	(%esi,%ecx,1),%mm1
1563bc3d5698SJohn Baldwin	movd	%mm0,%ebx
1564bc3d5698SJohn Baldwin	jmp	.L006mmx_loop
1565bc3d5698SJohn Baldwin.align	16
1566bc3d5698SJohn Baldwin.L006mmx_loop:
1567bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1568bc3d5698SJohn Baldwin	andl	$15,%ebx
1569bc3d5698SJohn Baldwin	movq	%mm1,%mm2
1570bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1571bc3d5698SJohn Baldwin	pxor	8(%esi,%edx,1),%mm0
1572bc3d5698SJohn Baldwin	movb	(%edi,%ebp,1),%cl
1573bc3d5698SJohn Baldwin	psllq	$60,%mm2
1574bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
1575bc3d5698SJohn Baldwin	decl	%ebp
1576bc3d5698SJohn Baldwin	movd	%mm0,%ebx
1577bc3d5698SJohn Baldwin	pxor	(%esi,%edx,1),%mm1
1578bc3d5698SJohn Baldwin	movl	%ecx,%edx
1579bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
1580bc3d5698SJohn Baldwin	js	.L007mmx_break
1581bc3d5698SJohn Baldwin	shlb	$4,%cl
1582bc3d5698SJohn Baldwin	andl	$15,%ebx
1583bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1584bc3d5698SJohn Baldwin	andl	$240,%edx
1585bc3d5698SJohn Baldwin	movq	%mm1,%mm2
1586bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1587bc3d5698SJohn Baldwin	pxor	8(%esi,%ecx,1),%mm0
1588bc3d5698SJohn Baldwin	psllq	$60,%mm2
1589bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
1590bc3d5698SJohn Baldwin	movd	%mm0,%ebx
1591bc3d5698SJohn Baldwin	pxor	(%esi,%ecx,1),%mm1
1592bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
1593bc3d5698SJohn Baldwin	jmp	.L006mmx_loop
1594bc3d5698SJohn Baldwin.align	16
1595bc3d5698SJohn Baldwin.L007mmx_break:
1596bc3d5698SJohn Baldwin	shlb	$4,%cl
1597bc3d5698SJohn Baldwin	andl	$15,%ebx
1598bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1599bc3d5698SJohn Baldwin	andl	$240,%edx
1600bc3d5698SJohn Baldwin	movq	%mm1,%mm2
1601bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1602bc3d5698SJohn Baldwin	pxor	8(%esi,%ecx,1),%mm0
1603bc3d5698SJohn Baldwin	psllq	$60,%mm2
1604bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
1605bc3d5698SJohn Baldwin	movd	%mm0,%ebx
1606bc3d5698SJohn Baldwin	pxor	(%esi,%ecx,1),%mm1
1607bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
1608bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1609bc3d5698SJohn Baldwin	andl	$15,%ebx
1610bc3d5698SJohn Baldwin	movq	%mm1,%mm2
1611bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1612bc3d5698SJohn Baldwin	pxor	8(%esi,%edx,1),%mm0
1613bc3d5698SJohn Baldwin	psllq	$60,%mm2
1614bc3d5698SJohn Baldwin	pxor	(%eax,%ebx,8),%mm1
1615bc3d5698SJohn Baldwin	movd	%mm0,%ebx
1616bc3d5698SJohn Baldwin	pxor	(%esi,%edx,1),%mm1
1617bc3d5698SJohn Baldwin	pxor	%mm2,%mm0
1618bc3d5698SJohn Baldwin	psrlq	$32,%mm0
1619bc3d5698SJohn Baldwin	movd	%mm1,%edx
1620bc3d5698SJohn Baldwin	psrlq	$32,%mm1
1621bc3d5698SJohn Baldwin	movd	%mm0,%ecx
1622bc3d5698SJohn Baldwin	movd	%mm1,%ebp
1623bc3d5698SJohn Baldwin	bswap	%ebx
1624bc3d5698SJohn Baldwin	bswap	%edx
1625bc3d5698SJohn Baldwin	bswap	%ecx
1626bc3d5698SJohn Baldwin	bswap	%ebp
1627bc3d5698SJohn Baldwin	emms
1628bc3d5698SJohn Baldwin	movl	%ebx,12(%edi)
1629bc3d5698SJohn Baldwin	movl	%edx,4(%edi)
1630bc3d5698SJohn Baldwin	movl	%ecx,8(%edi)
1631bc3d5698SJohn Baldwin	movl	%ebp,(%edi)
1632bc3d5698SJohn Baldwin	popl	%edi
1633bc3d5698SJohn Baldwin	popl	%esi
1634bc3d5698SJohn Baldwin	popl	%ebx
1635bc3d5698SJohn Baldwin	popl	%ebp
1636bc3d5698SJohn Baldwin	ret
1637bc3d5698SJohn Baldwin.size	gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
1638bc3d5698SJohn Baldwin.globl	gcm_ghash_4bit_mmx
1639bc3d5698SJohn Baldwin.type	gcm_ghash_4bit_mmx,@function
1640bc3d5698SJohn Baldwin.align	16
1641bc3d5698SJohn Baldwingcm_ghash_4bit_mmx:
1642bc3d5698SJohn Baldwin.L_gcm_ghash_4bit_mmx_begin:
1643*c0855eaaSJohn Baldwin	#ifdef __CET__
1644*c0855eaaSJohn Baldwin
1645*c0855eaaSJohn Baldwin.byte	243,15,30,251
1646*c0855eaaSJohn Baldwin	#endif
1647*c0855eaaSJohn Baldwin
1648bc3d5698SJohn Baldwin	pushl	%ebp
1649bc3d5698SJohn Baldwin	pushl	%ebx
1650bc3d5698SJohn Baldwin	pushl	%esi
1651bc3d5698SJohn Baldwin	pushl	%edi
1652bc3d5698SJohn Baldwin	movl	20(%esp),%eax
1653bc3d5698SJohn Baldwin	movl	24(%esp),%ebx
1654bc3d5698SJohn Baldwin	movl	28(%esp),%ecx
1655bc3d5698SJohn Baldwin	movl	32(%esp),%edx
1656bc3d5698SJohn Baldwin	movl	%esp,%ebp
1657bc3d5698SJohn Baldwin	call	.L008pic_point
1658bc3d5698SJohn Baldwin.L008pic_point:
1659bc3d5698SJohn Baldwin	popl	%esi
1660bc3d5698SJohn Baldwin	leal	.Lrem_8bit-.L008pic_point(%esi),%esi
1661bc3d5698SJohn Baldwin	subl	$544,%esp
1662bc3d5698SJohn Baldwin	andl	$-64,%esp
1663bc3d5698SJohn Baldwin	subl	$16,%esp
1664bc3d5698SJohn Baldwin	addl	%ecx,%edx
1665bc3d5698SJohn Baldwin	movl	%eax,544(%esp)
1666bc3d5698SJohn Baldwin	movl	%edx,552(%esp)
1667bc3d5698SJohn Baldwin	movl	%ebp,556(%esp)
1668bc3d5698SJohn Baldwin	addl	$128,%ebx
1669bc3d5698SJohn Baldwin	leal	144(%esp),%edi
1670bc3d5698SJohn Baldwin	leal	400(%esp),%ebp
1671bc3d5698SJohn Baldwin	movl	-120(%ebx),%edx
1672bc3d5698SJohn Baldwin	movq	-120(%ebx),%mm0
1673bc3d5698SJohn Baldwin	movq	-128(%ebx),%mm3
1674bc3d5698SJohn Baldwin	shll	$4,%edx
1675bc3d5698SJohn Baldwin	movb	%dl,(%esp)
1676bc3d5698SJohn Baldwin	movl	-104(%ebx),%edx
1677bc3d5698SJohn Baldwin	movq	-104(%ebx),%mm2
1678bc3d5698SJohn Baldwin	movq	-112(%ebx),%mm5
1679bc3d5698SJohn Baldwin	movq	%mm0,-128(%edi)
1680bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1681bc3d5698SJohn Baldwin	movq	%mm3,(%edi)
1682bc3d5698SJohn Baldwin	movq	%mm3,%mm7
1683bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1684bc3d5698SJohn Baldwin	shll	$4,%edx
1685bc3d5698SJohn Baldwin	movb	%dl,1(%esp)
1686bc3d5698SJohn Baldwin	movl	-88(%ebx),%edx
1687bc3d5698SJohn Baldwin	movq	-88(%ebx),%mm1
1688bc3d5698SJohn Baldwin	psllq	$60,%mm7
1689bc3d5698SJohn Baldwin	movq	-96(%ebx),%mm4
1690bc3d5698SJohn Baldwin	por	%mm7,%mm0
1691bc3d5698SJohn Baldwin	movq	%mm2,-120(%edi)
1692bc3d5698SJohn Baldwin	psrlq	$4,%mm2
1693bc3d5698SJohn Baldwin	movq	%mm5,8(%edi)
1694bc3d5698SJohn Baldwin	movq	%mm5,%mm6
1695bc3d5698SJohn Baldwin	movq	%mm0,-128(%ebp)
1696bc3d5698SJohn Baldwin	psrlq	$4,%mm5
1697bc3d5698SJohn Baldwin	movq	%mm3,(%ebp)
1698bc3d5698SJohn Baldwin	shll	$4,%edx
1699bc3d5698SJohn Baldwin	movb	%dl,2(%esp)
1700bc3d5698SJohn Baldwin	movl	-72(%ebx),%edx
1701bc3d5698SJohn Baldwin	movq	-72(%ebx),%mm0
1702bc3d5698SJohn Baldwin	psllq	$60,%mm6
1703bc3d5698SJohn Baldwin	movq	-80(%ebx),%mm3
1704bc3d5698SJohn Baldwin	por	%mm6,%mm2
1705bc3d5698SJohn Baldwin	movq	%mm1,-112(%edi)
1706bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1707bc3d5698SJohn Baldwin	movq	%mm4,16(%edi)
1708bc3d5698SJohn Baldwin	movq	%mm4,%mm7
1709bc3d5698SJohn Baldwin	movq	%mm2,-120(%ebp)
1710bc3d5698SJohn Baldwin	psrlq	$4,%mm4
1711bc3d5698SJohn Baldwin	movq	%mm5,8(%ebp)
1712bc3d5698SJohn Baldwin	shll	$4,%edx
1713bc3d5698SJohn Baldwin	movb	%dl,3(%esp)
1714bc3d5698SJohn Baldwin	movl	-56(%ebx),%edx
1715bc3d5698SJohn Baldwin	movq	-56(%ebx),%mm2
1716bc3d5698SJohn Baldwin	psllq	$60,%mm7
1717bc3d5698SJohn Baldwin	movq	-64(%ebx),%mm5
1718bc3d5698SJohn Baldwin	por	%mm7,%mm1
1719bc3d5698SJohn Baldwin	movq	%mm0,-104(%edi)
1720bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1721bc3d5698SJohn Baldwin	movq	%mm3,24(%edi)
1722bc3d5698SJohn Baldwin	movq	%mm3,%mm6
1723bc3d5698SJohn Baldwin	movq	%mm1,-112(%ebp)
1724bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1725bc3d5698SJohn Baldwin	movq	%mm4,16(%ebp)
1726bc3d5698SJohn Baldwin	shll	$4,%edx
1727bc3d5698SJohn Baldwin	movb	%dl,4(%esp)
1728bc3d5698SJohn Baldwin	movl	-40(%ebx),%edx
1729bc3d5698SJohn Baldwin	movq	-40(%ebx),%mm1
1730bc3d5698SJohn Baldwin	psllq	$60,%mm6
1731bc3d5698SJohn Baldwin	movq	-48(%ebx),%mm4
1732bc3d5698SJohn Baldwin	por	%mm6,%mm0
1733bc3d5698SJohn Baldwin	movq	%mm2,-96(%edi)
1734bc3d5698SJohn Baldwin	psrlq	$4,%mm2
1735bc3d5698SJohn Baldwin	movq	%mm5,32(%edi)
1736bc3d5698SJohn Baldwin	movq	%mm5,%mm7
1737bc3d5698SJohn Baldwin	movq	%mm0,-104(%ebp)
1738bc3d5698SJohn Baldwin	psrlq	$4,%mm5
1739bc3d5698SJohn Baldwin	movq	%mm3,24(%ebp)
1740bc3d5698SJohn Baldwin	shll	$4,%edx
1741bc3d5698SJohn Baldwin	movb	%dl,5(%esp)
1742bc3d5698SJohn Baldwin	movl	-24(%ebx),%edx
1743bc3d5698SJohn Baldwin	movq	-24(%ebx),%mm0
1744bc3d5698SJohn Baldwin	psllq	$60,%mm7
1745bc3d5698SJohn Baldwin	movq	-32(%ebx),%mm3
1746bc3d5698SJohn Baldwin	por	%mm7,%mm2
1747bc3d5698SJohn Baldwin	movq	%mm1,-88(%edi)
1748bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1749bc3d5698SJohn Baldwin	movq	%mm4,40(%edi)
1750bc3d5698SJohn Baldwin	movq	%mm4,%mm6
1751bc3d5698SJohn Baldwin	movq	%mm2,-96(%ebp)
1752bc3d5698SJohn Baldwin	psrlq	$4,%mm4
1753bc3d5698SJohn Baldwin	movq	%mm5,32(%ebp)
1754bc3d5698SJohn Baldwin	shll	$4,%edx
1755bc3d5698SJohn Baldwin	movb	%dl,6(%esp)
1756bc3d5698SJohn Baldwin	movl	-8(%ebx),%edx
1757bc3d5698SJohn Baldwin	movq	-8(%ebx),%mm2
1758bc3d5698SJohn Baldwin	psllq	$60,%mm6
1759bc3d5698SJohn Baldwin	movq	-16(%ebx),%mm5
1760bc3d5698SJohn Baldwin	por	%mm6,%mm1
1761bc3d5698SJohn Baldwin	movq	%mm0,-80(%edi)
1762bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1763bc3d5698SJohn Baldwin	movq	%mm3,48(%edi)
1764bc3d5698SJohn Baldwin	movq	%mm3,%mm7
1765bc3d5698SJohn Baldwin	movq	%mm1,-88(%ebp)
1766bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1767bc3d5698SJohn Baldwin	movq	%mm4,40(%ebp)
1768bc3d5698SJohn Baldwin	shll	$4,%edx
1769bc3d5698SJohn Baldwin	movb	%dl,7(%esp)
1770bc3d5698SJohn Baldwin	movl	8(%ebx),%edx
1771bc3d5698SJohn Baldwin	movq	8(%ebx),%mm1
1772bc3d5698SJohn Baldwin	psllq	$60,%mm7
1773bc3d5698SJohn Baldwin	movq	(%ebx),%mm4
1774bc3d5698SJohn Baldwin	por	%mm7,%mm0
1775bc3d5698SJohn Baldwin	movq	%mm2,-72(%edi)
1776bc3d5698SJohn Baldwin	psrlq	$4,%mm2
1777bc3d5698SJohn Baldwin	movq	%mm5,56(%edi)
1778bc3d5698SJohn Baldwin	movq	%mm5,%mm6
1779bc3d5698SJohn Baldwin	movq	%mm0,-80(%ebp)
1780bc3d5698SJohn Baldwin	psrlq	$4,%mm5
1781bc3d5698SJohn Baldwin	movq	%mm3,48(%ebp)
1782bc3d5698SJohn Baldwin	shll	$4,%edx
1783bc3d5698SJohn Baldwin	movb	%dl,8(%esp)
1784bc3d5698SJohn Baldwin	movl	24(%ebx),%edx
1785bc3d5698SJohn Baldwin	movq	24(%ebx),%mm0
1786bc3d5698SJohn Baldwin	psllq	$60,%mm6
1787bc3d5698SJohn Baldwin	movq	16(%ebx),%mm3
1788bc3d5698SJohn Baldwin	por	%mm6,%mm2
1789bc3d5698SJohn Baldwin	movq	%mm1,-64(%edi)
1790bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1791bc3d5698SJohn Baldwin	movq	%mm4,64(%edi)
1792bc3d5698SJohn Baldwin	movq	%mm4,%mm7
1793bc3d5698SJohn Baldwin	movq	%mm2,-72(%ebp)
1794bc3d5698SJohn Baldwin	psrlq	$4,%mm4
1795bc3d5698SJohn Baldwin	movq	%mm5,56(%ebp)
1796bc3d5698SJohn Baldwin	shll	$4,%edx
1797bc3d5698SJohn Baldwin	movb	%dl,9(%esp)
1798bc3d5698SJohn Baldwin	movl	40(%ebx),%edx
1799bc3d5698SJohn Baldwin	movq	40(%ebx),%mm2
1800bc3d5698SJohn Baldwin	psllq	$60,%mm7
1801bc3d5698SJohn Baldwin	movq	32(%ebx),%mm5
1802bc3d5698SJohn Baldwin	por	%mm7,%mm1
1803bc3d5698SJohn Baldwin	movq	%mm0,-56(%edi)
1804bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1805bc3d5698SJohn Baldwin	movq	%mm3,72(%edi)
1806bc3d5698SJohn Baldwin	movq	%mm3,%mm6
1807bc3d5698SJohn Baldwin	movq	%mm1,-64(%ebp)
1808bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1809bc3d5698SJohn Baldwin	movq	%mm4,64(%ebp)
1810bc3d5698SJohn Baldwin	shll	$4,%edx
1811bc3d5698SJohn Baldwin	movb	%dl,10(%esp)
1812bc3d5698SJohn Baldwin	movl	56(%ebx),%edx
1813bc3d5698SJohn Baldwin	movq	56(%ebx),%mm1
1814bc3d5698SJohn Baldwin	psllq	$60,%mm6
1815bc3d5698SJohn Baldwin	movq	48(%ebx),%mm4
1816bc3d5698SJohn Baldwin	por	%mm6,%mm0
1817bc3d5698SJohn Baldwin	movq	%mm2,-48(%edi)
1818bc3d5698SJohn Baldwin	psrlq	$4,%mm2
1819bc3d5698SJohn Baldwin	movq	%mm5,80(%edi)
1820bc3d5698SJohn Baldwin	movq	%mm5,%mm7
1821bc3d5698SJohn Baldwin	movq	%mm0,-56(%ebp)
1822bc3d5698SJohn Baldwin	psrlq	$4,%mm5
1823bc3d5698SJohn Baldwin	movq	%mm3,72(%ebp)
1824bc3d5698SJohn Baldwin	shll	$4,%edx
1825bc3d5698SJohn Baldwin	movb	%dl,11(%esp)
1826bc3d5698SJohn Baldwin	movl	72(%ebx),%edx
1827bc3d5698SJohn Baldwin	movq	72(%ebx),%mm0
1828bc3d5698SJohn Baldwin	psllq	$60,%mm7
1829bc3d5698SJohn Baldwin	movq	64(%ebx),%mm3
1830bc3d5698SJohn Baldwin	por	%mm7,%mm2
1831bc3d5698SJohn Baldwin	movq	%mm1,-40(%edi)
1832bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1833bc3d5698SJohn Baldwin	movq	%mm4,88(%edi)
1834bc3d5698SJohn Baldwin	movq	%mm4,%mm6
1835bc3d5698SJohn Baldwin	movq	%mm2,-48(%ebp)
1836bc3d5698SJohn Baldwin	psrlq	$4,%mm4
1837bc3d5698SJohn Baldwin	movq	%mm5,80(%ebp)
1838bc3d5698SJohn Baldwin	shll	$4,%edx
1839bc3d5698SJohn Baldwin	movb	%dl,12(%esp)
1840bc3d5698SJohn Baldwin	movl	88(%ebx),%edx
1841bc3d5698SJohn Baldwin	movq	88(%ebx),%mm2
1842bc3d5698SJohn Baldwin	psllq	$60,%mm6
1843bc3d5698SJohn Baldwin	movq	80(%ebx),%mm5
1844bc3d5698SJohn Baldwin	por	%mm6,%mm1
1845bc3d5698SJohn Baldwin	movq	%mm0,-32(%edi)
1846bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1847bc3d5698SJohn Baldwin	movq	%mm3,96(%edi)
1848bc3d5698SJohn Baldwin	movq	%mm3,%mm7
1849bc3d5698SJohn Baldwin	movq	%mm1,-40(%ebp)
1850bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1851bc3d5698SJohn Baldwin	movq	%mm4,88(%ebp)
1852bc3d5698SJohn Baldwin	shll	$4,%edx
1853bc3d5698SJohn Baldwin	movb	%dl,13(%esp)
1854bc3d5698SJohn Baldwin	movl	104(%ebx),%edx
1855bc3d5698SJohn Baldwin	movq	104(%ebx),%mm1
1856bc3d5698SJohn Baldwin	psllq	$60,%mm7
1857bc3d5698SJohn Baldwin	movq	96(%ebx),%mm4
1858bc3d5698SJohn Baldwin	por	%mm7,%mm0
1859bc3d5698SJohn Baldwin	movq	%mm2,-24(%edi)
1860bc3d5698SJohn Baldwin	psrlq	$4,%mm2
1861bc3d5698SJohn Baldwin	movq	%mm5,104(%edi)
1862bc3d5698SJohn Baldwin	movq	%mm5,%mm6
1863bc3d5698SJohn Baldwin	movq	%mm0,-32(%ebp)
1864bc3d5698SJohn Baldwin	psrlq	$4,%mm5
1865bc3d5698SJohn Baldwin	movq	%mm3,96(%ebp)
1866bc3d5698SJohn Baldwin	shll	$4,%edx
1867bc3d5698SJohn Baldwin	movb	%dl,14(%esp)
1868bc3d5698SJohn Baldwin	movl	120(%ebx),%edx
1869bc3d5698SJohn Baldwin	movq	120(%ebx),%mm0
1870bc3d5698SJohn Baldwin	psllq	$60,%mm6
1871bc3d5698SJohn Baldwin	movq	112(%ebx),%mm3
1872bc3d5698SJohn Baldwin	por	%mm6,%mm2
1873bc3d5698SJohn Baldwin	movq	%mm1,-16(%edi)
1874bc3d5698SJohn Baldwin	psrlq	$4,%mm1
1875bc3d5698SJohn Baldwin	movq	%mm4,112(%edi)
1876bc3d5698SJohn Baldwin	movq	%mm4,%mm7
1877bc3d5698SJohn Baldwin	movq	%mm2,-24(%ebp)
1878bc3d5698SJohn Baldwin	psrlq	$4,%mm4
1879bc3d5698SJohn Baldwin	movq	%mm5,104(%ebp)
1880bc3d5698SJohn Baldwin	shll	$4,%edx
1881bc3d5698SJohn Baldwin	movb	%dl,15(%esp)
1882bc3d5698SJohn Baldwin	psllq	$60,%mm7
1883bc3d5698SJohn Baldwin	por	%mm7,%mm1
1884bc3d5698SJohn Baldwin	movq	%mm0,-8(%edi)
1885bc3d5698SJohn Baldwin	psrlq	$4,%mm0
1886bc3d5698SJohn Baldwin	movq	%mm3,120(%edi)
1887bc3d5698SJohn Baldwin	movq	%mm3,%mm6
1888bc3d5698SJohn Baldwin	movq	%mm1,-16(%ebp)
1889bc3d5698SJohn Baldwin	psrlq	$4,%mm3
1890bc3d5698SJohn Baldwin	movq	%mm4,112(%ebp)
1891bc3d5698SJohn Baldwin	psllq	$60,%mm6
1892bc3d5698SJohn Baldwin	por	%mm6,%mm0
1893bc3d5698SJohn Baldwin	movq	%mm0,-8(%ebp)
1894bc3d5698SJohn Baldwin	movq	%mm3,120(%ebp)
1895bc3d5698SJohn Baldwin	movq	(%eax),%mm6
1896bc3d5698SJohn Baldwin	movl	8(%eax),%ebx
1897bc3d5698SJohn Baldwin	movl	12(%eax),%edx
1898bc3d5698SJohn Baldwin.align	16
1899bc3d5698SJohn Baldwin.L009outer:
1900bc3d5698SJohn Baldwin	xorl	12(%ecx),%edx
1901bc3d5698SJohn Baldwin	xorl	8(%ecx),%ebx
1902bc3d5698SJohn Baldwin	pxor	(%ecx),%mm6
1903bc3d5698SJohn Baldwin	leal	16(%ecx),%ecx
1904bc3d5698SJohn Baldwin	movl	%ebx,536(%esp)
1905bc3d5698SJohn Baldwin	movq	%mm6,528(%esp)
1906bc3d5698SJohn Baldwin	movl	%ecx,548(%esp)
1907bc3d5698SJohn Baldwin	xorl	%eax,%eax
1908bc3d5698SJohn Baldwin	roll	$8,%edx
1909bc3d5698SJohn Baldwin	movb	%dl,%al
1910bc3d5698SJohn Baldwin	movl	%eax,%ebp
1911bc3d5698SJohn Baldwin	andb	$15,%al
1912bc3d5698SJohn Baldwin	shrl	$4,%ebp
1913bc3d5698SJohn Baldwin	pxor	%mm0,%mm0
1914bc3d5698SJohn Baldwin	roll	$8,%edx
1915bc3d5698SJohn Baldwin	pxor	%mm1,%mm1
1916bc3d5698SJohn Baldwin	pxor	%mm2,%mm2
1917bc3d5698SJohn Baldwin	movq	16(%esp,%eax,8),%mm7
1918bc3d5698SJohn Baldwin	movq	144(%esp,%eax,8),%mm6
1919bc3d5698SJohn Baldwin	movb	%dl,%al
1920bc3d5698SJohn Baldwin	movd	%mm7,%ebx
1921bc3d5698SJohn Baldwin	psrlq	$8,%mm7
1922bc3d5698SJohn Baldwin	movq	%mm6,%mm3
1923bc3d5698SJohn Baldwin	movl	%eax,%edi
1924bc3d5698SJohn Baldwin	psrlq	$8,%mm6
1925bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
1926bc3d5698SJohn Baldwin	andb	$15,%al
1927bc3d5698SJohn Baldwin	psllq	$56,%mm3
1928bc3d5698SJohn Baldwin	shrl	$4,%edi
1929bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
1930bc3d5698SJohn Baldwin	roll	$8,%edx
1931bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
1932bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
1933bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
1934bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
1935bc3d5698SJohn Baldwin	movb	%dl,%al
1936bc3d5698SJohn Baldwin	movd	%mm7,%ecx
1937bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
1938bc3d5698SJohn Baldwin	psrlq	$8,%mm7
1939bc3d5698SJohn Baldwin	movq	%mm6,%mm3
1940bc3d5698SJohn Baldwin	movl	%eax,%ebp
1941bc3d5698SJohn Baldwin	psrlq	$8,%mm6
1942bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
1943bc3d5698SJohn Baldwin	andb	$15,%al
1944bc3d5698SJohn Baldwin	psllq	$56,%mm3
1945bc3d5698SJohn Baldwin	shrl	$4,%ebp
1946bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
1947bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
1948bc3d5698SJohn Baldwin	roll	$8,%edx
1949bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
1950bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
1951bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
1952bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
1953bc3d5698SJohn Baldwin	movb	%dl,%al
1954bc3d5698SJohn Baldwin	movl	536(%esp),%edx
1955bc3d5698SJohn Baldwin	movd	%mm7,%ebx
1956bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
1957bc3d5698SJohn Baldwin	psrlq	$8,%mm7
1958bc3d5698SJohn Baldwin	movq	%mm6,%mm3
1959bc3d5698SJohn Baldwin	movl	%eax,%edi
1960bc3d5698SJohn Baldwin	psrlq	$8,%mm6
1961bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
1962bc3d5698SJohn Baldwin	andb	$15,%al
1963bc3d5698SJohn Baldwin	psllq	$56,%mm3
1964bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
1965bc3d5698SJohn Baldwin	shrl	$4,%edi
1966bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
1967bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
1968bc3d5698SJohn Baldwin	roll	$8,%edx
1969bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
1970bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
1971bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
1972bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
1973bc3d5698SJohn Baldwin	movb	%dl,%al
1974bc3d5698SJohn Baldwin	movd	%mm7,%ecx
1975bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
1976bc3d5698SJohn Baldwin	psrlq	$8,%mm7
1977bc3d5698SJohn Baldwin	movq	%mm6,%mm3
1978bc3d5698SJohn Baldwin	movl	%eax,%ebp
1979bc3d5698SJohn Baldwin	psrlq	$8,%mm6
1980bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
1981bc3d5698SJohn Baldwin	andb	$15,%al
1982bc3d5698SJohn Baldwin	psllq	$56,%mm3
1983bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
1984bc3d5698SJohn Baldwin	shrl	$4,%ebp
1985bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
1986bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
1987bc3d5698SJohn Baldwin	roll	$8,%edx
1988bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
1989bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
1990bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
1991bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
1992bc3d5698SJohn Baldwin	movb	%dl,%al
1993bc3d5698SJohn Baldwin	movd	%mm7,%ebx
1994bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
1995bc3d5698SJohn Baldwin	psrlq	$8,%mm7
1996bc3d5698SJohn Baldwin	movq	%mm6,%mm3
1997bc3d5698SJohn Baldwin	movl	%eax,%edi
1998bc3d5698SJohn Baldwin	psrlq	$8,%mm6
1999bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2000bc3d5698SJohn Baldwin	andb	$15,%al
2001bc3d5698SJohn Baldwin	psllq	$56,%mm3
2002bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
2003bc3d5698SJohn Baldwin	shrl	$4,%edi
2004bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm2
2005bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2006bc3d5698SJohn Baldwin	roll	$8,%edx
2007bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2008bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2009bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2010bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2011bc3d5698SJohn Baldwin	movb	%dl,%al
2012bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2013bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2014bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2015bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2016bc3d5698SJohn Baldwin	movl	%eax,%ebp
2017bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2018bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
2019bc3d5698SJohn Baldwin	andb	$15,%al
2020bc3d5698SJohn Baldwin	psllq	$56,%mm3
2021bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
2022bc3d5698SJohn Baldwin	shrl	$4,%ebp
2023bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm1
2024bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2025bc3d5698SJohn Baldwin	roll	$8,%edx
2026bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2027bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2028bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
2029bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
2030bc3d5698SJohn Baldwin	movb	%dl,%al
2031bc3d5698SJohn Baldwin	movl	532(%esp),%edx
2032bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2033bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2034bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2035bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2036bc3d5698SJohn Baldwin	movl	%eax,%edi
2037bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2038bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2039bc3d5698SJohn Baldwin	andb	$15,%al
2040bc3d5698SJohn Baldwin	psllq	$56,%mm3
2041bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
2042bc3d5698SJohn Baldwin	shrl	$4,%edi
2043bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm0
2044bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2045bc3d5698SJohn Baldwin	roll	$8,%edx
2046bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2047bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2048bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2049bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2050bc3d5698SJohn Baldwin	movb	%dl,%al
2051bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2052bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2053bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2054bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2055bc3d5698SJohn Baldwin	movl	%eax,%ebp
2056bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2057bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
2058bc3d5698SJohn Baldwin	andb	$15,%al
2059bc3d5698SJohn Baldwin	psllq	$56,%mm3
2060bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
2061bc3d5698SJohn Baldwin	shrl	$4,%ebp
2062bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
2063bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2064bc3d5698SJohn Baldwin	roll	$8,%edx
2065bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2066bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2067bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
2068bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
2069bc3d5698SJohn Baldwin	movb	%dl,%al
2070bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2071bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2072bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2073bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2074bc3d5698SJohn Baldwin	movl	%eax,%edi
2075bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2076bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2077bc3d5698SJohn Baldwin	andb	$15,%al
2078bc3d5698SJohn Baldwin	psllq	$56,%mm3
2079bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
2080bc3d5698SJohn Baldwin	shrl	$4,%edi
2081bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
2082bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2083bc3d5698SJohn Baldwin	roll	$8,%edx
2084bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2085bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2086bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2087bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2088bc3d5698SJohn Baldwin	movb	%dl,%al
2089bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2090bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2091bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2092bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2093bc3d5698SJohn Baldwin	movl	%eax,%ebp
2094bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2095bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
2096bc3d5698SJohn Baldwin	andb	$15,%al
2097bc3d5698SJohn Baldwin	psllq	$56,%mm3
2098bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
2099bc3d5698SJohn Baldwin	shrl	$4,%ebp
2100bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
2101bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2102bc3d5698SJohn Baldwin	roll	$8,%edx
2103bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2104bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2105bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
2106bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
2107bc3d5698SJohn Baldwin	movb	%dl,%al
2108bc3d5698SJohn Baldwin	movl	528(%esp),%edx
2109bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2110bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2111bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2112bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2113bc3d5698SJohn Baldwin	movl	%eax,%edi
2114bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2115bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2116bc3d5698SJohn Baldwin	andb	$15,%al
2117bc3d5698SJohn Baldwin	psllq	$56,%mm3
2118bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
2119bc3d5698SJohn Baldwin	shrl	$4,%edi
2120bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm2
2121bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2122bc3d5698SJohn Baldwin	roll	$8,%edx
2123bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2124bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2125bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2126bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2127bc3d5698SJohn Baldwin	movb	%dl,%al
2128bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2129bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2130bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2131bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2132bc3d5698SJohn Baldwin	movl	%eax,%ebp
2133bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2134bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
2135bc3d5698SJohn Baldwin	andb	$15,%al
2136bc3d5698SJohn Baldwin	psllq	$56,%mm3
2137bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
2138bc3d5698SJohn Baldwin	shrl	$4,%ebp
2139bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm1
2140bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2141bc3d5698SJohn Baldwin	roll	$8,%edx
2142bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2143bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2144bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
2145bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
2146bc3d5698SJohn Baldwin	movb	%dl,%al
2147bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2148bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2149bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2150bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2151bc3d5698SJohn Baldwin	movl	%eax,%edi
2152bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2153bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2154bc3d5698SJohn Baldwin	andb	$15,%al
2155bc3d5698SJohn Baldwin	psllq	$56,%mm3
2156bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
2157bc3d5698SJohn Baldwin	shrl	$4,%edi
2158bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm0
2159bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2160bc3d5698SJohn Baldwin	roll	$8,%edx
2161bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2162bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2163bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2164bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2165bc3d5698SJohn Baldwin	movb	%dl,%al
2166bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2167bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2168bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2169bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2170bc3d5698SJohn Baldwin	movl	%eax,%ebp
2171bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2172bc3d5698SJohn Baldwin	pxor	272(%esp,%edi,8),%mm7
2173bc3d5698SJohn Baldwin	andb	$15,%al
2174bc3d5698SJohn Baldwin	psllq	$56,%mm3
2175bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
2176bc3d5698SJohn Baldwin	shrl	$4,%ebp
2177bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm2
2178bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2179bc3d5698SJohn Baldwin	roll	$8,%edx
2180bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2181bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2182bc3d5698SJohn Baldwin	pxor	400(%esp,%edi,8),%mm6
2183bc3d5698SJohn Baldwin	xorb	(%esp,%edi,1),%cl
2184bc3d5698SJohn Baldwin	movb	%dl,%al
2185bc3d5698SJohn Baldwin	movl	524(%esp),%edx
2186bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2187bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2188bc3d5698SJohn Baldwin	psrlq	$8,%mm7
2189bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2190bc3d5698SJohn Baldwin	movl	%eax,%edi
2191bc3d5698SJohn Baldwin	psrlq	$8,%mm6
2192bc3d5698SJohn Baldwin	pxor	272(%esp,%ebp,8),%mm7
2193bc3d5698SJohn Baldwin	andb	$15,%al
2194bc3d5698SJohn Baldwin	psllq	$56,%mm3
2195bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
2196bc3d5698SJohn Baldwin	shrl	$4,%edi
2197bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ecx,2),%mm1
2198bc3d5698SJohn Baldwin	pxor	16(%esp,%eax,8),%mm7
2199bc3d5698SJohn Baldwin	pxor	144(%esp,%eax,8),%mm6
2200bc3d5698SJohn Baldwin	xorb	(%esp,%ebp,1),%bl
2201bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2202bc3d5698SJohn Baldwin	pxor	400(%esp,%ebp,8),%mm6
2203bc3d5698SJohn Baldwin	movzbl	%bl,%ebx
2204bc3d5698SJohn Baldwin	pxor	%mm2,%mm2
2205bc3d5698SJohn Baldwin	psllq	$4,%mm1
2206bc3d5698SJohn Baldwin	movd	%mm7,%ecx
2207bc3d5698SJohn Baldwin	psrlq	$4,%mm7
2208bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2209bc3d5698SJohn Baldwin	psrlq	$4,%mm6
2210bc3d5698SJohn Baldwin	shll	$4,%ecx
2211bc3d5698SJohn Baldwin	pxor	16(%esp,%edi,8),%mm7
2212bc3d5698SJohn Baldwin	psllq	$60,%mm3
2213bc3d5698SJohn Baldwin	movzbl	%cl,%ecx
2214bc3d5698SJohn Baldwin	pxor	%mm3,%mm7
2215bc3d5698SJohn Baldwin	pxor	144(%esp,%edi,8),%mm6
2216bc3d5698SJohn Baldwin	pinsrw	$2,(%esi,%ebx,2),%mm0
2217bc3d5698SJohn Baldwin	pxor	%mm1,%mm6
2218bc3d5698SJohn Baldwin	movd	%mm7,%edx
2219bc3d5698SJohn Baldwin	pinsrw	$3,(%esi,%ecx,2),%mm2
2220bc3d5698SJohn Baldwin	psllq	$12,%mm0
2221bc3d5698SJohn Baldwin	pxor	%mm0,%mm6
2222bc3d5698SJohn Baldwin	psrlq	$32,%mm7
2223bc3d5698SJohn Baldwin	pxor	%mm2,%mm6
2224bc3d5698SJohn Baldwin	movl	548(%esp),%ecx
2225bc3d5698SJohn Baldwin	movd	%mm7,%ebx
2226bc3d5698SJohn Baldwin	movq	%mm6,%mm3
2227bc3d5698SJohn Baldwin	psllw	$8,%mm6
2228bc3d5698SJohn Baldwin	psrlw	$8,%mm3
2229bc3d5698SJohn Baldwin	por	%mm3,%mm6
2230bc3d5698SJohn Baldwin	bswap	%edx
2231bc3d5698SJohn Baldwin	pshufw	$27,%mm6,%mm6
2232bc3d5698SJohn Baldwin	bswap	%ebx
2233bc3d5698SJohn Baldwin	cmpl	552(%esp),%ecx
2234bc3d5698SJohn Baldwin	jne	.L009outer
2235bc3d5698SJohn Baldwin	movl	544(%esp),%eax
2236bc3d5698SJohn Baldwin	movl	%edx,12(%eax)
2237bc3d5698SJohn Baldwin	movl	%ebx,8(%eax)
2238bc3d5698SJohn Baldwin	movq	%mm6,(%eax)
2239bc3d5698SJohn Baldwin	movl	556(%esp),%esp
2240bc3d5698SJohn Baldwin	emms
2241bc3d5698SJohn Baldwin	popl	%edi
2242bc3d5698SJohn Baldwin	popl	%esi
2243bc3d5698SJohn Baldwin	popl	%ebx
2244bc3d5698SJohn Baldwin	popl	%ebp
2245bc3d5698SJohn Baldwin	ret
2246bc3d5698SJohn Baldwin.size	gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
2247bc3d5698SJohn Baldwin.globl	gcm_init_clmul
2248bc3d5698SJohn Baldwin.type	gcm_init_clmul,@function
2249bc3d5698SJohn Baldwin.align	16
2250bc3d5698SJohn Baldwingcm_init_clmul:
2251bc3d5698SJohn Baldwin.L_gcm_init_clmul_begin:
2252*c0855eaaSJohn Baldwin	#ifdef __CET__
2253*c0855eaaSJohn Baldwin
2254*c0855eaaSJohn Baldwin.byte	243,15,30,251
2255*c0855eaaSJohn Baldwin	#endif
2256*c0855eaaSJohn Baldwin
2257bc3d5698SJohn Baldwin	movl	4(%esp),%edx
2258bc3d5698SJohn Baldwin	movl	8(%esp),%eax
2259bc3d5698SJohn Baldwin	call	.L010pic
2260bc3d5698SJohn Baldwin.L010pic:
2261bc3d5698SJohn Baldwin	popl	%ecx
2262bc3d5698SJohn Baldwin	leal	.Lbswap-.L010pic(%ecx),%ecx
2263bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm2
2264bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm2
2265bc3d5698SJohn Baldwin	pshufd	$255,%xmm2,%xmm4
2266bc3d5698SJohn Baldwin	movdqa	%xmm2,%xmm3
2267bc3d5698SJohn Baldwin	psllq	$1,%xmm2
2268bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm5
2269bc3d5698SJohn Baldwin	psrlq	$63,%xmm3
2270bc3d5698SJohn Baldwin	pcmpgtd	%xmm4,%xmm5
2271bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
2272bc3d5698SJohn Baldwin	por	%xmm3,%xmm2
2273bc3d5698SJohn Baldwin	pand	16(%ecx),%xmm5
2274bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm2
2275bc3d5698SJohn Baldwin	movdqa	%xmm2,%xmm0
2276bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
2277bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
2278bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm4
2279bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2280bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm4
2281bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
2282bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
2283bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
2284bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
2285bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
2286bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
2287bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2288bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
2289bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2290bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2291bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2292bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2293bc3d5698SJohn Baldwin	psllq	$5,%xmm0
2294bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2295bc3d5698SJohn Baldwin	psllq	$1,%xmm0
2296bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2297bc3d5698SJohn Baldwin	psllq	$57,%xmm0
2298bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2299bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
2300bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2301bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2302bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2303bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2304bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2305bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2306bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2307bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
2308bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2309bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2310bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
2311bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm3
2312bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
2313bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm3
2314bc3d5698SJohn Baldwin	movdqu	%xmm2,(%edx)
2315bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2316bc3d5698SJohn Baldwin	movdqu	%xmm0,16(%edx)
2317bc3d5698SJohn Baldwin.byte	102,15,58,15,227,8
2318bc3d5698SJohn Baldwin	movdqu	%xmm4,32(%edx)
2319bc3d5698SJohn Baldwin	ret
2320bc3d5698SJohn Baldwin.size	gcm_init_clmul,.-.L_gcm_init_clmul_begin
2321bc3d5698SJohn Baldwin.globl	gcm_gmult_clmul
2322bc3d5698SJohn Baldwin.type	gcm_gmult_clmul,@function
2323bc3d5698SJohn Baldwin.align	16
2324bc3d5698SJohn Baldwingcm_gmult_clmul:
2325bc3d5698SJohn Baldwin.L_gcm_gmult_clmul_begin:
2326*c0855eaaSJohn Baldwin	#ifdef __CET__
2327*c0855eaaSJohn Baldwin
2328*c0855eaaSJohn Baldwin.byte	243,15,30,251
2329*c0855eaaSJohn Baldwin	#endif
2330*c0855eaaSJohn Baldwin
2331bc3d5698SJohn Baldwin	movl	4(%esp),%eax
2332bc3d5698SJohn Baldwin	movl	8(%esp),%edx
2333bc3d5698SJohn Baldwin	call	.L011pic
2334bc3d5698SJohn Baldwin.L011pic:
2335bc3d5698SJohn Baldwin	popl	%ecx
2336bc3d5698SJohn Baldwin	leal	.Lbswap-.L011pic(%ecx),%ecx
2337bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm0
2338bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
2339bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
2340bc3d5698SJohn Baldwin.byte	102,15,56,0,197
2341bc3d5698SJohn Baldwin	movups	32(%edx),%xmm4
2342bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
2343bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
2344bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2345bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
2346bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
2347bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
2348bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
2349bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
2350bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
2351bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2352bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
2353bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2354bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2355bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2356bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2357bc3d5698SJohn Baldwin	psllq	$5,%xmm0
2358bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2359bc3d5698SJohn Baldwin	psllq	$1,%xmm0
2360bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2361bc3d5698SJohn Baldwin	psllq	$57,%xmm0
2362bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2363bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
2364bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2365bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2366bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2367bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2368bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2369bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2370bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2371bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
2372bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2373bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2374bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
2375bc3d5698SJohn Baldwin.byte	102,15,56,0,197
2376bc3d5698SJohn Baldwin	movdqu	%xmm0,(%eax)
2377bc3d5698SJohn Baldwin	ret
2378bc3d5698SJohn Baldwin.size	gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
2379bc3d5698SJohn Baldwin.globl	gcm_ghash_clmul
2380bc3d5698SJohn Baldwin.type	gcm_ghash_clmul,@function
2381bc3d5698SJohn Baldwin.align	16
2382bc3d5698SJohn Baldwingcm_ghash_clmul:
2383bc3d5698SJohn Baldwin.L_gcm_ghash_clmul_begin:
2384*c0855eaaSJohn Baldwin	#ifdef __CET__
2385*c0855eaaSJohn Baldwin
2386*c0855eaaSJohn Baldwin.byte	243,15,30,251
2387*c0855eaaSJohn Baldwin	#endif
2388*c0855eaaSJohn Baldwin
2389bc3d5698SJohn Baldwin	pushl	%ebp
2390bc3d5698SJohn Baldwin	pushl	%ebx
2391bc3d5698SJohn Baldwin	pushl	%esi
2392bc3d5698SJohn Baldwin	pushl	%edi
2393bc3d5698SJohn Baldwin	movl	20(%esp),%eax
2394bc3d5698SJohn Baldwin	movl	24(%esp),%edx
2395bc3d5698SJohn Baldwin	movl	28(%esp),%esi
2396bc3d5698SJohn Baldwin	movl	32(%esp),%ebx
2397bc3d5698SJohn Baldwin	call	.L012pic
2398bc3d5698SJohn Baldwin.L012pic:
2399bc3d5698SJohn Baldwin	popl	%ecx
2400bc3d5698SJohn Baldwin	leal	.Lbswap-.L012pic(%ecx),%ecx
2401bc3d5698SJohn Baldwin	movdqu	(%eax),%xmm0
2402bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
2403bc3d5698SJohn Baldwin	movdqu	(%edx),%xmm2
2404bc3d5698SJohn Baldwin.byte	102,15,56,0,197
2405bc3d5698SJohn Baldwin	subl	$16,%ebx
2406bc3d5698SJohn Baldwin	jz	.L013odd_tail
2407bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm3
2408bc3d5698SJohn Baldwin	movdqu	16(%esi),%xmm6
2409bc3d5698SJohn Baldwin.byte	102,15,56,0,221
2410bc3d5698SJohn Baldwin.byte	102,15,56,0,245
2411bc3d5698SJohn Baldwin	movdqu	32(%edx),%xmm5
2412bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2413bc3d5698SJohn Baldwin	pshufd	$78,%xmm6,%xmm3
2414bc3d5698SJohn Baldwin	movdqa	%xmm6,%xmm7
2415bc3d5698SJohn Baldwin	pxor	%xmm6,%xmm3
2416bc3d5698SJohn Baldwin	leal	32(%esi),%esi
2417bc3d5698SJohn Baldwin.byte	102,15,58,68,242,0
2418bc3d5698SJohn Baldwin.byte	102,15,58,68,250,17
2419bc3d5698SJohn Baldwin.byte	102,15,58,68,221,0
2420bc3d5698SJohn Baldwin	movups	16(%edx),%xmm2
2421bc3d5698SJohn Baldwin	nop
2422bc3d5698SJohn Baldwin	subl	$32,%ebx
2423bc3d5698SJohn Baldwin	jbe	.L014even_tail
2424bc3d5698SJohn Baldwin	jmp	.L015mod_loop
2425bc3d5698SJohn Baldwin.align	32
2426bc3d5698SJohn Baldwin.L015mod_loop:
2427bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
2428bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
2429bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2430bc3d5698SJohn Baldwin	nop
2431bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
2432bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
2433bc3d5698SJohn Baldwin.byte	102,15,58,68,229,16
2434bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
2435bc3d5698SJohn Baldwin	xorps	%xmm6,%xmm0
2436bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
2437bc3d5698SJohn Baldwin	xorps	%xmm7,%xmm1
2438bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm7
2439bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2440bc3d5698SJohn Baldwin	movdqu	16(%esi),%xmm6
2441bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm3
2442bc3d5698SJohn Baldwin.byte	102,15,56,0,253
2443bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm4
2444bc3d5698SJohn Baldwin	movdqa	%xmm4,%xmm3
2445bc3d5698SJohn Baldwin	psrldq	$8,%xmm4
2446bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
2447bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2448bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2449bc3d5698SJohn Baldwin.byte	102,15,56,0,245
2450bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm1
2451bc3d5698SJohn Baldwin	movdqa	%xmm6,%xmm7
2452bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2453bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2454bc3d5698SJohn Baldwin	psllq	$5,%xmm0
2455bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2456bc3d5698SJohn Baldwin	psllq	$1,%xmm0
2457bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2458bc3d5698SJohn Baldwin.byte	102,15,58,68,242,0
2459bc3d5698SJohn Baldwin	movups	32(%edx),%xmm5
2460bc3d5698SJohn Baldwin	psllq	$57,%xmm0
2461bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2462bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
2463bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2464bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2465bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2466bc3d5698SJohn Baldwin	pshufd	$78,%xmm7,%xmm3
2467bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2468bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2469bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm3
2470bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2471bc3d5698SJohn Baldwin.byte	102,15,58,68,250,17
2472bc3d5698SJohn Baldwin	movups	16(%edx),%xmm2
2473bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2474bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
2475bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2476bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2477bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
2478bc3d5698SJohn Baldwin.byte	102,15,58,68,221,0
2479bc3d5698SJohn Baldwin	leal	32(%esi),%esi
2480bc3d5698SJohn Baldwin	subl	$32,%ebx
2481bc3d5698SJohn Baldwin	ja	.L015mod_loop
2482bc3d5698SJohn Baldwin.L014even_tail:
2483bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm4
2484bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
2485bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2486bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
2487bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
2488bc3d5698SJohn Baldwin.byte	102,15,58,68,229,16
2489bc3d5698SJohn Baldwin	movdqa	(%ecx),%xmm5
2490bc3d5698SJohn Baldwin	xorps	%xmm6,%xmm0
2491bc3d5698SJohn Baldwin	xorps	%xmm7,%xmm1
2492bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2493bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm3
2494bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm4
2495bc3d5698SJohn Baldwin	movdqa	%xmm4,%xmm3
2496bc3d5698SJohn Baldwin	psrldq	$8,%xmm4
2497bc3d5698SJohn Baldwin	pslldq	$8,%xmm3
2498bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2499bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2500bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2501bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2502bc3d5698SJohn Baldwin	psllq	$5,%xmm0
2503bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2504bc3d5698SJohn Baldwin	psllq	$1,%xmm0
2505bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2506bc3d5698SJohn Baldwin	psllq	$57,%xmm0
2507bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2508bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
2509bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2510bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2511bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2512bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2513bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2514bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2515bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2516bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
2517bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2518bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2519bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
2520bc3d5698SJohn Baldwin	testl	%ebx,%ebx
2521bc3d5698SJohn Baldwin	jnz	.L016done
2522bc3d5698SJohn Baldwin	movups	(%edx),%xmm2
2523bc3d5698SJohn Baldwin.L013odd_tail:
2524bc3d5698SJohn Baldwin	movdqu	(%esi),%xmm3
2525bc3d5698SJohn Baldwin.byte	102,15,56,0,221
2526bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2527bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm1
2528bc3d5698SJohn Baldwin	pshufd	$78,%xmm0,%xmm3
2529bc3d5698SJohn Baldwin	pshufd	$78,%xmm2,%xmm4
2530bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2531bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm4
2532bc3d5698SJohn Baldwin.byte	102,15,58,68,194,0
2533bc3d5698SJohn Baldwin.byte	102,15,58,68,202,17
2534bc3d5698SJohn Baldwin.byte	102,15,58,68,220,0
2535bc3d5698SJohn Baldwin	xorps	%xmm0,%xmm3
2536bc3d5698SJohn Baldwin	xorps	%xmm1,%xmm3
2537bc3d5698SJohn Baldwin	movdqa	%xmm3,%xmm4
2538bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2539bc3d5698SJohn Baldwin	pslldq	$8,%xmm4
2540bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2541bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2542bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2543bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2544bc3d5698SJohn Baldwin	psllq	$5,%xmm0
2545bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm3
2546bc3d5698SJohn Baldwin	psllq	$1,%xmm0
2547bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm0
2548bc3d5698SJohn Baldwin	psllq	$57,%xmm0
2549bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm3
2550bc3d5698SJohn Baldwin	pslldq	$8,%xmm0
2551bc3d5698SJohn Baldwin	psrldq	$8,%xmm3
2552bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2553bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm1
2554bc3d5698SJohn Baldwin	movdqa	%xmm0,%xmm4
2555bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2556bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm1
2557bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm4
2558bc3d5698SJohn Baldwin	psrlq	$5,%xmm0
2559bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm0
2560bc3d5698SJohn Baldwin	psrlq	$1,%xmm0
2561bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm0
2562bc3d5698SJohn Baldwin.L016done:
2563bc3d5698SJohn Baldwin.byte	102,15,56,0,197
2564bc3d5698SJohn Baldwin	movdqu	%xmm0,(%eax)
2565bc3d5698SJohn Baldwin	popl	%edi
2566bc3d5698SJohn Baldwin	popl	%esi
2567bc3d5698SJohn Baldwin	popl	%ebx
2568bc3d5698SJohn Baldwin	popl	%ebp
2569bc3d5698SJohn Baldwin	ret
2570bc3d5698SJohn Baldwin.size	gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
2571bc3d5698SJohn Baldwin.align	64
2572bc3d5698SJohn Baldwin.Lbswap:
2573bc3d5698SJohn Baldwin.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
2574bc3d5698SJohn Baldwin.byte	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
2575bc3d5698SJohn Baldwin.align	64
2576bc3d5698SJohn Baldwin.Lrem_8bit:
2577bc3d5698SJohn Baldwin.value	0,450,900,582,1800,1738,1164,1358
2578bc3d5698SJohn Baldwin.value	3600,4050,3476,3158,2328,2266,2716,2910
2579bc3d5698SJohn Baldwin.value	7200,7650,8100,7782,6952,6890,6316,6510
2580bc3d5698SJohn Baldwin.value	4656,5106,4532,4214,5432,5370,5820,6014
2581bc3d5698SJohn Baldwin.value	14400,14722,15300,14854,16200,16010,15564,15630
2582bc3d5698SJohn Baldwin.value	13904,14226,13780,13334,12632,12442,13020,13086
2583bc3d5698SJohn Baldwin.value	9312,9634,10212,9766,9064,8874,8428,8494
2584bc3d5698SJohn Baldwin.value	10864,11186,10740,10294,11640,11450,12028,12094
2585bc3d5698SJohn Baldwin.value	28800,28994,29444,29382,30600,30282,29708,30158
2586bc3d5698SJohn Baldwin.value	32400,32594,32020,31958,31128,30810,31260,31710
2587bc3d5698SJohn Baldwin.value	27808,28002,28452,28390,27560,27242,26668,27118
2588bc3d5698SJohn Baldwin.value	25264,25458,24884,24822,26040,25722,26172,26622
2589bc3d5698SJohn Baldwin.value	18624,18690,19268,19078,20424,19978,19532,19854
2590bc3d5698SJohn Baldwin.value	18128,18194,17748,17558,16856,16410,16988,17310
2591bc3d5698SJohn Baldwin.value	21728,21794,22372,22182,21480,21034,20588,20910
2592bc3d5698SJohn Baldwin.value	23280,23346,22900,22710,24056,23610,24188,24510
2593bc3d5698SJohn Baldwin.value	57600,57538,57988,58182,58888,59338,58764,58446
2594bc3d5698SJohn Baldwin.value	61200,61138,60564,60758,59416,59866,60316,59998
2595bc3d5698SJohn Baldwin.value	64800,64738,65188,65382,64040,64490,63916,63598
2596bc3d5698SJohn Baldwin.value	62256,62194,61620,61814,62520,62970,63420,63102
2597bc3d5698SJohn Baldwin.value	55616,55426,56004,56070,56904,57226,56780,56334
2598bc3d5698SJohn Baldwin.value	55120,54930,54484,54550,53336,53658,54236,53790
2599bc3d5698SJohn Baldwin.value	50528,50338,50916,50982,49768,50090,49644,49198
2600bc3d5698SJohn Baldwin.value	52080,51890,51444,51510,52344,52666,53244,52798
2601bc3d5698SJohn Baldwin.value	37248,36930,37380,37830,38536,38730,38156,38094
2602bc3d5698SJohn Baldwin.value	40848,40530,39956,40406,39064,39258,39708,39646
2603bc3d5698SJohn Baldwin.value	36256,35938,36388,36838,35496,35690,35116,35054
2604bc3d5698SJohn Baldwin.value	33712,33394,32820,33270,33976,34170,34620,34558
2605bc3d5698SJohn Baldwin.value	43456,43010,43588,43910,44744,44810,44364,44174
2606bc3d5698SJohn Baldwin.value	42960,42514,42068,42390,41176,41242,41820,41630
2607bc3d5698SJohn Baldwin.value	46560,46114,46692,47014,45800,45866,45420,45230
2608bc3d5698SJohn Baldwin.value	48112,47666,47220,47542,48376,48442,49020,48830
2609bc3d5698SJohn Baldwin.align	64
2610bc3d5698SJohn Baldwin.Lrem_4bit:
2611bc3d5698SJohn Baldwin.long	0,0,0,471859200,0,943718400,0,610271232
2612bc3d5698SJohn Baldwin.long	0,1887436800,0,1822425088,0,1220542464,0,1423966208
2613bc3d5698SJohn Baldwin.long	0,3774873600,0,4246732800,0,3644850176,0,3311403008
2614bc3d5698SJohn Baldwin.long	0,2441084928,0,2376073216,0,2847932416,0,3051356160
2615bc3d5698SJohn Baldwin.byte	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
2616bc3d5698SJohn Baldwin.byte	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
2617bc3d5698SJohn Baldwin.byte	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
2618bc3d5698SJohn Baldwin.byte	0
2619*c0855eaaSJohn Baldwin
2620*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
2621*c0855eaaSJohn Baldwin	.p2align 2
2622*c0855eaaSJohn Baldwin	.long 1f - 0f
2623*c0855eaaSJohn Baldwin	.long 4f - 1f
2624*c0855eaaSJohn Baldwin	.long 5
2625*c0855eaaSJohn Baldwin0:
2626*c0855eaaSJohn Baldwin	.asciz "GNU"
2627*c0855eaaSJohn Baldwin1:
2628*c0855eaaSJohn Baldwin	.p2align 2
2629*c0855eaaSJohn Baldwin	.long 0xc0000002
2630*c0855eaaSJohn Baldwin	.long 3f - 2f
2631*c0855eaaSJohn Baldwin2:
2632*c0855eaaSJohn Baldwin	.long 3
2633*c0855eaaSJohn Baldwin3:
2634*c0855eaaSJohn Baldwin	.p2align 2
2635*c0855eaaSJohn Baldwin4:
2636bc3d5698SJohn Baldwin#endif
2637