]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/i386/vpaes-x86.S
Import DTS files from Linux 5.2
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / i386 / vpaes-x86.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from vpaes-x86.pl. */
3 #ifdef PIC
4 .text
5 .align  64
6 .L_vpaes_consts:
7 .long   218628480,235210255,168496130,67568393
8 .long   252381056,17041926,33884169,51187212
9 .long   252645135,252645135,252645135,252645135
10 .long   1512730624,3266504856,1377990664,3401244816
11 .long   830229760,1275146365,2969422977,3447763452
12 .long   3411033600,2979783055,338359620,2782886510
13 .long   4209124096,907596821,221174255,1006095553
14 .long   191964160,3799684038,3164090317,1589111125
15 .long   182528256,1777043520,2877432650,3265356744
16 .long   1874708224,3503451415,3305285752,363511674
17 .long   1606117888,3487855781,1093350906,2384367825
18 .long   197121,67569157,134941193,202313229
19 .long   67569157,134941193,202313229,197121
20 .long   134941193,202313229,197121,67569157
21 .long   202313229,197121,67569157,134941193
22 .long   33619971,100992007,168364043,235736079
23 .long   235736079,33619971,100992007,168364043
24 .long   168364043,235736079,33619971,100992007
25 .long   100992007,168364043,235736079,33619971
26 .long   50462976,117835012,185207048,252579084
27 .long   252314880,51251460,117574920,184942860
28 .long   184682752,252054788,50987272,118359308
29 .long   118099200,185467140,251790600,50727180
30 .long   2946363062,528716217,1300004225,1881839624
31 .long   1532713819,1532713819,1532713819,1532713819
32 .long   3602276352,4288629033,3737020424,4153884961
33 .long   1354558464,32357713,2958822624,3775749553
34 .long   1201988352,132424512,1572796698,503232858
35 .long   2213177600,1597421020,4103937655,675398315
36 .long   2749646592,4273543773,1511898873,121693092
37 .long   3040248576,1103263732,2871565598,1608280554
38 .long   2236667136,2588920351,482954393,64377734
39 .long   3069987328,291237287,2117370568,3650299247
40 .long   533321216,3573750986,2572112006,1401264716
41 .long   1339849704,2721158661,548607111,3445553514
42 .long   2128193280,3054596040,2183486460,1257083700
43 .long   655635200,1165381986,3923443150,2344132524
44 .long   190078720,256924420,290342170,357187870
45 .long   1610966272,2263057382,4103205268,309794674
46 .long   2592527872,2233205587,1335446729,3402964816
47 .long   3973531904,3225098121,3002836325,1918774430
48 .long   3870401024,2102906079,2284471353,4117666579
49 .long   617007872,1021508343,366931923,691083277
50 .long   2528395776,3491914898,2968704004,1613121270
51 .long   3445188352,3247741094,844474987,4093578302
52 .long   651481088,1190302358,1689581232,574775300
53 .long   4289380608,206939853,2555985458,2489840491
54 .long   2130264064,327674451,3566485037,3349835193
55 .long   2470714624,316102159,3636825756,3393945945
56 .byte   86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
57 .byte   111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
58 .byte   83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
59 .byte   114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
60 .byte   118,101,114,115,105,116,121,41,0
61 .align  64
62 .type   _vpaes_preheat,@function
63 .align  16
64 _vpaes_preheat:
65         addl    (%esp),%ebp
66         movdqa  -48(%ebp),%xmm7
67         movdqa  -16(%ebp),%xmm6
68         ret
69 .size   _vpaes_preheat,.-_vpaes_preheat
70 .type   _vpaes_encrypt_core,@function
71 .align  16
72 _vpaes_encrypt_core:
73         movl    $16,%ecx
74         movl    240(%edx),%eax
75         movdqa  %xmm6,%xmm1
76         movdqa  (%ebp),%xmm2
77         pandn   %xmm0,%xmm1
78         pand    %xmm6,%xmm0
79         movdqu  (%edx),%xmm5
80 .byte   102,15,56,0,208
81         movdqa  16(%ebp),%xmm0
82         pxor    %xmm5,%xmm2
83         psrld   $4,%xmm1
84         addl    $16,%edx
85 .byte   102,15,56,0,193
86         leal    192(%ebp),%ebx
87         pxor    %xmm2,%xmm0
88         jmp     .L000enc_entry
89 .align  16
90 .L001enc_loop:
91         movdqa  32(%ebp),%xmm4
92         movdqa  48(%ebp),%xmm0
93 .byte   102,15,56,0,226
94 .byte   102,15,56,0,195
95         pxor    %xmm5,%xmm4
96         movdqa  64(%ebp),%xmm5
97         pxor    %xmm4,%xmm0
98         movdqa  -64(%ebx,%ecx,1),%xmm1
99 .byte   102,15,56,0,234
100         movdqa  80(%ebp),%xmm2
101         movdqa  (%ebx,%ecx,1),%xmm4
102 .byte   102,15,56,0,211
103         movdqa  %xmm0,%xmm3
104         pxor    %xmm5,%xmm2
105 .byte   102,15,56,0,193
106         addl    $16,%edx
107         pxor    %xmm2,%xmm0
108 .byte   102,15,56,0,220
109         addl    $16,%ecx
110         pxor    %xmm0,%xmm3
111 .byte   102,15,56,0,193
112         andl    $48,%ecx
113         subl    $1,%eax
114         pxor    %xmm3,%xmm0
115 .L000enc_entry:
116         movdqa  %xmm6,%xmm1
117         movdqa  -32(%ebp),%xmm5
118         pandn   %xmm0,%xmm1
119         psrld   $4,%xmm1
120         pand    %xmm6,%xmm0
121 .byte   102,15,56,0,232
122         movdqa  %xmm7,%xmm3
123         pxor    %xmm1,%xmm0
124 .byte   102,15,56,0,217
125         movdqa  %xmm7,%xmm4
126         pxor    %xmm5,%xmm3
127 .byte   102,15,56,0,224
128         movdqa  %xmm7,%xmm2
129         pxor    %xmm5,%xmm4
130 .byte   102,15,56,0,211
131         movdqa  %xmm7,%xmm3
132         pxor    %xmm0,%xmm2
133 .byte   102,15,56,0,220
134         movdqu  (%edx),%xmm5
135         pxor    %xmm1,%xmm3
136         jnz     .L001enc_loop
137         movdqa  96(%ebp),%xmm4
138         movdqa  112(%ebp),%xmm0
139 .byte   102,15,56,0,226
140         pxor    %xmm5,%xmm4
141 .byte   102,15,56,0,195
142         movdqa  64(%ebx,%ecx,1),%xmm1
143         pxor    %xmm4,%xmm0
144 .byte   102,15,56,0,193
145         ret
146 .size   _vpaes_encrypt_core,.-_vpaes_encrypt_core
147 .type   _vpaes_decrypt_core,@function
148 .align  16
149 _vpaes_decrypt_core:
150         leal    608(%ebp),%ebx
151         movl    240(%edx),%eax
152         movdqa  %xmm6,%xmm1
153         movdqa  -64(%ebx),%xmm2
154         pandn   %xmm0,%xmm1
155         movl    %eax,%ecx
156         psrld   $4,%xmm1
157         movdqu  (%edx),%xmm5
158         shll    $4,%ecx
159         pand    %xmm6,%xmm0
160 .byte   102,15,56,0,208
161         movdqa  -48(%ebx),%xmm0
162         xorl    $48,%ecx
163 .byte   102,15,56,0,193
164         andl    $48,%ecx
165         pxor    %xmm5,%xmm2
166         movdqa  176(%ebp),%xmm5
167         pxor    %xmm2,%xmm0
168         addl    $16,%edx
169         leal    -352(%ebx,%ecx,1),%ecx
170         jmp     .L002dec_entry
171 .align  16
172 .L003dec_loop:
173         movdqa  -32(%ebx),%xmm4
174         movdqa  -16(%ebx),%xmm1
175 .byte   102,15,56,0,226
176 .byte   102,15,56,0,203
177         pxor    %xmm4,%xmm0
178         movdqa  (%ebx),%xmm4
179         pxor    %xmm1,%xmm0
180         movdqa  16(%ebx),%xmm1
181 .byte   102,15,56,0,226
182 .byte   102,15,56,0,197
183 .byte   102,15,56,0,203
184         pxor    %xmm4,%xmm0
185         movdqa  32(%ebx),%xmm4
186         pxor    %xmm1,%xmm0
187         movdqa  48(%ebx),%xmm1
188 .byte   102,15,56,0,226
189 .byte   102,15,56,0,197
190 .byte   102,15,56,0,203
191         pxor    %xmm4,%xmm0
192         movdqa  64(%ebx),%xmm4
193         pxor    %xmm1,%xmm0
194         movdqa  80(%ebx),%xmm1
195 .byte   102,15,56,0,226
196 .byte   102,15,56,0,197
197 .byte   102,15,56,0,203
198         pxor    %xmm4,%xmm0
199         addl    $16,%edx
200 .byte   102,15,58,15,237,12
201         pxor    %xmm1,%xmm0
202         subl    $1,%eax
203 .L002dec_entry:
204         movdqa  %xmm6,%xmm1
205         movdqa  -32(%ebp),%xmm2
206         pandn   %xmm0,%xmm1
207         pand    %xmm6,%xmm0
208         psrld   $4,%xmm1
209 .byte   102,15,56,0,208
210         movdqa  %xmm7,%xmm3
211         pxor    %xmm1,%xmm0
212 .byte   102,15,56,0,217
213         movdqa  %xmm7,%xmm4
214         pxor    %xmm2,%xmm3
215 .byte   102,15,56,0,224
216         pxor    %xmm2,%xmm4
217         movdqa  %xmm7,%xmm2
218 .byte   102,15,56,0,211
219         movdqa  %xmm7,%xmm3
220         pxor    %xmm0,%xmm2
221 .byte   102,15,56,0,220
222         movdqu  (%edx),%xmm0
223         pxor    %xmm1,%xmm3
224         jnz     .L003dec_loop
225         movdqa  96(%ebx),%xmm4
226 .byte   102,15,56,0,226
227         pxor    %xmm0,%xmm4
228         movdqa  112(%ebx),%xmm0
229         movdqa  (%ecx),%xmm2
230 .byte   102,15,56,0,195
231         pxor    %xmm4,%xmm0
232 .byte   102,15,56,0,194
233         ret
234 .size   _vpaes_decrypt_core,.-_vpaes_decrypt_core
235 .type   _vpaes_schedule_core,@function
236 .align  16
237 _vpaes_schedule_core:
238         addl    (%esp),%ebp
239         movdqu  (%esi),%xmm0
240         movdqa  320(%ebp),%xmm2
241         movdqa  %xmm0,%xmm3
242         leal    (%ebp),%ebx
243         movdqa  %xmm2,4(%esp)
244         call    _vpaes_schedule_transform
245         movdqa  %xmm0,%xmm7
246         testl   %edi,%edi
247         jnz     .L004schedule_am_decrypting
248         movdqu  %xmm0,(%edx)
249         jmp     .L005schedule_go
250 .L004schedule_am_decrypting:
251         movdqa  256(%ebp,%ecx,1),%xmm1
252 .byte   102,15,56,0,217
253         movdqu  %xmm3,(%edx)
254         xorl    $48,%ecx
255 .L005schedule_go:
256         cmpl    $192,%eax
257         ja      .L006schedule_256
258         je      .L007schedule_192
259 .L008schedule_128:
260         movl    $10,%eax
261 .L009loop_schedule_128:
262         call    _vpaes_schedule_round
263         decl    %eax
264         jz      .L010schedule_mangle_last
265         call    _vpaes_schedule_mangle
266         jmp     .L009loop_schedule_128
267 .align  16
268 .L007schedule_192:
269         movdqu  8(%esi),%xmm0
270         call    _vpaes_schedule_transform
271         movdqa  %xmm0,%xmm6
272         pxor    %xmm4,%xmm4
273         movhlps %xmm4,%xmm6
274         movl    $4,%eax
275 .L011loop_schedule_192:
276         call    _vpaes_schedule_round
277 .byte   102,15,58,15,198,8
278         call    _vpaes_schedule_mangle
279         call    _vpaes_schedule_192_smear
280         call    _vpaes_schedule_mangle
281         call    _vpaes_schedule_round
282         decl    %eax
283         jz      .L010schedule_mangle_last
284         call    _vpaes_schedule_mangle
285         call    _vpaes_schedule_192_smear
286         jmp     .L011loop_schedule_192
287 .align  16
288 .L006schedule_256:
289         movdqu  16(%esi),%xmm0
290         call    _vpaes_schedule_transform
291         movl    $7,%eax
292 .L012loop_schedule_256:
293         call    _vpaes_schedule_mangle
294         movdqa  %xmm0,%xmm6
295         call    _vpaes_schedule_round
296         decl    %eax
297         jz      .L010schedule_mangle_last
298         call    _vpaes_schedule_mangle
299         pshufd  $255,%xmm0,%xmm0
300         movdqa  %xmm7,20(%esp)
301         movdqa  %xmm6,%xmm7
302         call    .L_vpaes_schedule_low_round
303         movdqa  20(%esp),%xmm7
304         jmp     .L012loop_schedule_256
305 .align  16
306 .L010schedule_mangle_last:
307         leal    384(%ebp),%ebx
308         testl   %edi,%edi
309         jnz     .L013schedule_mangle_last_dec
310         movdqa  256(%ebp,%ecx,1),%xmm1
311 .byte   102,15,56,0,193
312         leal    352(%ebp),%ebx
313         addl    $32,%edx
314 .L013schedule_mangle_last_dec:
315         addl    $-16,%edx
316         pxor    336(%ebp),%xmm0
317         call    _vpaes_schedule_transform
318         movdqu  %xmm0,(%edx)
319         pxor    %xmm0,%xmm0
320         pxor    %xmm1,%xmm1
321         pxor    %xmm2,%xmm2
322         pxor    %xmm3,%xmm3
323         pxor    %xmm4,%xmm4
324         pxor    %xmm5,%xmm5
325         pxor    %xmm6,%xmm6
326         pxor    %xmm7,%xmm7
327         ret
328 .size   _vpaes_schedule_core,.-_vpaes_schedule_core
329 .type   _vpaes_schedule_192_smear,@function
330 .align  16
331 _vpaes_schedule_192_smear:
332         pshufd  $128,%xmm6,%xmm1
333         pshufd  $254,%xmm7,%xmm0
334         pxor    %xmm1,%xmm6
335         pxor    %xmm1,%xmm1
336         pxor    %xmm0,%xmm6
337         movdqa  %xmm6,%xmm0
338         movhlps %xmm1,%xmm6
339         ret
340 .size   _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
341 .type   _vpaes_schedule_round,@function
342 .align  16
343 _vpaes_schedule_round:
344         movdqa  8(%esp),%xmm2
345         pxor    %xmm1,%xmm1
346 .byte   102,15,58,15,202,15
347 .byte   102,15,58,15,210,15
348         pxor    %xmm1,%xmm7
349         pshufd  $255,%xmm0,%xmm0
350 .byte   102,15,58,15,192,1
351         movdqa  %xmm2,8(%esp)
352 .L_vpaes_schedule_low_round:
353         movdqa  %xmm7,%xmm1
354         pslldq  $4,%xmm7
355         pxor    %xmm1,%xmm7
356         movdqa  %xmm7,%xmm1
357         pslldq  $8,%xmm7
358         pxor    %xmm1,%xmm7
359         pxor    336(%ebp),%xmm7
360         movdqa  -16(%ebp),%xmm4
361         movdqa  -48(%ebp),%xmm5
362         movdqa  %xmm4,%xmm1
363         pandn   %xmm0,%xmm1
364         psrld   $4,%xmm1
365         pand    %xmm4,%xmm0
366         movdqa  -32(%ebp),%xmm2
367 .byte   102,15,56,0,208
368         pxor    %xmm1,%xmm0
369         movdqa  %xmm5,%xmm3
370 .byte   102,15,56,0,217
371         pxor    %xmm2,%xmm3
372         movdqa  %xmm5,%xmm4
373 .byte   102,15,56,0,224
374         pxor    %xmm2,%xmm4
375         movdqa  %xmm5,%xmm2
376 .byte   102,15,56,0,211
377         pxor    %xmm0,%xmm2
378         movdqa  %xmm5,%xmm3
379 .byte   102,15,56,0,220
380         pxor    %xmm1,%xmm3
381         movdqa  32(%ebp),%xmm4
382 .byte   102,15,56,0,226
383         movdqa  48(%ebp),%xmm0
384 .byte   102,15,56,0,195
385         pxor    %xmm4,%xmm0
386         pxor    %xmm7,%xmm0
387         movdqa  %xmm0,%xmm7
388         ret
389 .size   _vpaes_schedule_round,.-_vpaes_schedule_round
390 .type   _vpaes_schedule_transform,@function
391 .align  16
392 _vpaes_schedule_transform:
393         movdqa  -16(%ebp),%xmm2
394         movdqa  %xmm2,%xmm1
395         pandn   %xmm0,%xmm1
396         psrld   $4,%xmm1
397         pand    %xmm2,%xmm0
398         movdqa  (%ebx),%xmm2
399 .byte   102,15,56,0,208
400         movdqa  16(%ebx),%xmm0
401 .byte   102,15,56,0,193
402         pxor    %xmm2,%xmm0
403         ret
404 .size   _vpaes_schedule_transform,.-_vpaes_schedule_transform
405 .type   _vpaes_schedule_mangle,@function
406 .align  16
407 _vpaes_schedule_mangle:
408         movdqa  %xmm0,%xmm4
409         movdqa  128(%ebp),%xmm5
410         testl   %edi,%edi
411         jnz     .L014schedule_mangle_dec
412         addl    $16,%edx
413         pxor    336(%ebp),%xmm4
414 .byte   102,15,56,0,229
415         movdqa  %xmm4,%xmm3
416 .byte   102,15,56,0,229
417         pxor    %xmm4,%xmm3
418 .byte   102,15,56,0,229
419         pxor    %xmm4,%xmm3
420         jmp     .L015schedule_mangle_both
421 .align  16
422 .L014schedule_mangle_dec:
423         movdqa  -16(%ebp),%xmm2
424         leal    416(%ebp),%esi
425         movdqa  %xmm2,%xmm1
426         pandn   %xmm4,%xmm1
427         psrld   $4,%xmm1
428         pand    %xmm2,%xmm4
429         movdqa  (%esi),%xmm2
430 .byte   102,15,56,0,212
431         movdqa  16(%esi),%xmm3
432 .byte   102,15,56,0,217
433         pxor    %xmm2,%xmm3
434 .byte   102,15,56,0,221
435         movdqa  32(%esi),%xmm2
436 .byte   102,15,56,0,212
437         pxor    %xmm3,%xmm2
438         movdqa  48(%esi),%xmm3
439 .byte   102,15,56,0,217
440         pxor    %xmm2,%xmm3
441 .byte   102,15,56,0,221
442         movdqa  64(%esi),%xmm2
443 .byte   102,15,56,0,212
444         pxor    %xmm3,%xmm2
445         movdqa  80(%esi),%xmm3
446 .byte   102,15,56,0,217
447         pxor    %xmm2,%xmm3
448 .byte   102,15,56,0,221
449         movdqa  96(%esi),%xmm2
450 .byte   102,15,56,0,212
451         pxor    %xmm3,%xmm2
452         movdqa  112(%esi),%xmm3
453 .byte   102,15,56,0,217
454         pxor    %xmm2,%xmm3
455         addl    $-16,%edx
456 .L015schedule_mangle_both:
457         movdqa  256(%ebp,%ecx,1),%xmm1
458 .byte   102,15,56,0,217
459         addl    $-16,%ecx
460         andl    $48,%ecx
461         movdqu  %xmm3,(%edx)
462         ret
463 .size   _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
464 .globl  vpaes_set_encrypt_key
465 .type   vpaes_set_encrypt_key,@function
466 .align  16
467 vpaes_set_encrypt_key:
468 .L_vpaes_set_encrypt_key_begin:
469         pushl   %ebp
470         pushl   %ebx
471         pushl   %esi
472         pushl   %edi
473         movl    20(%esp),%esi
474         leal    -56(%esp),%ebx
475         movl    24(%esp),%eax
476         andl    $-16,%ebx
477         movl    28(%esp),%edx
478         xchgl   %esp,%ebx
479         movl    %ebx,48(%esp)
480         movl    %eax,%ebx
481         shrl    $5,%ebx
482         addl    $5,%ebx
483         movl    %ebx,240(%edx)
484         movl    $48,%ecx
485         movl    $0,%edi
486         leal    .L_vpaes_consts+0x30-.L016pic_point,%ebp
487         call    _vpaes_schedule_core
488 .L016pic_point:
489         movl    48(%esp),%esp
490         xorl    %eax,%eax
491         popl    %edi
492         popl    %esi
493         popl    %ebx
494         popl    %ebp
495         ret
496 .size   vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
497 .globl  vpaes_set_decrypt_key
498 .type   vpaes_set_decrypt_key,@function
499 .align  16
500 vpaes_set_decrypt_key:
501 .L_vpaes_set_decrypt_key_begin:
502         pushl   %ebp
503         pushl   %ebx
504         pushl   %esi
505         pushl   %edi
506         movl    20(%esp),%esi
507         leal    -56(%esp),%ebx
508         movl    24(%esp),%eax
509         andl    $-16,%ebx
510         movl    28(%esp),%edx
511         xchgl   %esp,%ebx
512         movl    %ebx,48(%esp)
513         movl    %eax,%ebx
514         shrl    $5,%ebx
515         addl    $5,%ebx
516         movl    %ebx,240(%edx)
517         shll    $4,%ebx
518         leal    16(%edx,%ebx,1),%edx
519         movl    $1,%edi
520         movl    %eax,%ecx
521         shrl    $1,%ecx
522         andl    $32,%ecx
523         xorl    $32,%ecx
524         leal    .L_vpaes_consts+0x30-.L017pic_point,%ebp
525         call    _vpaes_schedule_core
526 .L017pic_point:
527         movl    48(%esp),%esp
528         xorl    %eax,%eax
529         popl    %edi
530         popl    %esi
531         popl    %ebx
532         popl    %ebp
533         ret
534 .size   vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
535 .globl  vpaes_encrypt
536 .type   vpaes_encrypt,@function
537 .align  16
538 vpaes_encrypt:
539 .L_vpaes_encrypt_begin:
540         pushl   %ebp
541         pushl   %ebx
542         pushl   %esi
543         pushl   %edi
544         leal    .L_vpaes_consts+0x30-.L018pic_point,%ebp
545         call    _vpaes_preheat
546 .L018pic_point:
547         movl    20(%esp),%esi
548         leal    -56(%esp),%ebx
549         movl    24(%esp),%edi
550         andl    $-16,%ebx
551         movl    28(%esp),%edx
552         xchgl   %esp,%ebx
553         movl    %ebx,48(%esp)
554         movdqu  (%esi),%xmm0
555         call    _vpaes_encrypt_core
556         movdqu  %xmm0,(%edi)
557         movl    48(%esp),%esp
558         popl    %edi
559         popl    %esi
560         popl    %ebx
561         popl    %ebp
562         ret
563 .size   vpaes_encrypt,.-.L_vpaes_encrypt_begin
564 .globl  vpaes_decrypt
565 .type   vpaes_decrypt,@function
566 .align  16
567 vpaes_decrypt:
568 .L_vpaes_decrypt_begin:
569         pushl   %ebp
570         pushl   %ebx
571         pushl   %esi
572         pushl   %edi
573         leal    .L_vpaes_consts+0x30-.L019pic_point,%ebp
574         call    _vpaes_preheat
575 .L019pic_point:
576         movl    20(%esp),%esi
577         leal    -56(%esp),%ebx
578         movl    24(%esp),%edi
579         andl    $-16,%ebx
580         movl    28(%esp),%edx
581         xchgl   %esp,%ebx
582         movl    %ebx,48(%esp)
583         movdqu  (%esi),%xmm0
584         call    _vpaes_decrypt_core
585         movdqu  %xmm0,(%edi)
586         movl    48(%esp),%esp
587         popl    %edi
588         popl    %esi
589         popl    %ebx
590         popl    %ebp
591         ret
592 .size   vpaes_decrypt,.-.L_vpaes_decrypt_begin
593 .globl  vpaes_cbc_encrypt
594 .type   vpaes_cbc_encrypt,@function
595 .align  16
596 vpaes_cbc_encrypt:
597 .L_vpaes_cbc_encrypt_begin:
598         pushl   %ebp
599         pushl   %ebx
600         pushl   %esi
601         pushl   %edi
602         movl    20(%esp),%esi
603         movl    24(%esp),%edi
604         movl    28(%esp),%eax
605         movl    32(%esp),%edx
606         subl    $16,%eax
607         jc      .L020cbc_abort
608         leal    -56(%esp),%ebx
609         movl    36(%esp),%ebp
610         andl    $-16,%ebx
611         movl    40(%esp),%ecx
612         xchgl   %esp,%ebx
613         movdqu  (%ebp),%xmm1
614         subl    %esi,%edi
615         movl    %ebx,48(%esp)
616         movl    %edi,(%esp)
617         movl    %edx,4(%esp)
618         movl    %ebp,8(%esp)
619         movl    %eax,%edi
620         leal    .L_vpaes_consts+0x30-.L021pic_point,%ebp
621         call    _vpaes_preheat
622 .L021pic_point:
623         cmpl    $0,%ecx
624         je      .L022cbc_dec_loop
625         jmp     .L023cbc_enc_loop
626 .align  16
627 .L023cbc_enc_loop:
628         movdqu  (%esi),%xmm0
629         pxor    %xmm1,%xmm0
630         call    _vpaes_encrypt_core
631         movl    (%esp),%ebx
632         movl    4(%esp),%edx
633         movdqa  %xmm0,%xmm1
634         movdqu  %xmm0,(%ebx,%esi,1)
635         leal    16(%esi),%esi
636         subl    $16,%edi
637         jnc     .L023cbc_enc_loop
638         jmp     .L024cbc_done
639 .align  16
640 .L022cbc_dec_loop:
641         movdqu  (%esi),%xmm0
642         movdqa  %xmm1,16(%esp)
643         movdqa  %xmm0,32(%esp)
644         call    _vpaes_decrypt_core
645         movl    (%esp),%ebx
646         movl    4(%esp),%edx
647         pxor    16(%esp),%xmm0
648         movdqa  32(%esp),%xmm1
649         movdqu  %xmm0,(%ebx,%esi,1)
650         leal    16(%esi),%esi
651         subl    $16,%edi
652         jnc     .L022cbc_dec_loop
653 .L024cbc_done:
654         movl    8(%esp),%ebx
655         movl    48(%esp),%esp
656         movdqu  %xmm1,(%ebx)
657 .L020cbc_abort:
658         popl    %edi
659         popl    %esi
660         popl    %ebx
661         popl    %ebp
662         ret
663 .size   vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
664 #else
665 .text
666 .align  64
667 .L_vpaes_consts:
668 .long   218628480,235210255,168496130,67568393
669 .long   252381056,17041926,33884169,51187212
670 .long   252645135,252645135,252645135,252645135
671 .long   1512730624,3266504856,1377990664,3401244816
672 .long   830229760,1275146365,2969422977,3447763452
673 .long   3411033600,2979783055,338359620,2782886510
674 .long   4209124096,907596821,221174255,1006095553
675 .long   191964160,3799684038,3164090317,1589111125
676 .long   182528256,1777043520,2877432650,3265356744
677 .long   1874708224,3503451415,3305285752,363511674
678 .long   1606117888,3487855781,1093350906,2384367825
679 .long   197121,67569157,134941193,202313229
680 .long   67569157,134941193,202313229,197121
681 .long   134941193,202313229,197121,67569157
682 .long   202313229,197121,67569157,134941193
683 .long   33619971,100992007,168364043,235736079
684 .long   235736079,33619971,100992007,168364043
685 .long   168364043,235736079,33619971,100992007
686 .long   100992007,168364043,235736079,33619971
687 .long   50462976,117835012,185207048,252579084
688 .long   252314880,51251460,117574920,184942860
689 .long   184682752,252054788,50987272,118359308
690 .long   118099200,185467140,251790600,50727180
691 .long   2946363062,528716217,1300004225,1881839624
692 .long   1532713819,1532713819,1532713819,1532713819
693 .long   3602276352,4288629033,3737020424,4153884961
694 .long   1354558464,32357713,2958822624,3775749553
695 .long   1201988352,132424512,1572796698,503232858
696 .long   2213177600,1597421020,4103937655,675398315
697 .long   2749646592,4273543773,1511898873,121693092
698 .long   3040248576,1103263732,2871565598,1608280554
699 .long   2236667136,2588920351,482954393,64377734
700 .long   3069987328,291237287,2117370568,3650299247
701 .long   533321216,3573750986,2572112006,1401264716
702 .long   1339849704,2721158661,548607111,3445553514
703 .long   2128193280,3054596040,2183486460,1257083700
704 .long   655635200,1165381986,3923443150,2344132524
705 .long   190078720,256924420,290342170,357187870
706 .long   1610966272,2263057382,4103205268,309794674
707 .long   2592527872,2233205587,1335446729,3402964816
708 .long   3973531904,3225098121,3002836325,1918774430
709 .long   3870401024,2102906079,2284471353,4117666579
710 .long   617007872,1021508343,366931923,691083277
711 .long   2528395776,3491914898,2968704004,1613121270
712 .long   3445188352,3247741094,844474987,4093578302
713 .long   651481088,1190302358,1689581232,574775300
714 .long   4289380608,206939853,2555985458,2489840491
715 .long   2130264064,327674451,3566485037,3349835193
716 .long   2470714624,316102159,3636825756,3393945945
717 .byte   86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
718 .byte   111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
719 .byte   83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
720 .byte   114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
721 .byte   118,101,114,115,105,116,121,41,0
722 .align  64
723 .type   _vpaes_preheat,@function
724 .align  16
725 _vpaes_preheat:
726         addl    (%esp),%ebp
727         movdqa  -48(%ebp),%xmm7
728         movdqa  -16(%ebp),%xmm6
729         ret
730 .size   _vpaes_preheat,.-_vpaes_preheat
731 .type   _vpaes_encrypt_core,@function
732 .align  16
733 _vpaes_encrypt_core:
734         movl    $16,%ecx
735         movl    240(%edx),%eax
736         movdqa  %xmm6,%xmm1
737         movdqa  (%ebp),%xmm2
738         pandn   %xmm0,%xmm1
739         pand    %xmm6,%xmm0
740         movdqu  (%edx),%xmm5
741 .byte   102,15,56,0,208
742         movdqa  16(%ebp),%xmm0
743         pxor    %xmm5,%xmm2
744         psrld   $4,%xmm1
745         addl    $16,%edx
746 .byte   102,15,56,0,193
747         leal    192(%ebp),%ebx
748         pxor    %xmm2,%xmm0
749         jmp     .L000enc_entry
750 .align  16
751 .L001enc_loop:
752         movdqa  32(%ebp),%xmm4
753         movdqa  48(%ebp),%xmm0
754 .byte   102,15,56,0,226
755 .byte   102,15,56,0,195
756         pxor    %xmm5,%xmm4
757         movdqa  64(%ebp),%xmm5
758         pxor    %xmm4,%xmm0
759         movdqa  -64(%ebx,%ecx,1),%xmm1
760 .byte   102,15,56,0,234
761         movdqa  80(%ebp),%xmm2
762         movdqa  (%ebx,%ecx,1),%xmm4
763 .byte   102,15,56,0,211
764         movdqa  %xmm0,%xmm3
765         pxor    %xmm5,%xmm2
766 .byte   102,15,56,0,193
767         addl    $16,%edx
768         pxor    %xmm2,%xmm0
769 .byte   102,15,56,0,220
770         addl    $16,%ecx
771         pxor    %xmm0,%xmm3
772 .byte   102,15,56,0,193
773         andl    $48,%ecx
774         subl    $1,%eax
775         pxor    %xmm3,%xmm0
776 .L000enc_entry:
777         movdqa  %xmm6,%xmm1
778         movdqa  -32(%ebp),%xmm5
779         pandn   %xmm0,%xmm1
780         psrld   $4,%xmm1
781         pand    %xmm6,%xmm0
782 .byte   102,15,56,0,232
783         movdqa  %xmm7,%xmm3
784         pxor    %xmm1,%xmm0
785 .byte   102,15,56,0,217
786         movdqa  %xmm7,%xmm4
787         pxor    %xmm5,%xmm3
788 .byte   102,15,56,0,224
789         movdqa  %xmm7,%xmm2
790         pxor    %xmm5,%xmm4
791 .byte   102,15,56,0,211
792         movdqa  %xmm7,%xmm3
793         pxor    %xmm0,%xmm2
794 .byte   102,15,56,0,220
795         movdqu  (%edx),%xmm5
796         pxor    %xmm1,%xmm3
797         jnz     .L001enc_loop
798         movdqa  96(%ebp),%xmm4
799         movdqa  112(%ebp),%xmm0
800 .byte   102,15,56,0,226
801         pxor    %xmm5,%xmm4
802 .byte   102,15,56,0,195
803         movdqa  64(%ebx,%ecx,1),%xmm1
804         pxor    %xmm4,%xmm0
805 .byte   102,15,56,0,193
806         ret
807 .size   _vpaes_encrypt_core,.-_vpaes_encrypt_core
808 .type   _vpaes_decrypt_core,@function
809 .align  16
810 _vpaes_decrypt_core:
811         leal    608(%ebp),%ebx
812         movl    240(%edx),%eax
813         movdqa  %xmm6,%xmm1
814         movdqa  -64(%ebx),%xmm2
815         pandn   %xmm0,%xmm1
816         movl    %eax,%ecx
817         psrld   $4,%xmm1
818         movdqu  (%edx),%xmm5
819         shll    $4,%ecx
820         pand    %xmm6,%xmm0
821 .byte   102,15,56,0,208
822         movdqa  -48(%ebx),%xmm0
823         xorl    $48,%ecx
824 .byte   102,15,56,0,193
825         andl    $48,%ecx
826         pxor    %xmm5,%xmm2
827         movdqa  176(%ebp),%xmm5
828         pxor    %xmm2,%xmm0
829         addl    $16,%edx
830         leal    -352(%ebx,%ecx,1),%ecx
831         jmp     .L002dec_entry
832 .align  16
833 .L003dec_loop:
834         movdqa  -32(%ebx),%xmm4
835         movdqa  -16(%ebx),%xmm1
836 .byte   102,15,56,0,226
837 .byte   102,15,56,0,203
838         pxor    %xmm4,%xmm0
839         movdqa  (%ebx),%xmm4
840         pxor    %xmm1,%xmm0
841         movdqa  16(%ebx),%xmm1
842 .byte   102,15,56,0,226
843 .byte   102,15,56,0,197
844 .byte   102,15,56,0,203
845         pxor    %xmm4,%xmm0
846         movdqa  32(%ebx),%xmm4
847         pxor    %xmm1,%xmm0
848         movdqa  48(%ebx),%xmm1
849 .byte   102,15,56,0,226
850 .byte   102,15,56,0,197
851 .byte   102,15,56,0,203
852         pxor    %xmm4,%xmm0
853         movdqa  64(%ebx),%xmm4
854         pxor    %xmm1,%xmm0
855         movdqa  80(%ebx),%xmm1
856 .byte   102,15,56,0,226
857 .byte   102,15,56,0,197
858 .byte   102,15,56,0,203
859         pxor    %xmm4,%xmm0
860         addl    $16,%edx
861 .byte   102,15,58,15,237,12
862         pxor    %xmm1,%xmm0
863         subl    $1,%eax
864 .L002dec_entry:
865         movdqa  %xmm6,%xmm1
866         movdqa  -32(%ebp),%xmm2
867         pandn   %xmm0,%xmm1
868         pand    %xmm6,%xmm0
869         psrld   $4,%xmm1
870 .byte   102,15,56,0,208
871         movdqa  %xmm7,%xmm3
872         pxor    %xmm1,%xmm0
873 .byte   102,15,56,0,217
874         movdqa  %xmm7,%xmm4
875         pxor    %xmm2,%xmm3
876 .byte   102,15,56,0,224
877         pxor    %xmm2,%xmm4
878         movdqa  %xmm7,%xmm2
879 .byte   102,15,56,0,211
880         movdqa  %xmm7,%xmm3
881         pxor    %xmm0,%xmm2
882 .byte   102,15,56,0,220
883         movdqu  (%edx),%xmm0
884         pxor    %xmm1,%xmm3
885         jnz     .L003dec_loop
886         movdqa  96(%ebx),%xmm4
887 .byte   102,15,56,0,226
888         pxor    %xmm0,%xmm4
889         movdqa  112(%ebx),%xmm0
890         movdqa  (%ecx),%xmm2
891 .byte   102,15,56,0,195
892         pxor    %xmm4,%xmm0
893 .byte   102,15,56,0,194
894         ret
895 .size   _vpaes_decrypt_core,.-_vpaes_decrypt_core
896 .type   _vpaes_schedule_core,@function
897 .align  16
898 _vpaes_schedule_core:
899         addl    (%esp),%ebp
900         movdqu  (%esi),%xmm0
901         movdqa  320(%ebp),%xmm2
902         movdqa  %xmm0,%xmm3
903         leal    (%ebp),%ebx
904         movdqa  %xmm2,4(%esp)
905         call    _vpaes_schedule_transform
906         movdqa  %xmm0,%xmm7
907         testl   %edi,%edi
908         jnz     .L004schedule_am_decrypting
909         movdqu  %xmm0,(%edx)
910         jmp     .L005schedule_go
911 .L004schedule_am_decrypting:
912         movdqa  256(%ebp,%ecx,1),%xmm1
913 .byte   102,15,56,0,217
914         movdqu  %xmm3,(%edx)
915         xorl    $48,%ecx
916 .L005schedule_go:
917         cmpl    $192,%eax
918         ja      .L006schedule_256
919         je      .L007schedule_192
920 .L008schedule_128:
921         movl    $10,%eax
922 .L009loop_schedule_128:
923         call    _vpaes_schedule_round
924         decl    %eax
925         jz      .L010schedule_mangle_last
926         call    _vpaes_schedule_mangle
927         jmp     .L009loop_schedule_128
928 .align  16
929 .L007schedule_192:
930         movdqu  8(%esi),%xmm0
931         call    _vpaes_schedule_transform
932         movdqa  %xmm0,%xmm6
933         pxor    %xmm4,%xmm4
934         movhlps %xmm4,%xmm6
935         movl    $4,%eax
936 .L011loop_schedule_192:
937         call    _vpaes_schedule_round
938 .byte   102,15,58,15,198,8
939         call    _vpaes_schedule_mangle
940         call    _vpaes_schedule_192_smear
941         call    _vpaes_schedule_mangle
942         call    _vpaes_schedule_round
943         decl    %eax
944         jz      .L010schedule_mangle_last
945         call    _vpaes_schedule_mangle
946         call    _vpaes_schedule_192_smear
947         jmp     .L011loop_schedule_192
948 .align  16
949 .L006schedule_256:
950         movdqu  16(%esi),%xmm0
951         call    _vpaes_schedule_transform
952         movl    $7,%eax
953 .L012loop_schedule_256:
954         call    _vpaes_schedule_mangle
955         movdqa  %xmm0,%xmm6
956         call    _vpaes_schedule_round
957         decl    %eax
958         jz      .L010schedule_mangle_last
959         call    _vpaes_schedule_mangle
960         pshufd  $255,%xmm0,%xmm0
961         movdqa  %xmm7,20(%esp)
962         movdqa  %xmm6,%xmm7
963         call    .L_vpaes_schedule_low_round
964         movdqa  20(%esp),%xmm7
965         jmp     .L012loop_schedule_256
966 .align  16
967 .L010schedule_mangle_last:
968         leal    384(%ebp),%ebx
969         testl   %edi,%edi
970         jnz     .L013schedule_mangle_last_dec
971         movdqa  256(%ebp,%ecx,1),%xmm1
972 .byte   102,15,56,0,193
973         leal    352(%ebp),%ebx
974         addl    $32,%edx
975 .L013schedule_mangle_last_dec:
976         addl    $-16,%edx
977         pxor    336(%ebp),%xmm0
978         call    _vpaes_schedule_transform
979         movdqu  %xmm0,(%edx)
980         pxor    %xmm0,%xmm0
981         pxor    %xmm1,%xmm1
982         pxor    %xmm2,%xmm2
983         pxor    %xmm3,%xmm3
984         pxor    %xmm4,%xmm4
985         pxor    %xmm5,%xmm5
986         pxor    %xmm6,%xmm6
987         pxor    %xmm7,%xmm7
988         ret
989 .size   _vpaes_schedule_core,.-_vpaes_schedule_core
990 .type   _vpaes_schedule_192_smear,@function
991 .align  16
992 _vpaes_schedule_192_smear:
993         pshufd  $128,%xmm6,%xmm1
994         pshufd  $254,%xmm7,%xmm0
995         pxor    %xmm1,%xmm6
996         pxor    %xmm1,%xmm1
997         pxor    %xmm0,%xmm6
998         movdqa  %xmm6,%xmm0
999         movhlps %xmm1,%xmm6
1000         ret
1001 .size   _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
1002 .type   _vpaes_schedule_round,@function
1003 .align  16
1004 _vpaes_schedule_round:
1005         movdqa  8(%esp),%xmm2
1006         pxor    %xmm1,%xmm1
1007 .byte   102,15,58,15,202,15
1008 .byte   102,15,58,15,210,15
1009         pxor    %xmm1,%xmm7
1010         pshufd  $255,%xmm0,%xmm0
1011 .byte   102,15,58,15,192,1
1012         movdqa  %xmm2,8(%esp)
1013 .L_vpaes_schedule_low_round:
1014         movdqa  %xmm7,%xmm1
1015         pslldq  $4,%xmm7
1016         pxor    %xmm1,%xmm7
1017         movdqa  %xmm7,%xmm1
1018         pslldq  $8,%xmm7
1019         pxor    %xmm1,%xmm7
1020         pxor    336(%ebp),%xmm7
1021         movdqa  -16(%ebp),%xmm4
1022         movdqa  -48(%ebp),%xmm5
1023         movdqa  %xmm4,%xmm1
1024         pandn   %xmm0,%xmm1
1025         psrld   $4,%xmm1
1026         pand    %xmm4,%xmm0
1027         movdqa  -32(%ebp),%xmm2
1028 .byte   102,15,56,0,208
1029         pxor    %xmm1,%xmm0
1030         movdqa  %xmm5,%xmm3
1031 .byte   102,15,56,0,217
1032         pxor    %xmm2,%xmm3
1033         movdqa  %xmm5,%xmm4
1034 .byte   102,15,56,0,224
1035         pxor    %xmm2,%xmm4
1036         movdqa  %xmm5,%xmm2
1037 .byte   102,15,56,0,211
1038         pxor    %xmm0,%xmm2
1039         movdqa  %xmm5,%xmm3
1040 .byte   102,15,56,0,220
1041         pxor    %xmm1,%xmm3
1042         movdqa  32(%ebp),%xmm4
1043 .byte   102,15,56,0,226
1044         movdqa  48(%ebp),%xmm0
1045 .byte   102,15,56,0,195
1046         pxor    %xmm4,%xmm0
1047         pxor    %xmm7,%xmm0
1048         movdqa  %xmm0,%xmm7
1049         ret
1050 .size   _vpaes_schedule_round,.-_vpaes_schedule_round
1051 .type   _vpaes_schedule_transform,@function
1052 .align  16
1053 _vpaes_schedule_transform:
1054         movdqa  -16(%ebp),%xmm2
1055         movdqa  %xmm2,%xmm1
1056         pandn   %xmm0,%xmm1
1057         psrld   $4,%xmm1
1058         pand    %xmm2,%xmm0
1059         movdqa  (%ebx),%xmm2
1060 .byte   102,15,56,0,208
1061         movdqa  16(%ebx),%xmm0
1062 .byte   102,15,56,0,193
1063         pxor    %xmm2,%xmm0
1064         ret
1065 .size   _vpaes_schedule_transform,.-_vpaes_schedule_transform
1066 .type   _vpaes_schedule_mangle,@function
1067 .align  16
1068 _vpaes_schedule_mangle:
1069         movdqa  %xmm0,%xmm4
1070         movdqa  128(%ebp),%xmm5
1071         testl   %edi,%edi
1072         jnz     .L014schedule_mangle_dec
1073         addl    $16,%edx
1074         pxor    336(%ebp),%xmm4
1075 .byte   102,15,56,0,229
1076         movdqa  %xmm4,%xmm3
1077 .byte   102,15,56,0,229
1078         pxor    %xmm4,%xmm3
1079 .byte   102,15,56,0,229
1080         pxor    %xmm4,%xmm3
1081         jmp     .L015schedule_mangle_both
1082 .align  16
1083 .L014schedule_mangle_dec:
1084         movdqa  -16(%ebp),%xmm2
1085         leal    416(%ebp),%esi
1086         movdqa  %xmm2,%xmm1
1087         pandn   %xmm4,%xmm1
1088         psrld   $4,%xmm1
1089         pand    %xmm2,%xmm4
1090         movdqa  (%esi),%xmm2
1091 .byte   102,15,56,0,212
1092         movdqa  16(%esi),%xmm3
1093 .byte   102,15,56,0,217
1094         pxor    %xmm2,%xmm3
1095 .byte   102,15,56,0,221
1096         movdqa  32(%esi),%xmm2
1097 .byte   102,15,56,0,212
1098         pxor    %xmm3,%xmm2
1099         movdqa  48(%esi),%xmm3
1100 .byte   102,15,56,0,217
1101         pxor    %xmm2,%xmm3
1102 .byte   102,15,56,0,221
1103         movdqa  64(%esi),%xmm2
1104 .byte   102,15,56,0,212
1105         pxor    %xmm3,%xmm2
1106         movdqa  80(%esi),%xmm3
1107 .byte   102,15,56,0,217
1108         pxor    %xmm2,%xmm3
1109 .byte   102,15,56,0,221
1110         movdqa  96(%esi),%xmm2
1111 .byte   102,15,56,0,212
1112         pxor    %xmm3,%xmm2
1113         movdqa  112(%esi),%xmm3
1114 .byte   102,15,56,0,217
1115         pxor    %xmm2,%xmm3
1116         addl    $-16,%edx
1117 .L015schedule_mangle_both:
1118         movdqa  256(%ebp,%ecx,1),%xmm1
1119 .byte   102,15,56,0,217
1120         addl    $-16,%ecx
1121         andl    $48,%ecx
1122         movdqu  %xmm3,(%edx)
1123         ret
1124 .size   _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
1125 .globl  vpaes_set_encrypt_key
1126 .type   vpaes_set_encrypt_key,@function
1127 .align  16
1128 vpaes_set_encrypt_key:
1129 .L_vpaes_set_encrypt_key_begin:
1130         pushl   %ebp
1131         pushl   %ebx
1132         pushl   %esi
1133         pushl   %edi
1134         movl    20(%esp),%esi
1135         leal    -56(%esp),%ebx
1136         movl    24(%esp),%eax
1137         andl    $-16,%ebx
1138         movl    28(%esp),%edx
1139         xchgl   %esp,%ebx
1140         movl    %ebx,48(%esp)
1141         movl    %eax,%ebx
1142         shrl    $5,%ebx
1143         addl    $5,%ebx
1144         movl    %ebx,240(%edx)
1145         movl    $48,%ecx
1146         movl    $0,%edi
1147         leal    .L_vpaes_consts+0x30-.L016pic_point,%ebp
1148         call    _vpaes_schedule_core
1149 .L016pic_point:
1150         movl    48(%esp),%esp
1151         xorl    %eax,%eax
1152         popl    %edi
1153         popl    %esi
1154         popl    %ebx
1155         popl    %ebp
1156         ret
1157 .size   vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
1158 .globl  vpaes_set_decrypt_key
1159 .type   vpaes_set_decrypt_key,@function
1160 .align  16
1161 vpaes_set_decrypt_key:
1162 .L_vpaes_set_decrypt_key_begin:
1163         pushl   %ebp
1164         pushl   %ebx
1165         pushl   %esi
1166         pushl   %edi
1167         movl    20(%esp),%esi
1168         leal    -56(%esp),%ebx
1169         movl    24(%esp),%eax
1170         andl    $-16,%ebx
1171         movl    28(%esp),%edx
1172         xchgl   %esp,%ebx
1173         movl    %ebx,48(%esp)
1174         movl    %eax,%ebx
1175         shrl    $5,%ebx
1176         addl    $5,%ebx
1177         movl    %ebx,240(%edx)
1178         shll    $4,%ebx
1179         leal    16(%edx,%ebx,1),%edx
1180         movl    $1,%edi
1181         movl    %eax,%ecx
1182         shrl    $1,%ecx
1183         andl    $32,%ecx
1184         xorl    $32,%ecx
1185         leal    .L_vpaes_consts+0x30-.L017pic_point,%ebp
1186         call    _vpaes_schedule_core
1187 .L017pic_point:
1188         movl    48(%esp),%esp
1189         xorl    %eax,%eax
1190         popl    %edi
1191         popl    %esi
1192         popl    %ebx
1193         popl    %ebp
1194         ret
1195 .size   vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
1196 .globl  vpaes_encrypt
1197 .type   vpaes_encrypt,@function
1198 .align  16
1199 vpaes_encrypt:
1200 .L_vpaes_encrypt_begin:
1201         pushl   %ebp
1202         pushl   %ebx
1203         pushl   %esi
1204         pushl   %edi
1205         leal    .L_vpaes_consts+0x30-.L018pic_point,%ebp
1206         call    _vpaes_preheat
1207 .L018pic_point:
1208         movl    20(%esp),%esi
1209         leal    -56(%esp),%ebx
1210         movl    24(%esp),%edi
1211         andl    $-16,%ebx
1212         movl    28(%esp),%edx
1213         xchgl   %esp,%ebx
1214         movl    %ebx,48(%esp)
1215         movdqu  (%esi),%xmm0
1216         call    _vpaes_encrypt_core
1217         movdqu  %xmm0,(%edi)
1218         movl    48(%esp),%esp
1219         popl    %edi
1220         popl    %esi
1221         popl    %ebx
1222         popl    %ebp
1223         ret
1224 .size   vpaes_encrypt,.-.L_vpaes_encrypt_begin
1225 .globl  vpaes_decrypt
1226 .type   vpaes_decrypt,@function
1227 .align  16
1228 vpaes_decrypt:
1229 .L_vpaes_decrypt_begin:
1230         pushl   %ebp
1231         pushl   %ebx
1232         pushl   %esi
1233         pushl   %edi
1234         leal    .L_vpaes_consts+0x30-.L019pic_point,%ebp
1235         call    _vpaes_preheat
1236 .L019pic_point:
1237         movl    20(%esp),%esi
1238         leal    -56(%esp),%ebx
1239         movl    24(%esp),%edi
1240         andl    $-16,%ebx
1241         movl    28(%esp),%edx
1242         xchgl   %esp,%ebx
1243         movl    %ebx,48(%esp)
1244         movdqu  (%esi),%xmm0
1245         call    _vpaes_decrypt_core
1246         movdqu  %xmm0,(%edi)
1247         movl    48(%esp),%esp
1248         popl    %edi
1249         popl    %esi
1250         popl    %ebx
1251         popl    %ebp
1252         ret
1253 .size   vpaes_decrypt,.-.L_vpaes_decrypt_begin
1254 .globl  vpaes_cbc_encrypt
1255 .type   vpaes_cbc_encrypt,@function
1256 .align  16
1257 vpaes_cbc_encrypt:
1258 .L_vpaes_cbc_encrypt_begin:
1259         pushl   %ebp
1260         pushl   %ebx
1261         pushl   %esi
1262         pushl   %edi
1263         movl    20(%esp),%esi
1264         movl    24(%esp),%edi
1265         movl    28(%esp),%eax
1266         movl    32(%esp),%edx
1267         subl    $16,%eax
1268         jc      .L020cbc_abort
1269         leal    -56(%esp),%ebx
1270         movl    36(%esp),%ebp
1271         andl    $-16,%ebx
1272         movl    40(%esp),%ecx
1273         xchgl   %esp,%ebx
1274         movdqu  (%ebp),%xmm1
1275         subl    %esi,%edi
1276         movl    %ebx,48(%esp)
1277         movl    %edi,(%esp)
1278         movl    %edx,4(%esp)
1279         movl    %ebp,8(%esp)
1280         movl    %eax,%edi
1281         leal    .L_vpaes_consts+0x30-.L021pic_point,%ebp
1282         call    _vpaes_preheat
1283 .L021pic_point:
1284         cmpl    $0,%ecx
1285         je      .L022cbc_dec_loop
1286         jmp     .L023cbc_enc_loop
1287 .align  16
1288 .L023cbc_enc_loop:
1289         movdqu  (%esi),%xmm0
1290         pxor    %xmm1,%xmm0
1291         call    _vpaes_encrypt_core
1292         movl    (%esp),%ebx
1293         movl    4(%esp),%edx
1294         movdqa  %xmm0,%xmm1
1295         movdqu  %xmm0,(%ebx,%esi,1)
1296         leal    16(%esi),%esi
1297         subl    $16,%edi
1298         jnc     .L023cbc_enc_loop
1299         jmp     .L024cbc_done
1300 .align  16
1301 .L022cbc_dec_loop:
1302         movdqu  (%esi),%xmm0
1303         movdqa  %xmm1,16(%esp)
1304         movdqa  %xmm0,32(%esp)
1305         call    _vpaes_decrypt_core
1306         movl    (%esp),%ebx
1307         movl    4(%esp),%edx
1308         pxor    16(%esp),%xmm0
1309         movdqa  32(%esp),%xmm1
1310         movdqu  %xmm0,(%ebx,%esi,1)
1311         leal    16(%esi),%esi
1312         subl    $16,%edi
1313         jnc     .L022cbc_dec_loop
1314 .L024cbc_done:
1315         movl    8(%esp),%ebx
1316         movl    48(%esp),%esp
1317         movdqu  %xmm1,(%ebx)
1318 .L020cbc_abort:
1319         popl    %edi
1320         popl    %esi
1321         popl    %ebx
1322         popl    %ebp
1323         ret
1324 .size   vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
1325 #endif