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