OLD | NEW |
| (Empty) |
1 #if defined(__i386__) | |
2 .file "vpaes-x86.S" | |
3 .text | |
4 .align 64 | |
5 .L_vpaes_consts: | |
6 .long 218628480,235210255,168496130,67568393 | |
7 .long 252381056,17041926,33884169,51187212 | |
8 .long 252645135,252645135,252645135,252645135 | |
9 .long 1512730624,3266504856,1377990664,3401244816 | |
10 .long 830229760,1275146365,2969422977,3447763452 | |
11 .long 3411033600,2979783055,338359620,2782886510 | |
12 .long 4209124096,907596821,221174255,1006095553 | |
13 .long 191964160,3799684038,3164090317,1589111125 | |
14 .long 182528256,1777043520,2877432650,3265356744 | |
15 .long 1874708224,3503451415,3305285752,363511674 | |
16 .long 1606117888,3487855781,1093350906,2384367825 | |
17 .long 197121,67569157,134941193,202313229 | |
18 .long 67569157,134941193,202313229,197121 | |
19 .long 134941193,202313229,197121,67569157 | |
20 .long 202313229,197121,67569157,134941193 | |
21 .long 33619971,100992007,168364043,235736079 | |
22 .long 235736079,33619971,100992007,168364043 | |
23 .long 168364043,235736079,33619971,100992007 | |
24 .long 100992007,168364043,235736079,33619971 | |
25 .long 50462976,117835012,185207048,252579084 | |
26 .long 252314880,51251460,117574920,184942860 | |
27 .long 184682752,252054788,50987272,118359308 | |
28 .long 118099200,185467140,251790600,50727180 | |
29 .long 2946363062,528716217,1300004225,1881839624 | |
30 .long 1532713819,1532713819,1532713819,1532713819 | |
31 .long 3602276352,4288629033,3737020424,4153884961 | |
32 .long 1354558464,32357713,2958822624,3775749553 | |
33 .long 1201988352,132424512,1572796698,503232858 | |
34 .long 2213177600,1597421020,4103937655,675398315 | |
35 .long 2749646592,4273543773,1511898873,121693092 | |
36 .long 3040248576,1103263732,2871565598,1608280554 | |
37 .long 2236667136,2588920351,482954393,64377734 | |
38 .long 3069987328,291237287,2117370568,3650299247 | |
39 .long 533321216,3573750986,2572112006,1401264716 | |
40 .long 1339849704,2721158661,548607111,3445553514 | |
41 .long 2128193280,3054596040,2183486460,1257083700 | |
42 .long 655635200,1165381986,3923443150,2344132524 | |
43 .long 190078720,256924420,290342170,357187870 | |
44 .long 1610966272,2263057382,4103205268,309794674 | |
45 .long 2592527872,2233205587,1335446729,3402964816 | |
46 .long 3973531904,3225098121,3002836325,1918774430 | |
47 .long 3870401024,2102906079,2284471353,4117666579 | |
48 .long 617007872,1021508343,366931923,691083277 | |
49 .long 2528395776,3491914898,2968704004,1613121270 | |
50 .long 3445188352,3247741094,844474987,4093578302 | |
51 .long 651481088,1190302358,1689581232,574775300 | |
52 .long 4289380608,206939853,2555985458,2489840491 | |
53 .long 2130264064,327674451,3566485037,3349835193 | |
54 .long 2470714624,316102159,3636825756,3393945945 | |
55 .byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 | |
56 .byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 | |
57 .byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 | |
58 .byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 | |
59 .byte 118,101,114,115,105,116,121,41,0 | |
60 .align 64 | |
61 .hidden _vpaes_preheat | |
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 .hidden _vpaes_encrypt_core | |
71 .type _vpaes_encrypt_core,@function | |
72 .align 16 | |
73 _vpaes_encrypt_core: | |
74 movl $16,%ecx | |
75 movl 240(%edx),%eax | |
76 movdqa %xmm6,%xmm1 | |
77 movdqa (%ebp),%xmm2 | |
78 pandn %xmm0,%xmm1 | |
79 pand %xmm6,%xmm0 | |
80 movdqu (%edx),%xmm5 | |
81 .byte 102,15,56,0,208 | |
82 movdqa 16(%ebp),%xmm0 | |
83 pxor %xmm5,%xmm2 | |
84 psrld $4,%xmm1 | |
85 addl $16,%edx | |
86 .byte 102,15,56,0,193 | |
87 leal 192(%ebp),%ebx | |
88 pxor %xmm2,%xmm0 | |
89 jmp .L000enc_entry | |
90 .align 16 | |
91 .L001enc_loop: | |
92 movdqa 32(%ebp),%xmm4 | |
93 movdqa 48(%ebp),%xmm0 | |
94 .byte 102,15,56,0,226 | |
95 .byte 102,15,56,0,195 | |
96 pxor %xmm5,%xmm4 | |
97 movdqa 64(%ebp),%xmm5 | |
98 pxor %xmm4,%xmm0 | |
99 movdqa -64(%ebx,%ecx,1),%xmm1 | |
100 .byte 102,15,56,0,234 | |
101 movdqa 80(%ebp),%xmm2 | |
102 movdqa (%ebx,%ecx,1),%xmm4 | |
103 .byte 102,15,56,0,211 | |
104 movdqa %xmm0,%xmm3 | |
105 pxor %xmm5,%xmm2 | |
106 .byte 102,15,56,0,193 | |
107 addl $16,%edx | |
108 pxor %xmm2,%xmm0 | |
109 .byte 102,15,56,0,220 | |
110 addl $16,%ecx | |
111 pxor %xmm0,%xmm3 | |
112 .byte 102,15,56,0,193 | |
113 andl $48,%ecx | |
114 subl $1,%eax | |
115 pxor %xmm3,%xmm0 | |
116 .L000enc_entry: | |
117 movdqa %xmm6,%xmm1 | |
118 movdqa -32(%ebp),%xmm5 | |
119 pandn %xmm0,%xmm1 | |
120 psrld $4,%xmm1 | |
121 pand %xmm6,%xmm0 | |
122 .byte 102,15,56,0,232 | |
123 movdqa %xmm7,%xmm3 | |
124 pxor %xmm1,%xmm0 | |
125 .byte 102,15,56,0,217 | |
126 movdqa %xmm7,%xmm4 | |
127 pxor %xmm5,%xmm3 | |
128 .byte 102,15,56,0,224 | |
129 movdqa %xmm7,%xmm2 | |
130 pxor %xmm5,%xmm4 | |
131 .byte 102,15,56,0,211 | |
132 movdqa %xmm7,%xmm3 | |
133 pxor %xmm0,%xmm2 | |
134 .byte 102,15,56,0,220 | |
135 movdqu (%edx),%xmm5 | |
136 pxor %xmm1,%xmm3 | |
137 jnz .L001enc_loop | |
138 movdqa 96(%ebp),%xmm4 | |
139 movdqa 112(%ebp),%xmm0 | |
140 .byte 102,15,56,0,226 | |
141 pxor %xmm5,%xmm4 | |
142 .byte 102,15,56,0,195 | |
143 movdqa 64(%ebx,%ecx,1),%xmm1 | |
144 pxor %xmm4,%xmm0 | |
145 .byte 102,15,56,0,193 | |
146 ret | |
147 .size _vpaes_encrypt_core,.-_vpaes_encrypt_core | |
148 .hidden _vpaes_decrypt_core | |
149 .type _vpaes_decrypt_core,@function | |
150 .align 16 | |
151 _vpaes_decrypt_core: | |
152 leal 608(%ebp),%ebx | |
153 movl 240(%edx),%eax | |
154 movdqa %xmm6,%xmm1 | |
155 movdqa -64(%ebx),%xmm2 | |
156 pandn %xmm0,%xmm1 | |
157 movl %eax,%ecx | |
158 psrld $4,%xmm1 | |
159 movdqu (%edx),%xmm5 | |
160 shll $4,%ecx | |
161 pand %xmm6,%xmm0 | |
162 .byte 102,15,56,0,208 | |
163 movdqa -48(%ebx),%xmm0 | |
164 xorl $48,%ecx | |
165 .byte 102,15,56,0,193 | |
166 andl $48,%ecx | |
167 pxor %xmm5,%xmm2 | |
168 movdqa 176(%ebp),%xmm5 | |
169 pxor %xmm2,%xmm0 | |
170 addl $16,%edx | |
171 leal -352(%ebx,%ecx,1),%ecx | |
172 jmp .L002dec_entry | |
173 .align 16 | |
174 .L003dec_loop: | |
175 movdqa -32(%ebx),%xmm4 | |
176 movdqa -16(%ebx),%xmm1 | |
177 .byte 102,15,56,0,226 | |
178 .byte 102,15,56,0,203 | |
179 pxor %xmm4,%xmm0 | |
180 movdqa (%ebx),%xmm4 | |
181 pxor %xmm1,%xmm0 | |
182 movdqa 16(%ebx),%xmm1 | |
183 .byte 102,15,56,0,226 | |
184 .byte 102,15,56,0,197 | |
185 .byte 102,15,56,0,203 | |
186 pxor %xmm4,%xmm0 | |
187 movdqa 32(%ebx),%xmm4 | |
188 pxor %xmm1,%xmm0 | |
189 movdqa 48(%ebx),%xmm1 | |
190 .byte 102,15,56,0,226 | |
191 .byte 102,15,56,0,197 | |
192 .byte 102,15,56,0,203 | |
193 pxor %xmm4,%xmm0 | |
194 movdqa 64(%ebx),%xmm4 | |
195 pxor %xmm1,%xmm0 | |
196 movdqa 80(%ebx),%xmm1 | |
197 .byte 102,15,56,0,226 | |
198 .byte 102,15,56,0,197 | |
199 .byte 102,15,56,0,203 | |
200 pxor %xmm4,%xmm0 | |
201 addl $16,%edx | |
202 .byte 102,15,58,15,237,12 | |
203 pxor %xmm1,%xmm0 | |
204 subl $1,%eax | |
205 .L002dec_entry: | |
206 movdqa %xmm6,%xmm1 | |
207 movdqa -32(%ebp),%xmm2 | |
208 pandn %xmm0,%xmm1 | |
209 pand %xmm6,%xmm0 | |
210 psrld $4,%xmm1 | |
211 .byte 102,15,56,0,208 | |
212 movdqa %xmm7,%xmm3 | |
213 pxor %xmm1,%xmm0 | |
214 .byte 102,15,56,0,217 | |
215 movdqa %xmm7,%xmm4 | |
216 pxor %xmm2,%xmm3 | |
217 .byte 102,15,56,0,224 | |
218 pxor %xmm2,%xmm4 | |
219 movdqa %xmm7,%xmm2 | |
220 .byte 102,15,56,0,211 | |
221 movdqa %xmm7,%xmm3 | |
222 pxor %xmm0,%xmm2 | |
223 .byte 102,15,56,0,220 | |
224 movdqu (%edx),%xmm0 | |
225 pxor %xmm1,%xmm3 | |
226 jnz .L003dec_loop | |
227 movdqa 96(%ebx),%xmm4 | |
228 .byte 102,15,56,0,226 | |
229 pxor %xmm0,%xmm4 | |
230 movdqa 112(%ebx),%xmm0 | |
231 movdqa (%ecx),%xmm2 | |
232 .byte 102,15,56,0,195 | |
233 pxor %xmm4,%xmm0 | |
234 .byte 102,15,56,0,194 | |
235 ret | |
236 .size _vpaes_decrypt_core,.-_vpaes_decrypt_core | |
237 .hidden _vpaes_schedule_core | |
238 .type _vpaes_schedule_core,@function | |
239 .align 16 | |
240 _vpaes_schedule_core: | |
241 addl (%esp),%ebp | |
242 movdqu (%esi),%xmm0 | |
243 movdqa 320(%ebp),%xmm2 | |
244 movdqa %xmm0,%xmm3 | |
245 leal (%ebp),%ebx | |
246 movdqa %xmm2,4(%esp) | |
247 call _vpaes_schedule_transform | |
248 movdqa %xmm0,%xmm7 | |
249 testl %edi,%edi | |
250 jnz .L004schedule_am_decrypting | |
251 movdqu %xmm0,(%edx) | |
252 jmp .L005schedule_go | |
253 .L004schedule_am_decrypting: | |
254 movdqa 256(%ebp,%ecx,1),%xmm1 | |
255 .byte 102,15,56,0,217 | |
256 movdqu %xmm3,(%edx) | |
257 xorl $48,%ecx | |
258 .L005schedule_go: | |
259 cmpl $192,%eax | |
260 ja .L006schedule_256 | |
261 je .L007schedule_192 | |
262 .L008schedule_128: | |
263 movl $10,%eax | |
264 .L009loop_schedule_128: | |
265 call _vpaes_schedule_round | |
266 decl %eax | |
267 jz .L010schedule_mangle_last | |
268 call _vpaes_schedule_mangle | |
269 jmp .L009loop_schedule_128 | |
270 .align 16 | |
271 .L007schedule_192: | |
272 movdqu 8(%esi),%xmm0 | |
273 call _vpaes_schedule_transform | |
274 movdqa %xmm0,%xmm6 | |
275 pxor %xmm4,%xmm4 | |
276 movhlps %xmm4,%xmm6 | |
277 movl $4,%eax | |
278 .L011loop_schedule_192: | |
279 call _vpaes_schedule_round | |
280 .byte 102,15,58,15,198,8 | |
281 call _vpaes_schedule_mangle | |
282 call _vpaes_schedule_192_smear | |
283 call _vpaes_schedule_mangle | |
284 call _vpaes_schedule_round | |
285 decl %eax | |
286 jz .L010schedule_mangle_last | |
287 call _vpaes_schedule_mangle | |
288 call _vpaes_schedule_192_smear | |
289 jmp .L011loop_schedule_192 | |
290 .align 16 | |
291 .L006schedule_256: | |
292 movdqu 16(%esi),%xmm0 | |
293 call _vpaes_schedule_transform | |
294 movl $7,%eax | |
295 .L012loop_schedule_256: | |
296 call _vpaes_schedule_mangle | |
297 movdqa %xmm0,%xmm6 | |
298 call _vpaes_schedule_round | |
299 decl %eax | |
300 jz .L010schedule_mangle_last | |
301 call _vpaes_schedule_mangle | |
302 pshufd $255,%xmm0,%xmm0 | |
303 movdqa %xmm7,20(%esp) | |
304 movdqa %xmm6,%xmm7 | |
305 call .L_vpaes_schedule_low_round | |
306 movdqa 20(%esp),%xmm7 | |
307 jmp .L012loop_schedule_256 | |
308 .align 16 | |
309 .L010schedule_mangle_last: | |
310 leal 384(%ebp),%ebx | |
311 testl %edi,%edi | |
312 jnz .L013schedule_mangle_last_dec | |
313 movdqa 256(%ebp,%ecx,1),%xmm1 | |
314 .byte 102,15,56,0,193 | |
315 leal 352(%ebp),%ebx | |
316 addl $32,%edx | |
317 .L013schedule_mangle_last_dec: | |
318 addl $-16,%edx | |
319 pxor 336(%ebp),%xmm0 | |
320 call _vpaes_schedule_transform | |
321 movdqu %xmm0,(%edx) | |
322 pxor %xmm0,%xmm0 | |
323 pxor %xmm1,%xmm1 | |
324 pxor %xmm2,%xmm2 | |
325 pxor %xmm3,%xmm3 | |
326 pxor %xmm4,%xmm4 | |
327 pxor %xmm5,%xmm5 | |
328 pxor %xmm6,%xmm6 | |
329 pxor %xmm7,%xmm7 | |
330 ret | |
331 .size _vpaes_schedule_core,.-_vpaes_schedule_core | |
332 .hidden _vpaes_schedule_192_smear | |
333 .type _vpaes_schedule_192_smear,@function | |
334 .align 16 | |
335 _vpaes_schedule_192_smear: | |
336 pshufd $128,%xmm6,%xmm1 | |
337 pshufd $254,%xmm7,%xmm0 | |
338 pxor %xmm1,%xmm6 | |
339 pxor %xmm1,%xmm1 | |
340 pxor %xmm0,%xmm6 | |
341 movdqa %xmm6,%xmm0 | |
342 movhlps %xmm1,%xmm6 | |
343 ret | |
344 .size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear | |
345 .hidden _vpaes_schedule_round | |
346 .type _vpaes_schedule_round,@function | |
347 .align 16 | |
348 _vpaes_schedule_round: | |
349 movdqa 8(%esp),%xmm2 | |
350 pxor %xmm1,%xmm1 | |
351 .byte 102,15,58,15,202,15 | |
352 .byte 102,15,58,15,210,15 | |
353 pxor %xmm1,%xmm7 | |
354 pshufd $255,%xmm0,%xmm0 | |
355 .byte 102,15,58,15,192,1 | |
356 movdqa %xmm2,8(%esp) | |
357 .L_vpaes_schedule_low_round: | |
358 movdqa %xmm7,%xmm1 | |
359 pslldq $4,%xmm7 | |
360 pxor %xmm1,%xmm7 | |
361 movdqa %xmm7,%xmm1 | |
362 pslldq $8,%xmm7 | |
363 pxor %xmm1,%xmm7 | |
364 pxor 336(%ebp),%xmm7 | |
365 movdqa -16(%ebp),%xmm4 | |
366 movdqa -48(%ebp),%xmm5 | |
367 movdqa %xmm4,%xmm1 | |
368 pandn %xmm0,%xmm1 | |
369 psrld $4,%xmm1 | |
370 pand %xmm4,%xmm0 | |
371 movdqa -32(%ebp),%xmm2 | |
372 .byte 102,15,56,0,208 | |
373 pxor %xmm1,%xmm0 | |
374 movdqa %xmm5,%xmm3 | |
375 .byte 102,15,56,0,217 | |
376 pxor %xmm2,%xmm3 | |
377 movdqa %xmm5,%xmm4 | |
378 .byte 102,15,56,0,224 | |
379 pxor %xmm2,%xmm4 | |
380 movdqa %xmm5,%xmm2 | |
381 .byte 102,15,56,0,211 | |
382 pxor %xmm0,%xmm2 | |
383 movdqa %xmm5,%xmm3 | |
384 .byte 102,15,56,0,220 | |
385 pxor %xmm1,%xmm3 | |
386 movdqa 32(%ebp),%xmm4 | |
387 .byte 102,15,56,0,226 | |
388 movdqa 48(%ebp),%xmm0 | |
389 .byte 102,15,56,0,195 | |
390 pxor %xmm4,%xmm0 | |
391 pxor %xmm7,%xmm0 | |
392 movdqa %xmm0,%xmm7 | |
393 ret | |
394 .size _vpaes_schedule_round,.-_vpaes_schedule_round | |
395 .hidden _vpaes_schedule_transform | |
396 .type _vpaes_schedule_transform,@function | |
397 .align 16 | |
398 _vpaes_schedule_transform: | |
399 movdqa -16(%ebp),%xmm2 | |
400 movdqa %xmm2,%xmm1 | |
401 pandn %xmm0,%xmm1 | |
402 psrld $4,%xmm1 | |
403 pand %xmm2,%xmm0 | |
404 movdqa (%ebx),%xmm2 | |
405 .byte 102,15,56,0,208 | |
406 movdqa 16(%ebx),%xmm0 | |
407 .byte 102,15,56,0,193 | |
408 pxor %xmm2,%xmm0 | |
409 ret | |
410 .size _vpaes_schedule_transform,.-_vpaes_schedule_transform | |
411 .hidden _vpaes_schedule_mangle | |
412 .type _vpaes_schedule_mangle,@function | |
413 .align 16 | |
414 _vpaes_schedule_mangle: | |
415 movdqa %xmm0,%xmm4 | |
416 movdqa 128(%ebp),%xmm5 | |
417 testl %edi,%edi | |
418 jnz .L014schedule_mangle_dec | |
419 addl $16,%edx | |
420 pxor 336(%ebp),%xmm4 | |
421 .byte 102,15,56,0,229 | |
422 movdqa %xmm4,%xmm3 | |
423 .byte 102,15,56,0,229 | |
424 pxor %xmm4,%xmm3 | |
425 .byte 102,15,56,0,229 | |
426 pxor %xmm4,%xmm3 | |
427 jmp .L015schedule_mangle_both | |
428 .align 16 | |
429 .L014schedule_mangle_dec: | |
430 movdqa -16(%ebp),%xmm2 | |
431 leal 416(%ebp),%esi | |
432 movdqa %xmm2,%xmm1 | |
433 pandn %xmm4,%xmm1 | |
434 psrld $4,%xmm1 | |
435 pand %xmm2,%xmm4 | |
436 movdqa (%esi),%xmm2 | |
437 .byte 102,15,56,0,212 | |
438 movdqa 16(%esi),%xmm3 | |
439 .byte 102,15,56,0,217 | |
440 pxor %xmm2,%xmm3 | |
441 .byte 102,15,56,0,221 | |
442 movdqa 32(%esi),%xmm2 | |
443 .byte 102,15,56,0,212 | |
444 pxor %xmm3,%xmm2 | |
445 movdqa 48(%esi),%xmm3 | |
446 .byte 102,15,56,0,217 | |
447 pxor %xmm2,%xmm3 | |
448 .byte 102,15,56,0,221 | |
449 movdqa 64(%esi),%xmm2 | |
450 .byte 102,15,56,0,212 | |
451 pxor %xmm3,%xmm2 | |
452 movdqa 80(%esi),%xmm3 | |
453 .byte 102,15,56,0,217 | |
454 pxor %xmm2,%xmm3 | |
455 .byte 102,15,56,0,221 | |
456 movdqa 96(%esi),%xmm2 | |
457 .byte 102,15,56,0,212 | |
458 pxor %xmm3,%xmm2 | |
459 movdqa 112(%esi),%xmm3 | |
460 .byte 102,15,56,0,217 | |
461 pxor %xmm2,%xmm3 | |
462 addl $-16,%edx | |
463 .L015schedule_mangle_both: | |
464 movdqa 256(%ebp,%ecx,1),%xmm1 | |
465 .byte 102,15,56,0,217 | |
466 addl $-16,%ecx | |
467 andl $48,%ecx | |
468 movdqu %xmm3,(%edx) | |
469 ret | |
470 .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle | |
471 .globl vpaes_set_encrypt_key | |
472 .hidden vpaes_set_encrypt_key | |
473 .type vpaes_set_encrypt_key,@function | |
474 .align 16 | |
475 vpaes_set_encrypt_key: | |
476 .L_vpaes_set_encrypt_key_begin: | |
477 pushl %ebp | |
478 pushl %ebx | |
479 pushl %esi | |
480 pushl %edi | |
481 movl 20(%esp),%esi | |
482 leal -56(%esp),%ebx | |
483 movl 24(%esp),%eax | |
484 andl $-16,%ebx | |
485 movl 28(%esp),%edx | |
486 xchgl %esp,%ebx | |
487 movl %ebx,48(%esp) | |
488 movl %eax,%ebx | |
489 shrl $5,%ebx | |
490 addl $5,%ebx | |
491 movl %ebx,240(%edx) | |
492 movl $48,%ecx | |
493 movl $0,%edi | |
494 leal .L_vpaes_consts+0x30-.L016pic_point,%ebp | |
495 call _vpaes_schedule_core | |
496 .L016pic_point: | |
497 movl 48(%esp),%esp | |
498 xorl %eax,%eax | |
499 popl %edi | |
500 popl %esi | |
501 popl %ebx | |
502 popl %ebp | |
503 ret | |
504 .size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin | |
505 .globl vpaes_set_decrypt_key | |
506 .hidden vpaes_set_decrypt_key | |
507 .type vpaes_set_decrypt_key,@function | |
508 .align 16 | |
509 vpaes_set_decrypt_key: | |
510 .L_vpaes_set_decrypt_key_begin: | |
511 pushl %ebp | |
512 pushl %ebx | |
513 pushl %esi | |
514 pushl %edi | |
515 movl 20(%esp),%esi | |
516 leal -56(%esp),%ebx | |
517 movl 24(%esp),%eax | |
518 andl $-16,%ebx | |
519 movl 28(%esp),%edx | |
520 xchgl %esp,%ebx | |
521 movl %ebx,48(%esp) | |
522 movl %eax,%ebx | |
523 shrl $5,%ebx | |
524 addl $5,%ebx | |
525 movl %ebx,240(%edx) | |
526 shll $4,%ebx | |
527 leal 16(%edx,%ebx,1),%edx | |
528 movl $1,%edi | |
529 movl %eax,%ecx | |
530 shrl $1,%ecx | |
531 andl $32,%ecx | |
532 xorl $32,%ecx | |
533 leal .L_vpaes_consts+0x30-.L017pic_point,%ebp | |
534 call _vpaes_schedule_core | |
535 .L017pic_point: | |
536 movl 48(%esp),%esp | |
537 xorl %eax,%eax | |
538 popl %edi | |
539 popl %esi | |
540 popl %ebx | |
541 popl %ebp | |
542 ret | |
543 .size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin | |
544 .globl vpaes_encrypt | |
545 .hidden vpaes_encrypt | |
546 .type vpaes_encrypt,@function | |
547 .align 16 | |
548 vpaes_encrypt: | |
549 .L_vpaes_encrypt_begin: | |
550 pushl %ebp | |
551 pushl %ebx | |
552 pushl %esi | |
553 pushl %edi | |
554 leal .L_vpaes_consts+0x30-.L018pic_point,%ebp | |
555 call _vpaes_preheat | |
556 .L018pic_point: | |
557 movl 20(%esp),%esi | |
558 leal -56(%esp),%ebx | |
559 movl 24(%esp),%edi | |
560 andl $-16,%ebx | |
561 movl 28(%esp),%edx | |
562 xchgl %esp,%ebx | |
563 movl %ebx,48(%esp) | |
564 movdqu (%esi),%xmm0 | |
565 call _vpaes_encrypt_core | |
566 movdqu %xmm0,(%edi) | |
567 movl 48(%esp),%esp | |
568 popl %edi | |
569 popl %esi | |
570 popl %ebx | |
571 popl %ebp | |
572 ret | |
573 .size vpaes_encrypt,.-.L_vpaes_encrypt_begin | |
574 .globl vpaes_decrypt | |
575 .hidden vpaes_decrypt | |
576 .type vpaes_decrypt,@function | |
577 .align 16 | |
578 vpaes_decrypt: | |
579 .L_vpaes_decrypt_begin: | |
580 pushl %ebp | |
581 pushl %ebx | |
582 pushl %esi | |
583 pushl %edi | |
584 leal .L_vpaes_consts+0x30-.L019pic_point,%ebp | |
585 call _vpaes_preheat | |
586 .L019pic_point: | |
587 movl 20(%esp),%esi | |
588 leal -56(%esp),%ebx | |
589 movl 24(%esp),%edi | |
590 andl $-16,%ebx | |
591 movl 28(%esp),%edx | |
592 xchgl %esp,%ebx | |
593 movl %ebx,48(%esp) | |
594 movdqu (%esi),%xmm0 | |
595 call _vpaes_decrypt_core | |
596 movdqu %xmm0,(%edi) | |
597 movl 48(%esp),%esp | |
598 popl %edi | |
599 popl %esi | |
600 popl %ebx | |
601 popl %ebp | |
602 ret | |
603 .size vpaes_decrypt,.-.L_vpaes_decrypt_begin | |
604 .globl vpaes_cbc_encrypt | |
605 .hidden vpaes_cbc_encrypt | |
606 .type vpaes_cbc_encrypt,@function | |
607 .align 16 | |
608 vpaes_cbc_encrypt: | |
609 .L_vpaes_cbc_encrypt_begin: | |
610 pushl %ebp | |
611 pushl %ebx | |
612 pushl %esi | |
613 pushl %edi | |
614 movl 20(%esp),%esi | |
615 movl 24(%esp),%edi | |
616 movl 28(%esp),%eax | |
617 movl 32(%esp),%edx | |
618 subl $16,%eax | |
619 jc .L020cbc_abort | |
620 leal -56(%esp),%ebx | |
621 movl 36(%esp),%ebp | |
622 andl $-16,%ebx | |
623 movl 40(%esp),%ecx | |
624 xchgl %esp,%ebx | |
625 movdqu (%ebp),%xmm1 | |
626 subl %esi,%edi | |
627 movl %ebx,48(%esp) | |
628 movl %edi,(%esp) | |
629 movl %edx,4(%esp) | |
630 movl %ebp,8(%esp) | |
631 movl %eax,%edi | |
632 leal .L_vpaes_consts+0x30-.L021pic_point,%ebp | |
633 call _vpaes_preheat | |
634 .L021pic_point: | |
635 cmpl $0,%ecx | |
636 je .L022cbc_dec_loop | |
637 jmp .L023cbc_enc_loop | |
638 .align 16 | |
639 .L023cbc_enc_loop: | |
640 movdqu (%esi),%xmm0 | |
641 pxor %xmm1,%xmm0 | |
642 call _vpaes_encrypt_core | |
643 movl (%esp),%ebx | |
644 movl 4(%esp),%edx | |
645 movdqa %xmm0,%xmm1 | |
646 movdqu %xmm0,(%ebx,%esi,1) | |
647 leal 16(%esi),%esi | |
648 subl $16,%edi | |
649 jnc .L023cbc_enc_loop | |
650 jmp .L024cbc_done | |
651 .align 16 | |
652 .L022cbc_dec_loop: | |
653 movdqu (%esi),%xmm0 | |
654 movdqa %xmm1,16(%esp) | |
655 movdqa %xmm0,32(%esp) | |
656 call _vpaes_decrypt_core | |
657 movl (%esp),%ebx | |
658 movl 4(%esp),%edx | |
659 pxor 16(%esp),%xmm0 | |
660 movdqa 32(%esp),%xmm1 | |
661 movdqu %xmm0,(%ebx,%esi,1) | |
662 leal 16(%esi),%esi | |
663 subl $16,%edi | |
664 jnc .L022cbc_dec_loop | |
665 .L024cbc_done: | |
666 movl 8(%esp),%ebx | |
667 movl 48(%esp),%esp | |
668 movdqu %xmm1,(%ebx) | |
669 .L020cbc_abort: | |
670 popl %edi | |
671 popl %esi | |
672 popl %ebx | |
673 popl %ebp | |
674 ret | |
675 .size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin | |
676 #endif | |
OLD | NEW |