]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/i386/ghash-x86.S
Upgrade Unbound to 1.7.1.
[FreeBSD/FreeBSD.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,%xmm4
952         movdqa  %xmm0,%xmm3
953         psllq   $5,%xmm0
954         pxor    %xmm0,%xmm3
955         psllq   $1,%xmm0
956         pxor    %xmm3,%xmm0
957         psllq   $57,%xmm0
958         movdqa  %xmm0,%xmm3
959         pslldq  $8,%xmm0
960         psrldq  $8,%xmm3
961         pxor    %xmm4,%xmm0
962         pxor    %xmm3,%xmm1
963         movdqa  %xmm0,%xmm4
964         psrlq   $1,%xmm0
965         pxor    %xmm4,%xmm1
966         pxor    %xmm0,%xmm4
967         psrlq   $5,%xmm0
968         pxor    %xmm4,%xmm0
969         psrlq   $1,%xmm0
970         pxor    %xmm1,%xmm0
971         pshufd  $78,%xmm2,%xmm3
972         pshufd  $78,%xmm0,%xmm4
973         pxor    %xmm2,%xmm3
974         movdqu  %xmm2,(%edx)
975         pxor    %xmm0,%xmm4
976         movdqu  %xmm0,16(%edx)
977 .byte   102,15,58,15,227,8
978         movdqu  %xmm4,32(%edx)
979         ret
980 .size   gcm_init_clmul,.-.L_gcm_init_clmul_begin
981 .globl  gcm_gmult_clmul
982 .type   gcm_gmult_clmul,@function
983 .align  16
984 gcm_gmult_clmul:
985 .L_gcm_gmult_clmul_begin:
986         movl    4(%esp),%eax
987         movl    8(%esp),%edx
988         call    .L011pic
989 .L011pic:
990         popl    %ecx
991         leal    .Lbswap-.L011pic(%ecx),%ecx
992         movdqu  (%eax),%xmm0
993         movdqa  (%ecx),%xmm5
994         movups  (%edx),%xmm2
995 .byte   102,15,56,0,197
996         movups  32(%edx),%xmm4
997         movdqa  %xmm0,%xmm1
998         pshufd  $78,%xmm0,%xmm3
999         pxor    %xmm0,%xmm3
1000 .byte   102,15,58,68,194,0
1001 .byte   102,15,58,68,202,17
1002 .byte   102,15,58,68,220,0
1003         xorps   %xmm0,%xmm3
1004         xorps   %xmm1,%xmm3
1005         movdqa  %xmm3,%xmm4
1006         psrldq  $8,%xmm3
1007         pslldq  $8,%xmm4
1008         pxor    %xmm3,%xmm1
1009         pxor    %xmm4,%xmm0
1010         movdqa  %xmm0,%xmm4
1011         movdqa  %xmm0,%xmm3
1012         psllq   $5,%xmm0
1013         pxor    %xmm0,%xmm3
1014         psllq   $1,%xmm0
1015         pxor    %xmm3,%xmm0
1016         psllq   $57,%xmm0
1017         movdqa  %xmm0,%xmm3
1018         pslldq  $8,%xmm0
1019         psrldq  $8,%xmm3
1020         pxor    %xmm4,%xmm0
1021         pxor    %xmm3,%xmm1
1022         movdqa  %xmm0,%xmm4
1023         psrlq   $1,%xmm0
1024         pxor    %xmm4,%xmm1
1025         pxor    %xmm0,%xmm4
1026         psrlq   $5,%xmm0
1027         pxor    %xmm4,%xmm0
1028         psrlq   $1,%xmm0
1029         pxor    %xmm1,%xmm0
1030 .byte   102,15,56,0,197
1031         movdqu  %xmm0,(%eax)
1032         ret
1033 .size   gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
1034 .globl  gcm_ghash_clmul
1035 .type   gcm_ghash_clmul,@function
1036 .align  16
1037 gcm_ghash_clmul:
1038 .L_gcm_ghash_clmul_begin:
1039         pushl   %ebp
1040         pushl   %ebx
1041         pushl   %esi
1042         pushl   %edi
1043         movl    20(%esp),%eax
1044         movl    24(%esp),%edx
1045         movl    28(%esp),%esi
1046         movl    32(%esp),%ebx
1047         call    .L012pic
1048 .L012pic:
1049         popl    %ecx
1050         leal    .Lbswap-.L012pic(%ecx),%ecx
1051         movdqu  (%eax),%xmm0
1052         movdqa  (%ecx),%xmm5
1053         movdqu  (%edx),%xmm2
1054 .byte   102,15,56,0,197
1055         subl    $16,%ebx
1056         jz      .L013odd_tail
1057         movdqu  (%esi),%xmm3
1058         movdqu  16(%esi),%xmm6
1059 .byte   102,15,56,0,221
1060 .byte   102,15,56,0,245
1061         movdqu  32(%edx),%xmm5
1062         pxor    %xmm3,%xmm0
1063         pshufd  $78,%xmm6,%xmm3
1064         movdqa  %xmm6,%xmm7
1065         pxor    %xmm6,%xmm3
1066         leal    32(%esi),%esi
1067 .byte   102,15,58,68,242,0
1068 .byte   102,15,58,68,250,17
1069 .byte   102,15,58,68,221,0
1070         movups  16(%edx),%xmm2
1071         nop
1072         subl    $32,%ebx
1073         jbe     .L014even_tail
1074         jmp     .L015mod_loop
1075 .align  32
1076 .L015mod_loop:
1077         pshufd  $78,%xmm0,%xmm4
1078         movdqa  %xmm0,%xmm1
1079         pxor    %xmm0,%xmm4
1080         nop
1081 .byte   102,15,58,68,194,0
1082 .byte   102,15,58,68,202,17
1083 .byte   102,15,58,68,229,16
1084         movups  (%edx),%xmm2
1085         xorps   %xmm6,%xmm0
1086         movdqa  (%ecx),%xmm5
1087         xorps   %xmm7,%xmm1
1088         movdqu  (%esi),%xmm7
1089         pxor    %xmm0,%xmm3
1090         movdqu  16(%esi),%xmm6
1091         pxor    %xmm1,%xmm3
1092 .byte   102,15,56,0,253
1093         pxor    %xmm3,%xmm4
1094         movdqa  %xmm4,%xmm3
1095         psrldq  $8,%xmm4
1096         pslldq  $8,%xmm3
1097         pxor    %xmm4,%xmm1
1098         pxor    %xmm3,%xmm0
1099 .byte   102,15,56,0,245
1100         pxor    %xmm7,%xmm1
1101         movdqa  %xmm6,%xmm7
1102         movdqa  %xmm0,%xmm4
1103         movdqa  %xmm0,%xmm3
1104         psllq   $5,%xmm0
1105         pxor    %xmm0,%xmm3
1106         psllq   $1,%xmm0
1107         pxor    %xmm3,%xmm0
1108 .byte   102,15,58,68,242,0
1109         movups  32(%edx),%xmm5
1110         psllq   $57,%xmm0
1111         movdqa  %xmm0,%xmm3
1112         pslldq  $8,%xmm0
1113         psrldq  $8,%xmm3
1114         pxor    %xmm4,%xmm0
1115         pxor    %xmm3,%xmm1
1116         pshufd  $78,%xmm7,%xmm3
1117         movdqa  %xmm0,%xmm4
1118         psrlq   $1,%xmm0
1119         pxor    %xmm7,%xmm3
1120         pxor    %xmm4,%xmm1
1121 .byte   102,15,58,68,250,17
1122         movups  16(%edx),%xmm2
1123         pxor    %xmm0,%xmm4
1124         psrlq   $5,%xmm0
1125         pxor    %xmm4,%xmm0
1126         psrlq   $1,%xmm0
1127         pxor    %xmm1,%xmm0
1128 .byte   102,15,58,68,221,0
1129         leal    32(%esi),%esi
1130         subl    $32,%ebx
1131         ja      .L015mod_loop
1132 .L014even_tail:
1133         pshufd  $78,%xmm0,%xmm4
1134         movdqa  %xmm0,%xmm1
1135         pxor    %xmm0,%xmm4
1136 .byte   102,15,58,68,194,0
1137 .byte   102,15,58,68,202,17
1138 .byte   102,15,58,68,229,16
1139         movdqa  (%ecx),%xmm5
1140         xorps   %xmm6,%xmm0
1141         xorps   %xmm7,%xmm1
1142         pxor    %xmm0,%xmm3
1143         pxor    %xmm1,%xmm3
1144         pxor    %xmm3,%xmm4
1145         movdqa  %xmm4,%xmm3
1146         psrldq  $8,%xmm4
1147         pslldq  $8,%xmm3
1148         pxor    %xmm4,%xmm1
1149         pxor    %xmm3,%xmm0
1150         movdqa  %xmm0,%xmm4
1151         movdqa  %xmm0,%xmm3
1152         psllq   $5,%xmm0
1153         pxor    %xmm0,%xmm3
1154         psllq   $1,%xmm0
1155         pxor    %xmm3,%xmm0
1156         psllq   $57,%xmm0
1157         movdqa  %xmm0,%xmm3
1158         pslldq  $8,%xmm0
1159         psrldq  $8,%xmm3
1160         pxor    %xmm4,%xmm0
1161         pxor    %xmm3,%xmm1
1162         movdqa  %xmm0,%xmm4
1163         psrlq   $1,%xmm0
1164         pxor    %xmm4,%xmm1
1165         pxor    %xmm0,%xmm4
1166         psrlq   $5,%xmm0
1167         pxor    %xmm4,%xmm0
1168         psrlq   $1,%xmm0
1169         pxor    %xmm1,%xmm0
1170         testl   %ebx,%ebx
1171         jnz     .L016done
1172         movups  (%edx),%xmm2
1173 .L013odd_tail:
1174         movdqu  (%esi),%xmm3
1175 .byte   102,15,56,0,221
1176         pxor    %xmm3,%xmm0
1177         movdqa  %xmm0,%xmm1
1178         pshufd  $78,%xmm0,%xmm3
1179         pshufd  $78,%xmm2,%xmm4
1180         pxor    %xmm0,%xmm3
1181         pxor    %xmm2,%xmm4
1182 .byte   102,15,58,68,194,0
1183 .byte   102,15,58,68,202,17
1184 .byte   102,15,58,68,220,0
1185         xorps   %xmm0,%xmm3
1186         xorps   %xmm1,%xmm3
1187         movdqa  %xmm3,%xmm4
1188         psrldq  $8,%xmm3
1189         pslldq  $8,%xmm4
1190         pxor    %xmm3,%xmm1
1191         pxor    %xmm4,%xmm0
1192         movdqa  %xmm0,%xmm4
1193         movdqa  %xmm0,%xmm3
1194         psllq   $5,%xmm0
1195         pxor    %xmm0,%xmm3
1196         psllq   $1,%xmm0
1197         pxor    %xmm3,%xmm0
1198         psllq   $57,%xmm0
1199         movdqa  %xmm0,%xmm3
1200         pslldq  $8,%xmm0
1201         psrldq  $8,%xmm3
1202         pxor    %xmm4,%xmm0
1203         pxor    %xmm3,%xmm1
1204         movdqa  %xmm0,%xmm4
1205         psrlq   $1,%xmm0
1206         pxor    %xmm4,%xmm1
1207         pxor    %xmm0,%xmm4
1208         psrlq   $5,%xmm0
1209         pxor    %xmm4,%xmm0
1210         psrlq   $1,%xmm0
1211         pxor    %xmm1,%xmm0
1212 .L016done:
1213 .byte   102,15,56,0,197
1214         movdqu  %xmm0,(%eax)
1215         popl    %edi
1216         popl    %esi
1217         popl    %ebx
1218         popl    %ebp
1219         ret
1220 .size   gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
1221 .align  64
1222 .Lbswap:
1223 .byte   15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
1224 .byte   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
1225 .align  64
1226 .Lrem_8bit:
1227 .value  0,450,900,582,1800,1738,1164,1358
1228 .value  3600,4050,3476,3158,2328,2266,2716,2910
1229 .value  7200,7650,8100,7782,6952,6890,6316,6510
1230 .value  4656,5106,4532,4214,5432,5370,5820,6014
1231 .value  14400,14722,15300,14854,16200,16010,15564,15630
1232 .value  13904,14226,13780,13334,12632,12442,13020,13086
1233 .value  9312,9634,10212,9766,9064,8874,8428,8494
1234 .value  10864,11186,10740,10294,11640,11450,12028,12094
1235 .value  28800,28994,29444,29382,30600,30282,29708,30158
1236 .value  32400,32594,32020,31958,31128,30810,31260,31710
1237 .value  27808,28002,28452,28390,27560,27242,26668,27118
1238 .value  25264,25458,24884,24822,26040,25722,26172,26622
1239 .value  18624,18690,19268,19078,20424,19978,19532,19854
1240 .value  18128,18194,17748,17558,16856,16410,16988,17310
1241 .value  21728,21794,22372,22182,21480,21034,20588,20910
1242 .value  23280,23346,22900,22710,24056,23610,24188,24510
1243 .value  57600,57538,57988,58182,58888,59338,58764,58446
1244 .value  61200,61138,60564,60758,59416,59866,60316,59998
1245 .value  64800,64738,65188,65382,64040,64490,63916,63598
1246 .value  62256,62194,61620,61814,62520,62970,63420,63102
1247 .value  55616,55426,56004,56070,56904,57226,56780,56334
1248 .value  55120,54930,54484,54550,53336,53658,54236,53790
1249 .value  50528,50338,50916,50982,49768,50090,49644,49198
1250 .value  52080,51890,51444,51510,52344,52666,53244,52798
1251 .value  37248,36930,37380,37830,38536,38730,38156,38094
1252 .value  40848,40530,39956,40406,39064,39258,39708,39646
1253 .value  36256,35938,36388,36838,35496,35690,35116,35054
1254 .value  33712,33394,32820,33270,33976,34170,34620,34558
1255 .value  43456,43010,43588,43910,44744,44810,44364,44174
1256 .value  42960,42514,42068,42390,41176,41242,41820,41630
1257 .value  46560,46114,46692,47014,45800,45866,45420,45230
1258 .value  48112,47666,47220,47542,48376,48442,49020,48830
1259 .align  64
1260 .Lrem_4bit:
1261 .long   0,0,0,471859200,0,943718400,0,610271232
1262 .long   0,1887436800,0,1822425088,0,1220542464,0,1423966208
1263 .long   0,3774873600,0,4246732800,0,3644850176,0,3311403008
1264 .long   0,2441084928,0,2376073216,0,2847932416,0,3051356160
1265 .byte   71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
1266 .byte   82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
1267 .byte   112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
1268 .byte   0
1269 #else
1270 .file   "ghash-x86.S"
1271 .text
1272 .globl  gcm_gmult_4bit_x86
1273 .type   gcm_gmult_4bit_x86,@function
1274 .align  16
1275 gcm_gmult_4bit_x86:
1276 .L_gcm_gmult_4bit_x86_begin:
1277         pushl   %ebp
1278         pushl   %ebx
1279         pushl   %esi
1280         pushl   %edi
1281         subl    $84,%esp
1282         movl    104(%esp),%edi
1283         movl    108(%esp),%esi
1284         movl    (%edi),%ebp
1285         movl    4(%edi),%edx
1286         movl    8(%edi),%ecx
1287         movl    12(%edi),%ebx
1288         movl    $0,16(%esp)
1289         movl    $471859200,20(%esp)
1290         movl    $943718400,24(%esp)
1291         movl    $610271232,28(%esp)
1292         movl    $1887436800,32(%esp)
1293         movl    $1822425088,36(%esp)
1294         movl    $1220542464,40(%esp)
1295         movl    $1423966208,44(%esp)
1296         movl    $3774873600,48(%esp)
1297         movl    $4246732800,52(%esp)
1298         movl    $3644850176,56(%esp)
1299         movl    $3311403008,60(%esp)
1300         movl    $2441084928,64(%esp)
1301         movl    $2376073216,68(%esp)
1302         movl    $2847932416,72(%esp)
1303         movl    $3051356160,76(%esp)
1304         movl    %ebp,(%esp)
1305         movl    %edx,4(%esp)
1306         movl    %ecx,8(%esp)
1307         movl    %ebx,12(%esp)
1308         shrl    $20,%ebx
1309         andl    $240,%ebx
1310         movl    4(%esi,%ebx,1),%ebp
1311         movl    (%esi,%ebx,1),%edx
1312         movl    12(%esi,%ebx,1),%ecx
1313         movl    8(%esi,%ebx,1),%ebx
1314         xorl    %eax,%eax
1315         movl    $15,%edi
1316         jmp     .L000x86_loop
1317 .align  16
1318 .L000x86_loop:
1319         movb    %bl,%al
1320         shrdl   $4,%ecx,%ebx
1321         andb    $15,%al
1322         shrdl   $4,%edx,%ecx
1323         shrdl   $4,%ebp,%edx
1324         shrl    $4,%ebp
1325         xorl    16(%esp,%eax,4),%ebp
1326         movb    (%esp,%edi,1),%al
1327         andb    $240,%al
1328         xorl    8(%esi,%eax,1),%ebx
1329         xorl    12(%esi,%eax,1),%ecx
1330         xorl    (%esi,%eax,1),%edx
1331         xorl    4(%esi,%eax,1),%ebp
1332         decl    %edi
1333         js      .L001x86_break
1334         movb    %bl,%al
1335         shrdl   $4,%ecx,%ebx
1336         andb    $15,%al
1337         shrdl   $4,%edx,%ecx
1338         shrdl   $4,%ebp,%edx
1339         shrl    $4,%ebp
1340         xorl    16(%esp,%eax,4),%ebp
1341         movb    (%esp,%edi,1),%al
1342         shlb    $4,%al
1343         xorl    8(%esi,%eax,1),%ebx
1344         xorl    12(%esi,%eax,1),%ecx
1345         xorl    (%esi,%eax,1),%edx
1346         xorl    4(%esi,%eax,1),%ebp
1347         jmp     .L000x86_loop
1348 .align  16
1349 .L001x86_break:
1350         bswap   %ebx
1351         bswap   %ecx
1352         bswap   %edx
1353         bswap   %ebp
1354         movl    104(%esp),%edi
1355         movl    %ebx,12(%edi)
1356         movl    %ecx,8(%edi)
1357         movl    %edx,4(%edi)
1358         movl    %ebp,(%edi)
1359         addl    $84,%esp
1360         popl    %edi
1361         popl    %esi
1362         popl    %ebx
1363         popl    %ebp
1364         ret
1365 .size   gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
1366 .globl  gcm_ghash_4bit_x86
1367 .type   gcm_ghash_4bit_x86,@function
1368 .align  16
1369 gcm_ghash_4bit_x86:
1370 .L_gcm_ghash_4bit_x86_begin:
1371         pushl   %ebp
1372         pushl   %ebx
1373         pushl   %esi
1374         pushl   %edi
1375         subl    $84,%esp
1376         movl    104(%esp),%ebx
1377         movl    108(%esp),%esi
1378         movl    112(%esp),%edi
1379         movl    116(%esp),%ecx
1380         addl    %edi,%ecx
1381         movl    %ecx,116(%esp)
1382         movl    (%ebx),%ebp
1383         movl    4(%ebx),%edx
1384         movl    8(%ebx),%ecx
1385         movl    12(%ebx),%ebx
1386         movl    $0,16(%esp)
1387         movl    $471859200,20(%esp)
1388         movl    $943718400,24(%esp)
1389         movl    $610271232,28(%esp)
1390         movl    $1887436800,32(%esp)
1391         movl    $1822425088,36(%esp)
1392         movl    $1220542464,40(%esp)
1393         movl    $1423966208,44(%esp)
1394         movl    $3774873600,48(%esp)
1395         movl    $4246732800,52(%esp)
1396         movl    $3644850176,56(%esp)
1397         movl    $3311403008,60(%esp)
1398         movl    $2441084928,64(%esp)
1399         movl    $2376073216,68(%esp)
1400         movl    $2847932416,72(%esp)
1401         movl    $3051356160,76(%esp)
1402 .align  16
1403 .L002x86_outer_loop:
1404         xorl    12(%edi),%ebx
1405         xorl    8(%edi),%ecx
1406         xorl    4(%edi),%edx
1407         xorl    (%edi),%ebp
1408         movl    %ebx,12(%esp)
1409         movl    %ecx,8(%esp)
1410         movl    %edx,4(%esp)
1411         movl    %ebp,(%esp)
1412         shrl    $20,%ebx
1413         andl    $240,%ebx
1414         movl    4(%esi,%ebx,1),%ebp
1415         movl    (%esi,%ebx,1),%edx
1416         movl    12(%esi,%ebx,1),%ecx
1417         movl    8(%esi,%ebx,1),%ebx
1418         xorl    %eax,%eax
1419         movl    $15,%edi
1420         jmp     .L003x86_loop
1421 .align  16
1422 .L003x86_loop:
1423         movb    %bl,%al
1424         shrdl   $4,%ecx,%ebx
1425         andb    $15,%al
1426         shrdl   $4,%edx,%ecx
1427         shrdl   $4,%ebp,%edx
1428         shrl    $4,%ebp
1429         xorl    16(%esp,%eax,4),%ebp
1430         movb    (%esp,%edi,1),%al
1431         andb    $240,%al
1432         xorl    8(%esi,%eax,1),%ebx
1433         xorl    12(%esi,%eax,1),%ecx
1434         xorl    (%esi,%eax,1),%edx
1435         xorl    4(%esi,%eax,1),%ebp
1436         decl    %edi
1437         js      .L004x86_break
1438         movb    %bl,%al
1439         shrdl   $4,%ecx,%ebx
1440         andb    $15,%al
1441         shrdl   $4,%edx,%ecx
1442         shrdl   $4,%ebp,%edx
1443         shrl    $4,%ebp
1444         xorl    16(%esp,%eax,4),%ebp
1445         movb    (%esp,%edi,1),%al
1446         shlb    $4,%al
1447         xorl    8(%esi,%eax,1),%ebx
1448         xorl    12(%esi,%eax,1),%ecx
1449         xorl    (%esi,%eax,1),%edx
1450         xorl    4(%esi,%eax,1),%ebp
1451         jmp     .L003x86_loop
1452 .align  16
1453 .L004x86_break:
1454         bswap   %ebx
1455         bswap   %ecx
1456         bswap   %edx
1457         bswap   %ebp
1458         movl    112(%esp),%edi
1459         leal    16(%edi),%edi
1460         cmpl    116(%esp),%edi
1461         movl    %edi,112(%esp)
1462         jb      .L002x86_outer_loop
1463         movl    104(%esp),%edi
1464         movl    %ebx,12(%edi)
1465         movl    %ecx,8(%edi)
1466         movl    %edx,4(%edi)
1467         movl    %ebp,(%edi)
1468         addl    $84,%esp
1469         popl    %edi
1470         popl    %esi
1471         popl    %ebx
1472         popl    %ebp
1473         ret
1474 .size   gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
1475 .globl  gcm_gmult_4bit_mmx
1476 .type   gcm_gmult_4bit_mmx,@function
1477 .align  16
1478 gcm_gmult_4bit_mmx:
1479 .L_gcm_gmult_4bit_mmx_begin:
1480         pushl   %ebp
1481         pushl   %ebx
1482         pushl   %esi
1483         pushl   %edi
1484         movl    20(%esp),%edi
1485         movl    24(%esp),%esi
1486         call    .L005pic_point
1487 .L005pic_point:
1488         popl    %eax
1489         leal    .Lrem_4bit-.L005pic_point(%eax),%eax
1490         movzbl  15(%edi),%ebx
1491         xorl    %ecx,%ecx
1492         movl    %ebx,%edx
1493         movb    %dl,%cl
1494         movl    $14,%ebp
1495         shlb    $4,%cl
1496         andl    $240,%edx
1497         movq    8(%esi,%ecx,1),%mm0
1498         movq    (%esi,%ecx,1),%mm1
1499         movd    %mm0,%ebx
1500         jmp     .L006mmx_loop
1501 .align  16
1502 .L006mmx_loop:
1503         psrlq   $4,%mm0
1504         andl    $15,%ebx
1505         movq    %mm1,%mm2
1506         psrlq   $4,%mm1
1507         pxor    8(%esi,%edx,1),%mm0
1508         movb    (%edi,%ebp,1),%cl
1509         psllq   $60,%mm2
1510         pxor    (%eax,%ebx,8),%mm1
1511         decl    %ebp
1512         movd    %mm0,%ebx
1513         pxor    (%esi,%edx,1),%mm1
1514         movl    %ecx,%edx
1515         pxor    %mm2,%mm0
1516         js      .L007mmx_break
1517         shlb    $4,%cl
1518         andl    $15,%ebx
1519         psrlq   $4,%mm0
1520         andl    $240,%edx
1521         movq    %mm1,%mm2
1522         psrlq   $4,%mm1
1523         pxor    8(%esi,%ecx,1),%mm0
1524         psllq   $60,%mm2
1525         pxor    (%eax,%ebx,8),%mm1
1526         movd    %mm0,%ebx
1527         pxor    (%esi,%ecx,1),%mm1
1528         pxor    %mm2,%mm0
1529         jmp     .L006mmx_loop
1530 .align  16
1531 .L007mmx_break:
1532         shlb    $4,%cl
1533         andl    $15,%ebx
1534         psrlq   $4,%mm0
1535         andl    $240,%edx
1536         movq    %mm1,%mm2
1537         psrlq   $4,%mm1
1538         pxor    8(%esi,%ecx,1),%mm0
1539         psllq   $60,%mm2
1540         pxor    (%eax,%ebx,8),%mm1
1541         movd    %mm0,%ebx
1542         pxor    (%esi,%ecx,1),%mm1
1543         pxor    %mm2,%mm0
1544         psrlq   $4,%mm0
1545         andl    $15,%ebx
1546         movq    %mm1,%mm2
1547         psrlq   $4,%mm1
1548         pxor    8(%esi,%edx,1),%mm0
1549         psllq   $60,%mm2
1550         pxor    (%eax,%ebx,8),%mm1
1551         movd    %mm0,%ebx
1552         pxor    (%esi,%edx,1),%mm1
1553         pxor    %mm2,%mm0
1554         psrlq   $32,%mm0
1555         movd    %mm1,%edx
1556         psrlq   $32,%mm1
1557         movd    %mm0,%ecx
1558         movd    %mm1,%ebp
1559         bswap   %ebx
1560         bswap   %edx
1561         bswap   %ecx
1562         bswap   %ebp
1563         emms
1564         movl    %ebx,12(%edi)
1565         movl    %edx,4(%edi)
1566         movl    %ecx,8(%edi)
1567         movl    %ebp,(%edi)
1568         popl    %edi
1569         popl    %esi
1570         popl    %ebx
1571         popl    %ebp
1572         ret
1573 .size   gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
1574 .globl  gcm_ghash_4bit_mmx
1575 .type   gcm_ghash_4bit_mmx,@function
1576 .align  16
1577 gcm_ghash_4bit_mmx:
1578 .L_gcm_ghash_4bit_mmx_begin:
1579         pushl   %ebp
1580         pushl   %ebx
1581         pushl   %esi
1582         pushl   %edi
1583         movl    20(%esp),%eax
1584         movl    24(%esp),%ebx
1585         movl    28(%esp),%ecx
1586         movl    32(%esp),%edx
1587         movl    %esp,%ebp
1588         call    .L008pic_point
1589 .L008pic_point:
1590         popl    %esi
1591         leal    .Lrem_8bit-.L008pic_point(%esi),%esi
1592         subl    $544,%esp
1593         andl    $-64,%esp
1594         subl    $16,%esp
1595         addl    %ecx,%edx
1596         movl    %eax,544(%esp)
1597         movl    %edx,552(%esp)
1598         movl    %ebp,556(%esp)
1599         addl    $128,%ebx
1600         leal    144(%esp),%edi
1601         leal    400(%esp),%ebp
1602         movl    -120(%ebx),%edx
1603         movq    -120(%ebx),%mm0
1604         movq    -128(%ebx),%mm3
1605         shll    $4,%edx
1606         movb    %dl,(%esp)
1607         movl    -104(%ebx),%edx
1608         movq    -104(%ebx),%mm2
1609         movq    -112(%ebx),%mm5
1610         movq    %mm0,-128(%edi)
1611         psrlq   $4,%mm0
1612         movq    %mm3,(%edi)
1613         movq    %mm3,%mm7
1614         psrlq   $4,%mm3
1615         shll    $4,%edx
1616         movb    %dl,1(%esp)
1617         movl    -88(%ebx),%edx
1618         movq    -88(%ebx),%mm1
1619         psllq   $60,%mm7
1620         movq    -96(%ebx),%mm4
1621         por     %mm7,%mm0
1622         movq    %mm2,-120(%edi)
1623         psrlq   $4,%mm2
1624         movq    %mm5,8(%edi)
1625         movq    %mm5,%mm6
1626         movq    %mm0,-128(%ebp)
1627         psrlq   $4,%mm5
1628         movq    %mm3,(%ebp)
1629         shll    $4,%edx
1630         movb    %dl,2(%esp)
1631         movl    -72(%ebx),%edx
1632         movq    -72(%ebx),%mm0
1633         psllq   $60,%mm6
1634         movq    -80(%ebx),%mm3
1635         por     %mm6,%mm2
1636         movq    %mm1,-112(%edi)
1637         psrlq   $4,%mm1
1638         movq    %mm4,16(%edi)
1639         movq    %mm4,%mm7
1640         movq    %mm2,-120(%ebp)
1641         psrlq   $4,%mm4
1642         movq    %mm5,8(%ebp)
1643         shll    $4,%edx
1644         movb    %dl,3(%esp)
1645         movl    -56(%ebx),%edx
1646         movq    -56(%ebx),%mm2
1647         psllq   $60,%mm7
1648         movq    -64(%ebx),%mm5
1649         por     %mm7,%mm1
1650         movq    %mm0,-104(%edi)
1651         psrlq   $4,%mm0
1652         movq    %mm3,24(%edi)
1653         movq    %mm3,%mm6
1654         movq    %mm1,-112(%ebp)
1655         psrlq   $4,%mm3
1656         movq    %mm4,16(%ebp)
1657         shll    $4,%edx
1658         movb    %dl,4(%esp)
1659         movl    -40(%ebx),%edx
1660         movq    -40(%ebx),%mm1
1661         psllq   $60,%mm6
1662         movq    -48(%ebx),%mm4
1663         por     %mm6,%mm0
1664         movq    %mm2,-96(%edi)
1665         psrlq   $4,%mm2
1666         movq    %mm5,32(%edi)
1667         movq    %mm5,%mm7
1668         movq    %mm0,-104(%ebp)
1669         psrlq   $4,%mm5
1670         movq    %mm3,24(%ebp)
1671         shll    $4,%edx
1672         movb    %dl,5(%esp)
1673         movl    -24(%ebx),%edx
1674         movq    -24(%ebx),%mm0
1675         psllq   $60,%mm7
1676         movq    -32(%ebx),%mm3
1677         por     %mm7,%mm2
1678         movq    %mm1,-88(%edi)
1679         psrlq   $4,%mm1
1680         movq    %mm4,40(%edi)
1681         movq    %mm4,%mm6
1682         movq    %mm2,-96(%ebp)
1683         psrlq   $4,%mm4
1684         movq    %mm5,32(%ebp)
1685         shll    $4,%edx
1686         movb    %dl,6(%esp)
1687         movl    -8(%ebx),%edx
1688         movq    -8(%ebx),%mm2
1689         psllq   $60,%mm6
1690         movq    -16(%ebx),%mm5
1691         por     %mm6,%mm1
1692         movq    %mm0,-80(%edi)
1693         psrlq   $4,%mm0
1694         movq    %mm3,48(%edi)
1695         movq    %mm3,%mm7
1696         movq    %mm1,-88(%ebp)
1697         psrlq   $4,%mm3
1698         movq    %mm4,40(%ebp)
1699         shll    $4,%edx
1700         movb    %dl,7(%esp)
1701         movl    8(%ebx),%edx
1702         movq    8(%ebx),%mm1
1703         psllq   $60,%mm7
1704         movq    (%ebx),%mm4
1705         por     %mm7,%mm0
1706         movq    %mm2,-72(%edi)
1707         psrlq   $4,%mm2
1708         movq    %mm5,56(%edi)
1709         movq    %mm5,%mm6
1710         movq    %mm0,-80(%ebp)
1711         psrlq   $4,%mm5
1712         movq    %mm3,48(%ebp)
1713         shll    $4,%edx
1714         movb    %dl,8(%esp)
1715         movl    24(%ebx),%edx
1716         movq    24(%ebx),%mm0
1717         psllq   $60,%mm6
1718         movq    16(%ebx),%mm3
1719         por     %mm6,%mm2
1720         movq    %mm1,-64(%edi)
1721         psrlq   $4,%mm1
1722         movq    %mm4,64(%edi)
1723         movq    %mm4,%mm7
1724         movq    %mm2,-72(%ebp)
1725         psrlq   $4,%mm4
1726         movq    %mm5,56(%ebp)
1727         shll    $4,%edx
1728         movb    %dl,9(%esp)
1729         movl    40(%ebx),%edx
1730         movq    40(%ebx),%mm2
1731         psllq   $60,%mm7
1732         movq    32(%ebx),%mm5
1733         por     %mm7,%mm1
1734         movq    %mm0,-56(%edi)
1735         psrlq   $4,%mm0
1736         movq    %mm3,72(%edi)
1737         movq    %mm3,%mm6
1738         movq    %mm1,-64(%ebp)
1739         psrlq   $4,%mm3
1740         movq    %mm4,64(%ebp)
1741         shll    $4,%edx
1742         movb    %dl,10(%esp)
1743         movl    56(%ebx),%edx
1744         movq    56(%ebx),%mm1
1745         psllq   $60,%mm6
1746         movq    48(%ebx),%mm4
1747         por     %mm6,%mm0
1748         movq    %mm2,-48(%edi)
1749         psrlq   $4,%mm2
1750         movq    %mm5,80(%edi)
1751         movq    %mm5,%mm7
1752         movq    %mm0,-56(%ebp)
1753         psrlq   $4,%mm5
1754         movq    %mm3,72(%ebp)
1755         shll    $4,%edx
1756         movb    %dl,11(%esp)
1757         movl    72(%ebx),%edx
1758         movq    72(%ebx),%mm0
1759         psllq   $60,%mm7
1760         movq    64(%ebx),%mm3
1761         por     %mm7,%mm2
1762         movq    %mm1,-40(%edi)
1763         psrlq   $4,%mm1
1764         movq    %mm4,88(%edi)
1765         movq    %mm4,%mm6
1766         movq    %mm2,-48(%ebp)
1767         psrlq   $4,%mm4
1768         movq    %mm5,80(%ebp)
1769         shll    $4,%edx
1770         movb    %dl,12(%esp)
1771         movl    88(%ebx),%edx
1772         movq    88(%ebx),%mm2
1773         psllq   $60,%mm6
1774         movq    80(%ebx),%mm5
1775         por     %mm6,%mm1
1776         movq    %mm0,-32(%edi)
1777         psrlq   $4,%mm0
1778         movq    %mm3,96(%edi)
1779         movq    %mm3,%mm7
1780         movq    %mm1,-40(%ebp)
1781         psrlq   $4,%mm3
1782         movq    %mm4,88(%ebp)
1783         shll    $4,%edx
1784         movb    %dl,13(%esp)
1785         movl    104(%ebx),%edx
1786         movq    104(%ebx),%mm1
1787         psllq   $60,%mm7
1788         movq    96(%ebx),%mm4
1789         por     %mm7,%mm0
1790         movq    %mm2,-24(%edi)
1791         psrlq   $4,%mm2
1792         movq    %mm5,104(%edi)
1793         movq    %mm5,%mm6
1794         movq    %mm0,-32(%ebp)
1795         psrlq   $4,%mm5
1796         movq    %mm3,96(%ebp)
1797         shll    $4,%edx
1798         movb    %dl,14(%esp)
1799         movl    120(%ebx),%edx
1800         movq    120(%ebx),%mm0
1801         psllq   $60,%mm6
1802         movq    112(%ebx),%mm3
1803         por     %mm6,%mm2
1804         movq    %mm1,-16(%edi)
1805         psrlq   $4,%mm1
1806         movq    %mm4,112(%edi)
1807         movq    %mm4,%mm7
1808         movq    %mm2,-24(%ebp)
1809         psrlq   $4,%mm4
1810         movq    %mm5,104(%ebp)
1811         shll    $4,%edx
1812         movb    %dl,15(%esp)
1813         psllq   $60,%mm7
1814         por     %mm7,%mm1
1815         movq    %mm0,-8(%edi)
1816         psrlq   $4,%mm0
1817         movq    %mm3,120(%edi)
1818         movq    %mm3,%mm6
1819         movq    %mm1,-16(%ebp)
1820         psrlq   $4,%mm3
1821         movq    %mm4,112(%ebp)
1822         psllq   $60,%mm6
1823         por     %mm6,%mm0
1824         movq    %mm0,-8(%ebp)
1825         movq    %mm3,120(%ebp)
1826         movq    (%eax),%mm6
1827         movl    8(%eax),%ebx
1828         movl    12(%eax),%edx
1829 .align  16
1830 .L009outer:
1831         xorl    12(%ecx),%edx
1832         xorl    8(%ecx),%ebx
1833         pxor    (%ecx),%mm6
1834         leal    16(%ecx),%ecx
1835         movl    %ebx,536(%esp)
1836         movq    %mm6,528(%esp)
1837         movl    %ecx,548(%esp)
1838         xorl    %eax,%eax
1839         roll    $8,%edx
1840         movb    %dl,%al
1841         movl    %eax,%ebp
1842         andb    $15,%al
1843         shrl    $4,%ebp
1844         pxor    %mm0,%mm0
1845         roll    $8,%edx
1846         pxor    %mm1,%mm1
1847         pxor    %mm2,%mm2
1848         movq    16(%esp,%eax,8),%mm7
1849         movq    144(%esp,%eax,8),%mm6
1850         movb    %dl,%al
1851         movd    %mm7,%ebx
1852         psrlq   $8,%mm7
1853         movq    %mm6,%mm3
1854         movl    %eax,%edi
1855         psrlq   $8,%mm6
1856         pxor    272(%esp,%ebp,8),%mm7
1857         andb    $15,%al
1858         psllq   $56,%mm3
1859         shrl    $4,%edi
1860         pxor    16(%esp,%eax,8),%mm7
1861         roll    $8,%edx
1862         pxor    144(%esp,%eax,8),%mm6
1863         pxor    %mm3,%mm7
1864         pxor    400(%esp,%ebp,8),%mm6
1865         xorb    (%esp,%ebp,1),%bl
1866         movb    %dl,%al
1867         movd    %mm7,%ecx
1868         movzbl  %bl,%ebx
1869         psrlq   $8,%mm7
1870         movq    %mm6,%mm3
1871         movl    %eax,%ebp
1872         psrlq   $8,%mm6
1873         pxor    272(%esp,%edi,8),%mm7
1874         andb    $15,%al
1875         psllq   $56,%mm3
1876         shrl    $4,%ebp
1877         pinsrw  $2,(%esi,%ebx,2),%mm2
1878         pxor    16(%esp,%eax,8),%mm7
1879         roll    $8,%edx
1880         pxor    144(%esp,%eax,8),%mm6
1881         pxor    %mm3,%mm7
1882         pxor    400(%esp,%edi,8),%mm6
1883         xorb    (%esp,%edi,1),%cl
1884         movb    %dl,%al
1885         movl    536(%esp),%edx
1886         movd    %mm7,%ebx
1887         movzbl  %cl,%ecx
1888         psrlq   $8,%mm7
1889         movq    %mm6,%mm3
1890         movl    %eax,%edi
1891         psrlq   $8,%mm6
1892         pxor    272(%esp,%ebp,8),%mm7
1893         andb    $15,%al
1894         psllq   $56,%mm3
1895         pxor    %mm2,%mm6
1896         shrl    $4,%edi
1897         pinsrw  $2,(%esi,%ecx,2),%mm1
1898         pxor    16(%esp,%eax,8),%mm7
1899         roll    $8,%edx
1900         pxor    144(%esp,%eax,8),%mm6
1901         pxor    %mm3,%mm7
1902         pxor    400(%esp,%ebp,8),%mm6
1903         xorb    (%esp,%ebp,1),%bl
1904         movb    %dl,%al
1905         movd    %mm7,%ecx
1906         movzbl  %bl,%ebx
1907         psrlq   $8,%mm7
1908         movq    %mm6,%mm3
1909         movl    %eax,%ebp
1910         psrlq   $8,%mm6
1911         pxor    272(%esp,%edi,8),%mm7
1912         andb    $15,%al
1913         psllq   $56,%mm3
1914         pxor    %mm1,%mm6
1915         shrl    $4,%ebp
1916         pinsrw  $2,(%esi,%ebx,2),%mm0
1917         pxor    16(%esp,%eax,8),%mm7
1918         roll    $8,%edx
1919         pxor    144(%esp,%eax,8),%mm6
1920         pxor    %mm3,%mm7
1921         pxor    400(%esp,%edi,8),%mm6
1922         xorb    (%esp,%edi,1),%cl
1923         movb    %dl,%al
1924         movd    %mm7,%ebx
1925         movzbl  %cl,%ecx
1926         psrlq   $8,%mm7
1927         movq    %mm6,%mm3
1928         movl    %eax,%edi
1929         psrlq   $8,%mm6
1930         pxor    272(%esp,%ebp,8),%mm7
1931         andb    $15,%al
1932         psllq   $56,%mm3
1933         pxor    %mm0,%mm6
1934         shrl    $4,%edi
1935         pinsrw  $2,(%esi,%ecx,2),%mm2
1936         pxor    16(%esp,%eax,8),%mm7
1937         roll    $8,%edx
1938         pxor    144(%esp,%eax,8),%mm6
1939         pxor    %mm3,%mm7
1940         pxor    400(%esp,%ebp,8),%mm6
1941         xorb    (%esp,%ebp,1),%bl
1942         movb    %dl,%al
1943         movd    %mm7,%ecx
1944         movzbl  %bl,%ebx
1945         psrlq   $8,%mm7
1946         movq    %mm6,%mm3
1947         movl    %eax,%ebp
1948         psrlq   $8,%mm6
1949         pxor    272(%esp,%edi,8),%mm7
1950         andb    $15,%al
1951         psllq   $56,%mm3
1952         pxor    %mm2,%mm6
1953         shrl    $4,%ebp
1954         pinsrw  $2,(%esi,%ebx,2),%mm1
1955         pxor    16(%esp,%eax,8),%mm7
1956         roll    $8,%edx
1957         pxor    144(%esp,%eax,8),%mm6
1958         pxor    %mm3,%mm7
1959         pxor    400(%esp,%edi,8),%mm6
1960         xorb    (%esp,%edi,1),%cl
1961         movb    %dl,%al
1962         movl    532(%esp),%edx
1963         movd    %mm7,%ebx
1964         movzbl  %cl,%ecx
1965         psrlq   $8,%mm7
1966         movq    %mm6,%mm3
1967         movl    %eax,%edi
1968         psrlq   $8,%mm6
1969         pxor    272(%esp,%ebp,8),%mm7
1970         andb    $15,%al
1971         psllq   $56,%mm3
1972         pxor    %mm1,%mm6
1973         shrl    $4,%edi
1974         pinsrw  $2,(%esi,%ecx,2),%mm0
1975         pxor    16(%esp,%eax,8),%mm7
1976         roll    $8,%edx
1977         pxor    144(%esp,%eax,8),%mm6
1978         pxor    %mm3,%mm7
1979         pxor    400(%esp,%ebp,8),%mm6
1980         xorb    (%esp,%ebp,1),%bl
1981         movb    %dl,%al
1982         movd    %mm7,%ecx
1983         movzbl  %bl,%ebx
1984         psrlq   $8,%mm7
1985         movq    %mm6,%mm3
1986         movl    %eax,%ebp
1987         psrlq   $8,%mm6
1988         pxor    272(%esp,%edi,8),%mm7
1989         andb    $15,%al
1990         psllq   $56,%mm3
1991         pxor    %mm0,%mm6
1992         shrl    $4,%ebp
1993         pinsrw  $2,(%esi,%ebx,2),%mm2
1994         pxor    16(%esp,%eax,8),%mm7
1995         roll    $8,%edx
1996         pxor    144(%esp,%eax,8),%mm6
1997         pxor    %mm3,%mm7
1998         pxor    400(%esp,%edi,8),%mm6
1999         xorb    (%esp,%edi,1),%cl
2000         movb    %dl,%al
2001         movd    %mm7,%ebx
2002         movzbl  %cl,%ecx
2003         psrlq   $8,%mm7
2004         movq    %mm6,%mm3
2005         movl    %eax,%edi
2006         psrlq   $8,%mm6
2007         pxor    272(%esp,%ebp,8),%mm7
2008         andb    $15,%al
2009         psllq   $56,%mm3
2010         pxor    %mm2,%mm6
2011         shrl    $4,%edi
2012         pinsrw  $2,(%esi,%ecx,2),%mm1
2013         pxor    16(%esp,%eax,8),%mm7
2014         roll    $8,%edx
2015         pxor    144(%esp,%eax,8),%mm6
2016         pxor    %mm3,%mm7
2017         pxor    400(%esp,%ebp,8),%mm6
2018         xorb    (%esp,%ebp,1),%bl
2019         movb    %dl,%al
2020         movd    %mm7,%ecx
2021         movzbl  %bl,%ebx
2022         psrlq   $8,%mm7
2023         movq    %mm6,%mm3
2024         movl    %eax,%ebp
2025         psrlq   $8,%mm6
2026         pxor    272(%esp,%edi,8),%mm7
2027         andb    $15,%al
2028         psllq   $56,%mm3
2029         pxor    %mm1,%mm6
2030         shrl    $4,%ebp
2031         pinsrw  $2,(%esi,%ebx,2),%mm0
2032         pxor    16(%esp,%eax,8),%mm7
2033         roll    $8,%edx
2034         pxor    144(%esp,%eax,8),%mm6
2035         pxor    %mm3,%mm7
2036         pxor    400(%esp,%edi,8),%mm6
2037         xorb    (%esp,%edi,1),%cl
2038         movb    %dl,%al
2039         movl    528(%esp),%edx
2040         movd    %mm7,%ebx
2041         movzbl  %cl,%ecx
2042         psrlq   $8,%mm7
2043         movq    %mm6,%mm3
2044         movl    %eax,%edi
2045         psrlq   $8,%mm6
2046         pxor    272(%esp,%ebp,8),%mm7
2047         andb    $15,%al
2048         psllq   $56,%mm3
2049         pxor    %mm0,%mm6
2050         shrl    $4,%edi
2051         pinsrw  $2,(%esi,%ecx,2),%mm2
2052         pxor    16(%esp,%eax,8),%mm7
2053         roll    $8,%edx
2054         pxor    144(%esp,%eax,8),%mm6
2055         pxor    %mm3,%mm7
2056         pxor    400(%esp,%ebp,8),%mm6
2057         xorb    (%esp,%ebp,1),%bl
2058         movb    %dl,%al
2059         movd    %mm7,%ecx
2060         movzbl  %bl,%ebx
2061         psrlq   $8,%mm7
2062         movq    %mm6,%mm3
2063         movl    %eax,%ebp
2064         psrlq   $8,%mm6
2065         pxor    272(%esp,%edi,8),%mm7
2066         andb    $15,%al
2067         psllq   $56,%mm3
2068         pxor    %mm2,%mm6
2069         shrl    $4,%ebp
2070         pinsrw  $2,(%esi,%ebx,2),%mm1
2071         pxor    16(%esp,%eax,8),%mm7
2072         roll    $8,%edx
2073         pxor    144(%esp,%eax,8),%mm6
2074         pxor    %mm3,%mm7
2075         pxor    400(%esp,%edi,8),%mm6
2076         xorb    (%esp,%edi,1),%cl
2077         movb    %dl,%al
2078         movd    %mm7,%ebx
2079         movzbl  %cl,%ecx
2080         psrlq   $8,%mm7
2081         movq    %mm6,%mm3
2082         movl    %eax,%edi
2083         psrlq   $8,%mm6
2084         pxor    272(%esp,%ebp,8),%mm7
2085         andb    $15,%al
2086         psllq   $56,%mm3
2087         pxor    %mm1,%mm6
2088         shrl    $4,%edi
2089         pinsrw  $2,(%esi,%ecx,2),%mm0
2090         pxor    16(%esp,%eax,8),%mm7
2091         roll    $8,%edx
2092         pxor    144(%esp,%eax,8),%mm6
2093         pxor    %mm3,%mm7
2094         pxor    400(%esp,%ebp,8),%mm6
2095         xorb    (%esp,%ebp,1),%bl
2096         movb    %dl,%al
2097         movd    %mm7,%ecx
2098         movzbl  %bl,%ebx
2099         psrlq   $8,%mm7
2100         movq    %mm6,%mm3
2101         movl    %eax,%ebp
2102         psrlq   $8,%mm6
2103         pxor    272(%esp,%edi,8),%mm7
2104         andb    $15,%al
2105         psllq   $56,%mm3
2106         pxor    %mm0,%mm6
2107         shrl    $4,%ebp
2108         pinsrw  $2,(%esi,%ebx,2),%mm2
2109         pxor    16(%esp,%eax,8),%mm7
2110         roll    $8,%edx
2111         pxor    144(%esp,%eax,8),%mm6
2112         pxor    %mm3,%mm7
2113         pxor    400(%esp,%edi,8),%mm6
2114         xorb    (%esp,%edi,1),%cl
2115         movb    %dl,%al
2116         movl    524(%esp),%edx
2117         movd    %mm7,%ebx
2118         movzbl  %cl,%ecx
2119         psrlq   $8,%mm7
2120         movq    %mm6,%mm3
2121         movl    %eax,%edi
2122         psrlq   $8,%mm6
2123         pxor    272(%esp,%ebp,8),%mm7
2124         andb    $15,%al
2125         psllq   $56,%mm3
2126         pxor    %mm2,%mm6
2127         shrl    $4,%edi
2128         pinsrw  $2,(%esi,%ecx,2),%mm1
2129         pxor    16(%esp,%eax,8),%mm7
2130         pxor    144(%esp,%eax,8),%mm6
2131         xorb    (%esp,%ebp,1),%bl
2132         pxor    %mm3,%mm7
2133         pxor    400(%esp,%ebp,8),%mm6
2134         movzbl  %bl,%ebx
2135         pxor    %mm2,%mm2
2136         psllq   $4,%mm1
2137         movd    %mm7,%ecx
2138         psrlq   $4,%mm7
2139         movq    %mm6,%mm3
2140         psrlq   $4,%mm6
2141         shll    $4,%ecx
2142         pxor    16(%esp,%edi,8),%mm7
2143         psllq   $60,%mm3
2144         movzbl  %cl,%ecx
2145         pxor    %mm3,%mm7
2146         pxor    144(%esp,%edi,8),%mm6
2147         pinsrw  $2,(%esi,%ebx,2),%mm0
2148         pxor    %mm1,%mm6
2149         movd    %mm7,%edx
2150         pinsrw  $3,(%esi,%ecx,2),%mm2
2151         psllq   $12,%mm0
2152         pxor    %mm0,%mm6
2153         psrlq   $32,%mm7
2154         pxor    %mm2,%mm6
2155         movl    548(%esp),%ecx
2156         movd    %mm7,%ebx
2157         movq    %mm6,%mm3
2158         psllw   $8,%mm6
2159         psrlw   $8,%mm3
2160         por     %mm3,%mm6
2161         bswap   %edx
2162         pshufw  $27,%mm6,%mm6
2163         bswap   %ebx
2164         cmpl    552(%esp),%ecx
2165         jne     .L009outer
2166         movl    544(%esp),%eax
2167         movl    %edx,12(%eax)
2168         movl    %ebx,8(%eax)
2169         movq    %mm6,(%eax)
2170         movl    556(%esp),%esp
2171         emms
2172         popl    %edi
2173         popl    %esi
2174         popl    %ebx
2175         popl    %ebp
2176         ret
2177 .size   gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
2178 .globl  gcm_init_clmul
2179 .type   gcm_init_clmul,@function
2180 .align  16
2181 gcm_init_clmul:
2182 .L_gcm_init_clmul_begin:
2183         movl    4(%esp),%edx
2184         movl    8(%esp),%eax
2185         call    .L010pic
2186 .L010pic:
2187         popl    %ecx
2188         leal    .Lbswap-.L010pic(%ecx),%ecx
2189         movdqu  (%eax),%xmm2
2190         pshufd  $78,%xmm2,%xmm2
2191         pshufd  $255,%xmm2,%xmm4
2192         movdqa  %xmm2,%xmm3
2193         psllq   $1,%xmm2
2194         pxor    %xmm5,%xmm5
2195         psrlq   $63,%xmm3
2196         pcmpgtd %xmm4,%xmm5
2197         pslldq  $8,%xmm3
2198         por     %xmm3,%xmm2
2199         pand    16(%ecx),%xmm5
2200         pxor    %xmm5,%xmm2
2201         movdqa  %xmm2,%xmm0
2202         movdqa  %xmm0,%xmm1
2203         pshufd  $78,%xmm0,%xmm3
2204         pshufd  $78,%xmm2,%xmm4
2205         pxor    %xmm0,%xmm3
2206         pxor    %xmm2,%xmm4
2207 .byte   102,15,58,68,194,0
2208 .byte   102,15,58,68,202,17
2209 .byte   102,15,58,68,220,0
2210         xorps   %xmm0,%xmm3
2211         xorps   %xmm1,%xmm3
2212         movdqa  %xmm3,%xmm4
2213         psrldq  $8,%xmm3
2214         pslldq  $8,%xmm4
2215         pxor    %xmm3,%xmm1
2216         pxor    %xmm4,%xmm0
2217         movdqa  %xmm0,%xmm4
2218         movdqa  %xmm0,%xmm3
2219         psllq   $5,%xmm0
2220         pxor    %xmm0,%xmm3
2221         psllq   $1,%xmm0
2222         pxor    %xmm3,%xmm0
2223         psllq   $57,%xmm0
2224         movdqa  %xmm0,%xmm3
2225         pslldq  $8,%xmm0
2226         psrldq  $8,%xmm3
2227         pxor    %xmm4,%xmm0
2228         pxor    %xmm3,%xmm1
2229         movdqa  %xmm0,%xmm4
2230         psrlq   $1,%xmm0
2231         pxor    %xmm4,%xmm1
2232         pxor    %xmm0,%xmm4
2233         psrlq   $5,%xmm0
2234         pxor    %xmm4,%xmm0
2235         psrlq   $1,%xmm0
2236         pxor    %xmm1,%xmm0
2237         pshufd  $78,%xmm2,%xmm3
2238         pshufd  $78,%xmm0,%xmm4
2239         pxor    %xmm2,%xmm3
2240         movdqu  %xmm2,(%edx)
2241         pxor    %xmm0,%xmm4
2242         movdqu  %xmm0,16(%edx)
2243 .byte   102,15,58,15,227,8
2244         movdqu  %xmm4,32(%edx)
2245         ret
2246 .size   gcm_init_clmul,.-.L_gcm_init_clmul_begin
2247 .globl  gcm_gmult_clmul
2248 .type   gcm_gmult_clmul,@function
2249 .align  16
2250 gcm_gmult_clmul:
2251 .L_gcm_gmult_clmul_begin:
2252         movl    4(%esp),%eax
2253         movl    8(%esp),%edx
2254         call    .L011pic
2255 .L011pic:
2256         popl    %ecx
2257         leal    .Lbswap-.L011pic(%ecx),%ecx
2258         movdqu  (%eax),%xmm0
2259         movdqa  (%ecx),%xmm5
2260         movups  (%edx),%xmm2
2261 .byte   102,15,56,0,197
2262         movups  32(%edx),%xmm4
2263         movdqa  %xmm0,%xmm1
2264         pshufd  $78,%xmm0,%xmm3
2265         pxor    %xmm0,%xmm3
2266 .byte   102,15,58,68,194,0
2267 .byte   102,15,58,68,202,17
2268 .byte   102,15,58,68,220,0
2269         xorps   %xmm0,%xmm3
2270         xorps   %xmm1,%xmm3
2271         movdqa  %xmm3,%xmm4
2272         psrldq  $8,%xmm3
2273         pslldq  $8,%xmm4
2274         pxor    %xmm3,%xmm1
2275         pxor    %xmm4,%xmm0
2276         movdqa  %xmm0,%xmm4
2277         movdqa  %xmm0,%xmm3
2278         psllq   $5,%xmm0
2279         pxor    %xmm0,%xmm3
2280         psllq   $1,%xmm0
2281         pxor    %xmm3,%xmm0
2282         psllq   $57,%xmm0
2283         movdqa  %xmm0,%xmm3
2284         pslldq  $8,%xmm0
2285         psrldq  $8,%xmm3
2286         pxor    %xmm4,%xmm0
2287         pxor    %xmm3,%xmm1
2288         movdqa  %xmm0,%xmm4
2289         psrlq   $1,%xmm0
2290         pxor    %xmm4,%xmm1
2291         pxor    %xmm0,%xmm4
2292         psrlq   $5,%xmm0
2293         pxor    %xmm4,%xmm0
2294         psrlq   $1,%xmm0
2295         pxor    %xmm1,%xmm0
2296 .byte   102,15,56,0,197
2297         movdqu  %xmm0,(%eax)
2298         ret
2299 .size   gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
2300 .globl  gcm_ghash_clmul
2301 .type   gcm_ghash_clmul,@function
2302 .align  16
2303 gcm_ghash_clmul:
2304 .L_gcm_ghash_clmul_begin:
2305         pushl   %ebp
2306         pushl   %ebx
2307         pushl   %esi
2308         pushl   %edi
2309         movl    20(%esp),%eax
2310         movl    24(%esp),%edx
2311         movl    28(%esp),%esi
2312         movl    32(%esp),%ebx
2313         call    .L012pic
2314 .L012pic:
2315         popl    %ecx
2316         leal    .Lbswap-.L012pic(%ecx),%ecx
2317         movdqu  (%eax),%xmm0
2318         movdqa  (%ecx),%xmm5
2319         movdqu  (%edx),%xmm2
2320 .byte   102,15,56,0,197
2321         subl    $16,%ebx
2322         jz      .L013odd_tail
2323         movdqu  (%esi),%xmm3
2324         movdqu  16(%esi),%xmm6
2325 .byte   102,15,56,0,221
2326 .byte   102,15,56,0,245
2327         movdqu  32(%edx),%xmm5
2328         pxor    %xmm3,%xmm0
2329         pshufd  $78,%xmm6,%xmm3
2330         movdqa  %xmm6,%xmm7
2331         pxor    %xmm6,%xmm3
2332         leal    32(%esi),%esi
2333 .byte   102,15,58,68,242,0
2334 .byte   102,15,58,68,250,17
2335 .byte   102,15,58,68,221,0
2336         movups  16(%edx),%xmm2
2337         nop
2338         subl    $32,%ebx
2339         jbe     .L014even_tail
2340         jmp     .L015mod_loop
2341 .align  32
2342 .L015mod_loop:
2343         pshufd  $78,%xmm0,%xmm4
2344         movdqa  %xmm0,%xmm1
2345         pxor    %xmm0,%xmm4
2346         nop
2347 .byte   102,15,58,68,194,0
2348 .byte   102,15,58,68,202,17
2349 .byte   102,15,58,68,229,16
2350         movups  (%edx),%xmm2
2351         xorps   %xmm6,%xmm0
2352         movdqa  (%ecx),%xmm5
2353         xorps   %xmm7,%xmm1
2354         movdqu  (%esi),%xmm7
2355         pxor    %xmm0,%xmm3
2356         movdqu  16(%esi),%xmm6
2357         pxor    %xmm1,%xmm3
2358 .byte   102,15,56,0,253
2359         pxor    %xmm3,%xmm4
2360         movdqa  %xmm4,%xmm3
2361         psrldq  $8,%xmm4
2362         pslldq  $8,%xmm3
2363         pxor    %xmm4,%xmm1
2364         pxor    %xmm3,%xmm0
2365 .byte   102,15,56,0,245
2366         pxor    %xmm7,%xmm1
2367         movdqa  %xmm6,%xmm7
2368         movdqa  %xmm0,%xmm4
2369         movdqa  %xmm0,%xmm3
2370         psllq   $5,%xmm0
2371         pxor    %xmm0,%xmm3
2372         psllq   $1,%xmm0
2373         pxor    %xmm3,%xmm0
2374 .byte   102,15,58,68,242,0
2375         movups  32(%edx),%xmm5
2376         psllq   $57,%xmm0
2377         movdqa  %xmm0,%xmm3
2378         pslldq  $8,%xmm0
2379         psrldq  $8,%xmm3
2380         pxor    %xmm4,%xmm0
2381         pxor    %xmm3,%xmm1
2382         pshufd  $78,%xmm7,%xmm3
2383         movdqa  %xmm0,%xmm4
2384         psrlq   $1,%xmm0
2385         pxor    %xmm7,%xmm3
2386         pxor    %xmm4,%xmm1
2387 .byte   102,15,58,68,250,17
2388         movups  16(%edx),%xmm2
2389         pxor    %xmm0,%xmm4
2390         psrlq   $5,%xmm0
2391         pxor    %xmm4,%xmm0
2392         psrlq   $1,%xmm0
2393         pxor    %xmm1,%xmm0
2394 .byte   102,15,58,68,221,0
2395         leal    32(%esi),%esi
2396         subl    $32,%ebx
2397         ja      .L015mod_loop
2398 .L014even_tail:
2399         pshufd  $78,%xmm0,%xmm4
2400         movdqa  %xmm0,%xmm1
2401         pxor    %xmm0,%xmm4
2402 .byte   102,15,58,68,194,0
2403 .byte   102,15,58,68,202,17
2404 .byte   102,15,58,68,229,16
2405         movdqa  (%ecx),%xmm5
2406         xorps   %xmm6,%xmm0
2407         xorps   %xmm7,%xmm1
2408         pxor    %xmm0,%xmm3
2409         pxor    %xmm1,%xmm3
2410         pxor    %xmm3,%xmm4
2411         movdqa  %xmm4,%xmm3
2412         psrldq  $8,%xmm4
2413         pslldq  $8,%xmm3
2414         pxor    %xmm4,%xmm1
2415         pxor    %xmm3,%xmm0
2416         movdqa  %xmm0,%xmm4
2417         movdqa  %xmm0,%xmm3
2418         psllq   $5,%xmm0
2419         pxor    %xmm0,%xmm3
2420         psllq   $1,%xmm0
2421         pxor    %xmm3,%xmm0
2422         psllq   $57,%xmm0
2423         movdqa  %xmm0,%xmm3
2424         pslldq  $8,%xmm0
2425         psrldq  $8,%xmm3
2426         pxor    %xmm4,%xmm0
2427         pxor    %xmm3,%xmm1
2428         movdqa  %xmm0,%xmm4
2429         psrlq   $1,%xmm0
2430         pxor    %xmm4,%xmm1
2431         pxor    %xmm0,%xmm4
2432         psrlq   $5,%xmm0
2433         pxor    %xmm4,%xmm0
2434         psrlq   $1,%xmm0
2435         pxor    %xmm1,%xmm0
2436         testl   %ebx,%ebx
2437         jnz     .L016done
2438         movups  (%edx),%xmm2
2439 .L013odd_tail:
2440         movdqu  (%esi),%xmm3
2441 .byte   102,15,56,0,221
2442         pxor    %xmm3,%xmm0
2443         movdqa  %xmm0,%xmm1
2444         pshufd  $78,%xmm0,%xmm3
2445         pshufd  $78,%xmm2,%xmm4
2446         pxor    %xmm0,%xmm3
2447         pxor    %xmm2,%xmm4
2448 .byte   102,15,58,68,194,0
2449 .byte   102,15,58,68,202,17
2450 .byte   102,15,58,68,220,0
2451         xorps   %xmm0,%xmm3
2452         xorps   %xmm1,%xmm3
2453         movdqa  %xmm3,%xmm4
2454         psrldq  $8,%xmm3
2455         pslldq  $8,%xmm4
2456         pxor    %xmm3,%xmm1
2457         pxor    %xmm4,%xmm0
2458         movdqa  %xmm0,%xmm4
2459         movdqa  %xmm0,%xmm3
2460         psllq   $5,%xmm0
2461         pxor    %xmm0,%xmm3
2462         psllq   $1,%xmm0
2463         pxor    %xmm3,%xmm0
2464         psllq   $57,%xmm0
2465         movdqa  %xmm0,%xmm3
2466         pslldq  $8,%xmm0
2467         psrldq  $8,%xmm3
2468         pxor    %xmm4,%xmm0
2469         pxor    %xmm3,%xmm1
2470         movdqa  %xmm0,%xmm4
2471         psrlq   $1,%xmm0
2472         pxor    %xmm4,%xmm1
2473         pxor    %xmm0,%xmm4
2474         psrlq   $5,%xmm0
2475         pxor    %xmm4,%xmm0
2476         psrlq   $1,%xmm0
2477         pxor    %xmm1,%xmm0
2478 .L016done:
2479 .byte   102,15,56,0,197
2480         movdqu  %xmm0,(%eax)
2481         popl    %edi
2482         popl    %esi
2483         popl    %ebx
2484         popl    %ebp
2485         ret
2486 .size   gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
2487 .align  64
2488 .Lbswap:
2489 .byte   15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
2490 .byte   1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
2491 .align  64
2492 .Lrem_8bit:
2493 .value  0,450,900,582,1800,1738,1164,1358
2494 .value  3600,4050,3476,3158,2328,2266,2716,2910
2495 .value  7200,7650,8100,7782,6952,6890,6316,6510
2496 .value  4656,5106,4532,4214,5432,5370,5820,6014
2497 .value  14400,14722,15300,14854,16200,16010,15564,15630
2498 .value  13904,14226,13780,13334,12632,12442,13020,13086
2499 .value  9312,9634,10212,9766,9064,8874,8428,8494
2500 .value  10864,11186,10740,10294,11640,11450,12028,12094
2501 .value  28800,28994,29444,29382,30600,30282,29708,30158
2502 .value  32400,32594,32020,31958,31128,30810,31260,31710
2503 .value  27808,28002,28452,28390,27560,27242,26668,27118
2504 .value  25264,25458,24884,24822,26040,25722,26172,26622
2505 .value  18624,18690,19268,19078,20424,19978,19532,19854
2506 .value  18128,18194,17748,17558,16856,16410,16988,17310
2507 .value  21728,21794,22372,22182,21480,21034,20588,20910
2508 .value  23280,23346,22900,22710,24056,23610,24188,24510
2509 .value  57600,57538,57988,58182,58888,59338,58764,58446
2510 .value  61200,61138,60564,60758,59416,59866,60316,59998
2511 .value  64800,64738,65188,65382,64040,64490,63916,63598
2512 .value  62256,62194,61620,61814,62520,62970,63420,63102
2513 .value  55616,55426,56004,56070,56904,57226,56780,56334
2514 .value  55120,54930,54484,54550,53336,53658,54236,53790
2515 .value  50528,50338,50916,50982,49768,50090,49644,49198
2516 .value  52080,51890,51444,51510,52344,52666,53244,52798
2517 .value  37248,36930,37380,37830,38536,38730,38156,38094
2518 .value  40848,40530,39956,40406,39064,39258,39708,39646
2519 .value  36256,35938,36388,36838,35496,35690,35116,35054
2520 .value  33712,33394,32820,33270,33976,34170,34620,34558
2521 .value  43456,43010,43588,43910,44744,44810,44364,44174
2522 .value  42960,42514,42068,42390,41176,41242,41820,41630
2523 .value  46560,46114,46692,47014,45800,45866,45420,45230
2524 .value  48112,47666,47220,47542,48376,48442,49020,48830
2525 .align  64
2526 .Lrem_4bit:
2527 .long   0,0,0,471859200,0,943718400,0,610271232
2528 .long   0,1887436800,0,1822425088,0,1220542464,0,1423966208
2529 .long   0,3774873600,0,4246732800,0,3644850176,0,3311403008
2530 .long   0,2441084928,0,2376073216,0,2847932416,0,3051356160
2531 .byte   71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
2532 .byte   82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
2533 .byte   112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
2534 .byte   0
2535 #endif