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