OLD | NEW |
| (Empty) |
1 #if defined(__i386__) | |
2 .file "vpaes-x86.S" | |
3 .text | |
4 .align 6,0x90 | |
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 6,0x90 | |
61 .private_extern __vpaes_preheat | |
62 .align 4 | |
63 __vpaes_preheat: | |
64 addl (%esp),%ebp | |
65 movdqa -48(%ebp),%xmm7 | |
66 movdqa -16(%ebp),%xmm6 | |
67 ret | |
68 .private_extern __vpaes_encrypt_core | |
69 .align 4 | |
70 __vpaes_encrypt_core: | |
71 movl $16,%ecx | |
72 movl 240(%edx),%eax | |
73 movdqa %xmm6,%xmm1 | |
74 movdqa (%ebp),%xmm2 | |
75 pandn %xmm0,%xmm1 | |
76 pand %xmm6,%xmm0 | |
77 movdqu (%edx),%xmm5 | |
78 .byte 102,15,56,0,208 | |
79 movdqa 16(%ebp),%xmm0 | |
80 pxor %xmm5,%xmm2 | |
81 psrld $4,%xmm1 | |
82 addl $16,%edx | |
83 .byte 102,15,56,0,193 | |
84 leal 192(%ebp),%ebx | |
85 pxor %xmm2,%xmm0 | |
86 jmp L000enc_entry | |
87 .align 4,0x90 | |
88 L001enc_loop: | |
89 movdqa 32(%ebp),%xmm4 | |
90 movdqa 48(%ebp),%xmm0 | |
91 .byte 102,15,56,0,226 | |
92 .byte 102,15,56,0,195 | |
93 pxor %xmm5,%xmm4 | |
94 movdqa 64(%ebp),%xmm5 | |
95 pxor %xmm4,%xmm0 | |
96 movdqa -64(%ebx,%ecx,1),%xmm1 | |
97 .byte 102,15,56,0,234 | |
98 movdqa 80(%ebp),%xmm2 | |
99 movdqa (%ebx,%ecx,1),%xmm4 | |
100 .byte 102,15,56,0,211 | |
101 movdqa %xmm0,%xmm3 | |
102 pxor %xmm5,%xmm2 | |
103 .byte 102,15,56,0,193 | |
104 addl $16,%edx | |
105 pxor %xmm2,%xmm0 | |
106 .byte 102,15,56,0,220 | |
107 addl $16,%ecx | |
108 pxor %xmm0,%xmm3 | |
109 .byte 102,15,56,0,193 | |
110 andl $48,%ecx | |
111 subl $1,%eax | |
112 pxor %xmm3,%xmm0 | |
113 L000enc_entry: | |
114 movdqa %xmm6,%xmm1 | |
115 movdqa -32(%ebp),%xmm5 | |
116 pandn %xmm0,%xmm1 | |
117 psrld $4,%xmm1 | |
118 pand %xmm6,%xmm0 | |
119 .byte 102,15,56,0,232 | |
120 movdqa %xmm7,%xmm3 | |
121 pxor %xmm1,%xmm0 | |
122 .byte 102,15,56,0,217 | |
123 movdqa %xmm7,%xmm4 | |
124 pxor %xmm5,%xmm3 | |
125 .byte 102,15,56,0,224 | |
126 movdqa %xmm7,%xmm2 | |
127 pxor %xmm5,%xmm4 | |
128 .byte 102,15,56,0,211 | |
129 movdqa %xmm7,%xmm3 | |
130 pxor %xmm0,%xmm2 | |
131 .byte 102,15,56,0,220 | |
132 movdqu (%edx),%xmm5 | |
133 pxor %xmm1,%xmm3 | |
134 jnz L001enc_loop | |
135 movdqa 96(%ebp),%xmm4 | |
136 movdqa 112(%ebp),%xmm0 | |
137 .byte 102,15,56,0,226 | |
138 pxor %xmm5,%xmm4 | |
139 .byte 102,15,56,0,195 | |
140 movdqa 64(%ebx,%ecx,1),%xmm1 | |
141 pxor %xmm4,%xmm0 | |
142 .byte 102,15,56,0,193 | |
143 ret | |
144 .private_extern __vpaes_decrypt_core | |
145 .align 4 | |
146 __vpaes_decrypt_core: | |
147 leal 608(%ebp),%ebx | |
148 movl 240(%edx),%eax | |
149 movdqa %xmm6,%xmm1 | |
150 movdqa -64(%ebx),%xmm2 | |
151 pandn %xmm0,%xmm1 | |
152 movl %eax,%ecx | |
153 psrld $4,%xmm1 | |
154 movdqu (%edx),%xmm5 | |
155 shll $4,%ecx | |
156 pand %xmm6,%xmm0 | |
157 .byte 102,15,56,0,208 | |
158 movdqa -48(%ebx),%xmm0 | |
159 xorl $48,%ecx | |
160 .byte 102,15,56,0,193 | |
161 andl $48,%ecx | |
162 pxor %xmm5,%xmm2 | |
163 movdqa 176(%ebp),%xmm5 | |
164 pxor %xmm2,%xmm0 | |
165 addl $16,%edx | |
166 leal -352(%ebx,%ecx,1),%ecx | |
167 jmp L002dec_entry | |
168 .align 4,0x90 | |
169 L003dec_loop: | |
170 movdqa -32(%ebx),%xmm4 | |
171 movdqa -16(%ebx),%xmm1 | |
172 .byte 102,15,56,0,226 | |
173 .byte 102,15,56,0,203 | |
174 pxor %xmm4,%xmm0 | |
175 movdqa (%ebx),%xmm4 | |
176 pxor %xmm1,%xmm0 | |
177 movdqa 16(%ebx),%xmm1 | |
178 .byte 102,15,56,0,226 | |
179 .byte 102,15,56,0,197 | |
180 .byte 102,15,56,0,203 | |
181 pxor %xmm4,%xmm0 | |
182 movdqa 32(%ebx),%xmm4 | |
183 pxor %xmm1,%xmm0 | |
184 movdqa 48(%ebx),%xmm1 | |
185 .byte 102,15,56,0,226 | |
186 .byte 102,15,56,0,197 | |
187 .byte 102,15,56,0,203 | |
188 pxor %xmm4,%xmm0 | |
189 movdqa 64(%ebx),%xmm4 | |
190 pxor %xmm1,%xmm0 | |
191 movdqa 80(%ebx),%xmm1 | |
192 .byte 102,15,56,0,226 | |
193 .byte 102,15,56,0,197 | |
194 .byte 102,15,56,0,203 | |
195 pxor %xmm4,%xmm0 | |
196 addl $16,%edx | |
197 .byte 102,15,58,15,237,12 | |
198 pxor %xmm1,%xmm0 | |
199 subl $1,%eax | |
200 L002dec_entry: | |
201 movdqa %xmm6,%xmm1 | |
202 movdqa -32(%ebp),%xmm2 | |
203 pandn %xmm0,%xmm1 | |
204 pand %xmm6,%xmm0 | |
205 psrld $4,%xmm1 | |
206 .byte 102,15,56,0,208 | |
207 movdqa %xmm7,%xmm3 | |
208 pxor %xmm1,%xmm0 | |
209 .byte 102,15,56,0,217 | |
210 movdqa %xmm7,%xmm4 | |
211 pxor %xmm2,%xmm3 | |
212 .byte 102,15,56,0,224 | |
213 pxor %xmm2,%xmm4 | |
214 movdqa %xmm7,%xmm2 | |
215 .byte 102,15,56,0,211 | |
216 movdqa %xmm7,%xmm3 | |
217 pxor %xmm0,%xmm2 | |
218 .byte 102,15,56,0,220 | |
219 movdqu (%edx),%xmm0 | |
220 pxor %xmm1,%xmm3 | |
221 jnz L003dec_loop | |
222 movdqa 96(%ebx),%xmm4 | |
223 .byte 102,15,56,0,226 | |
224 pxor %xmm0,%xmm4 | |
225 movdqa 112(%ebx),%xmm0 | |
226 movdqa (%ecx),%xmm2 | |
227 .byte 102,15,56,0,195 | |
228 pxor %xmm4,%xmm0 | |
229 .byte 102,15,56,0,194 | |
230 ret | |
231 .private_extern __vpaes_schedule_core | |
232 .align 4 | |
233 __vpaes_schedule_core: | |
234 addl (%esp),%ebp | |
235 movdqu (%esi),%xmm0 | |
236 movdqa 320(%ebp),%xmm2 | |
237 movdqa %xmm0,%xmm3 | |
238 leal (%ebp),%ebx | |
239 movdqa %xmm2,4(%esp) | |
240 call __vpaes_schedule_transform | |
241 movdqa %xmm0,%xmm7 | |
242 testl %edi,%edi | |
243 jnz L004schedule_am_decrypting | |
244 movdqu %xmm0,(%edx) | |
245 jmp L005schedule_go | |
246 L004schedule_am_decrypting: | |
247 movdqa 256(%ebp,%ecx,1),%xmm1 | |
248 .byte 102,15,56,0,217 | |
249 movdqu %xmm3,(%edx) | |
250 xorl $48,%ecx | |
251 L005schedule_go: | |
252 cmpl $192,%eax | |
253 ja L006schedule_256 | |
254 je L007schedule_192 | |
255 L008schedule_128: | |
256 movl $10,%eax | |
257 L009loop_schedule_128: | |
258 call __vpaes_schedule_round | |
259 decl %eax | |
260 jz L010schedule_mangle_last | |
261 call __vpaes_schedule_mangle | |
262 jmp L009loop_schedule_128 | |
263 .align 4,0x90 | |
264 L007schedule_192: | |
265 movdqu 8(%esi),%xmm0 | |
266 call __vpaes_schedule_transform | |
267 movdqa %xmm0,%xmm6 | |
268 pxor %xmm4,%xmm4 | |
269 movhlps %xmm4,%xmm6 | |
270 movl $4,%eax | |
271 L011loop_schedule_192: | |
272 call __vpaes_schedule_round | |
273 .byte 102,15,58,15,198,8 | |
274 call __vpaes_schedule_mangle | |
275 call __vpaes_schedule_192_smear | |
276 call __vpaes_schedule_mangle | |
277 call __vpaes_schedule_round | |
278 decl %eax | |
279 jz L010schedule_mangle_last | |
280 call __vpaes_schedule_mangle | |
281 call __vpaes_schedule_192_smear | |
282 jmp L011loop_schedule_192 | |
283 .align 4,0x90 | |
284 L006schedule_256: | |
285 movdqu 16(%esi),%xmm0 | |
286 call __vpaes_schedule_transform | |
287 movl $7,%eax | |
288 L012loop_schedule_256: | |
289 call __vpaes_schedule_mangle | |
290 movdqa %xmm0,%xmm6 | |
291 call __vpaes_schedule_round | |
292 decl %eax | |
293 jz L010schedule_mangle_last | |
294 call __vpaes_schedule_mangle | |
295 pshufd $255,%xmm0,%xmm0 | |
296 movdqa %xmm7,20(%esp) | |
297 movdqa %xmm6,%xmm7 | |
298 call L_vpaes_schedule_low_round | |
299 movdqa 20(%esp),%xmm7 | |
300 jmp L012loop_schedule_256 | |
301 .align 4,0x90 | |
302 L010schedule_mangle_last: | |
303 leal 384(%ebp),%ebx | |
304 testl %edi,%edi | |
305 jnz L013schedule_mangle_last_dec | |
306 movdqa 256(%ebp,%ecx,1),%xmm1 | |
307 .byte 102,15,56,0,193 | |
308 leal 352(%ebp),%ebx | |
309 addl $32,%edx | |
310 L013schedule_mangle_last_dec: | |
311 addl $-16,%edx | |
312 pxor 336(%ebp),%xmm0 | |
313 call __vpaes_schedule_transform | |
314 movdqu %xmm0,(%edx) | |
315 pxor %xmm0,%xmm0 | |
316 pxor %xmm1,%xmm1 | |
317 pxor %xmm2,%xmm2 | |
318 pxor %xmm3,%xmm3 | |
319 pxor %xmm4,%xmm4 | |
320 pxor %xmm5,%xmm5 | |
321 pxor %xmm6,%xmm6 | |
322 pxor %xmm7,%xmm7 | |
323 ret | |
324 .private_extern __vpaes_schedule_192_smear | |
325 .align 4 | |
326 __vpaes_schedule_192_smear: | |
327 pshufd $128,%xmm6,%xmm1 | |
328 pshufd $254,%xmm7,%xmm0 | |
329 pxor %xmm1,%xmm6 | |
330 pxor %xmm1,%xmm1 | |
331 pxor %xmm0,%xmm6 | |
332 movdqa %xmm6,%xmm0 | |
333 movhlps %xmm1,%xmm6 | |
334 ret | |
335 .private_extern __vpaes_schedule_round | |
336 .align 4 | |
337 __vpaes_schedule_round: | |
338 movdqa 8(%esp),%xmm2 | |
339 pxor %xmm1,%xmm1 | |
340 .byte 102,15,58,15,202,15 | |
341 .byte 102,15,58,15,210,15 | |
342 pxor %xmm1,%xmm7 | |
343 pshufd $255,%xmm0,%xmm0 | |
344 .byte 102,15,58,15,192,1 | |
345 movdqa %xmm2,8(%esp) | |
346 L_vpaes_schedule_low_round: | |
347 movdqa %xmm7,%xmm1 | |
348 pslldq $4,%xmm7 | |
349 pxor %xmm1,%xmm7 | |
350 movdqa %xmm7,%xmm1 | |
351 pslldq $8,%xmm7 | |
352 pxor %xmm1,%xmm7 | |
353 pxor 336(%ebp),%xmm7 | |
354 movdqa -16(%ebp),%xmm4 | |
355 movdqa -48(%ebp),%xmm5 | |
356 movdqa %xmm4,%xmm1 | |
357 pandn %xmm0,%xmm1 | |
358 psrld $4,%xmm1 | |
359 pand %xmm4,%xmm0 | |
360 movdqa -32(%ebp),%xmm2 | |
361 .byte 102,15,56,0,208 | |
362 pxor %xmm1,%xmm0 | |
363 movdqa %xmm5,%xmm3 | |
364 .byte 102,15,56,0,217 | |
365 pxor %xmm2,%xmm3 | |
366 movdqa %xmm5,%xmm4 | |
367 .byte 102,15,56,0,224 | |
368 pxor %xmm2,%xmm4 | |
369 movdqa %xmm5,%xmm2 | |
370 .byte 102,15,56,0,211 | |
371 pxor %xmm0,%xmm2 | |
372 movdqa %xmm5,%xmm3 | |
373 .byte 102,15,56,0,220 | |
374 pxor %xmm1,%xmm3 | |
375 movdqa 32(%ebp),%xmm4 | |
376 .byte 102,15,56,0,226 | |
377 movdqa 48(%ebp),%xmm0 | |
378 .byte 102,15,56,0,195 | |
379 pxor %xmm4,%xmm0 | |
380 pxor %xmm7,%xmm0 | |
381 movdqa %xmm0,%xmm7 | |
382 ret | |
383 .private_extern __vpaes_schedule_transform | |
384 .align 4 | |
385 __vpaes_schedule_transform: | |
386 movdqa -16(%ebp),%xmm2 | |
387 movdqa %xmm2,%xmm1 | |
388 pandn %xmm0,%xmm1 | |
389 psrld $4,%xmm1 | |
390 pand %xmm2,%xmm0 | |
391 movdqa (%ebx),%xmm2 | |
392 .byte 102,15,56,0,208 | |
393 movdqa 16(%ebx),%xmm0 | |
394 .byte 102,15,56,0,193 | |
395 pxor %xmm2,%xmm0 | |
396 ret | |
397 .private_extern __vpaes_schedule_mangle | |
398 .align 4 | |
399 __vpaes_schedule_mangle: | |
400 movdqa %xmm0,%xmm4 | |
401 movdqa 128(%ebp),%xmm5 | |
402 testl %edi,%edi | |
403 jnz L014schedule_mangle_dec | |
404 addl $16,%edx | |
405 pxor 336(%ebp),%xmm4 | |
406 .byte 102,15,56,0,229 | |
407 movdqa %xmm4,%xmm3 | |
408 .byte 102,15,56,0,229 | |
409 pxor %xmm4,%xmm3 | |
410 .byte 102,15,56,0,229 | |
411 pxor %xmm4,%xmm3 | |
412 jmp L015schedule_mangle_both | |
413 .align 4,0x90 | |
414 L014schedule_mangle_dec: | |
415 movdqa -16(%ebp),%xmm2 | |
416 leal 416(%ebp),%esi | |
417 movdqa %xmm2,%xmm1 | |
418 pandn %xmm4,%xmm1 | |
419 psrld $4,%xmm1 | |
420 pand %xmm2,%xmm4 | |
421 movdqa (%esi),%xmm2 | |
422 .byte 102,15,56,0,212 | |
423 movdqa 16(%esi),%xmm3 | |
424 .byte 102,15,56,0,217 | |
425 pxor %xmm2,%xmm3 | |
426 .byte 102,15,56,0,221 | |
427 movdqa 32(%esi),%xmm2 | |
428 .byte 102,15,56,0,212 | |
429 pxor %xmm3,%xmm2 | |
430 movdqa 48(%esi),%xmm3 | |
431 .byte 102,15,56,0,217 | |
432 pxor %xmm2,%xmm3 | |
433 .byte 102,15,56,0,221 | |
434 movdqa 64(%esi),%xmm2 | |
435 .byte 102,15,56,0,212 | |
436 pxor %xmm3,%xmm2 | |
437 movdqa 80(%esi),%xmm3 | |
438 .byte 102,15,56,0,217 | |
439 pxor %xmm2,%xmm3 | |
440 .byte 102,15,56,0,221 | |
441 movdqa 96(%esi),%xmm2 | |
442 .byte 102,15,56,0,212 | |
443 pxor %xmm3,%xmm2 | |
444 movdqa 112(%esi),%xmm3 | |
445 .byte 102,15,56,0,217 | |
446 pxor %xmm2,%xmm3 | |
447 addl $-16,%edx | |
448 L015schedule_mangle_both: | |
449 movdqa 256(%ebp,%ecx,1),%xmm1 | |
450 .byte 102,15,56,0,217 | |
451 addl $-16,%ecx | |
452 andl $48,%ecx | |
453 movdqu %xmm3,(%edx) | |
454 ret | |
455 .globl _vpaes_set_encrypt_key | |
456 .private_extern _vpaes_set_encrypt_key | |
457 .align 4 | |
458 _vpaes_set_encrypt_key: | |
459 L_vpaes_set_encrypt_key_begin: | |
460 pushl %ebp | |
461 pushl %ebx | |
462 pushl %esi | |
463 pushl %edi | |
464 movl 20(%esp),%esi | |
465 leal -56(%esp),%ebx | |
466 movl 24(%esp),%eax | |
467 andl $-16,%ebx | |
468 movl 28(%esp),%edx | |
469 xchgl %esp,%ebx | |
470 movl %ebx,48(%esp) | |
471 movl %eax,%ebx | |
472 shrl $5,%ebx | |
473 addl $5,%ebx | |
474 movl %ebx,240(%edx) | |
475 movl $48,%ecx | |
476 movl $0,%edi | |
477 leal L_vpaes_consts+0x30-L016pic_point,%ebp | |
478 call __vpaes_schedule_core | |
479 L016pic_point: | |
480 movl 48(%esp),%esp | |
481 xorl %eax,%eax | |
482 popl %edi | |
483 popl %esi | |
484 popl %ebx | |
485 popl %ebp | |
486 ret | |
487 .globl _vpaes_set_decrypt_key | |
488 .private_extern _vpaes_set_decrypt_key | |
489 .align 4 | |
490 _vpaes_set_decrypt_key: | |
491 L_vpaes_set_decrypt_key_begin: | |
492 pushl %ebp | |
493 pushl %ebx | |
494 pushl %esi | |
495 pushl %edi | |
496 movl 20(%esp),%esi | |
497 leal -56(%esp),%ebx | |
498 movl 24(%esp),%eax | |
499 andl $-16,%ebx | |
500 movl 28(%esp),%edx | |
501 xchgl %esp,%ebx | |
502 movl %ebx,48(%esp) | |
503 movl %eax,%ebx | |
504 shrl $5,%ebx | |
505 addl $5,%ebx | |
506 movl %ebx,240(%edx) | |
507 shll $4,%ebx | |
508 leal 16(%edx,%ebx,1),%edx | |
509 movl $1,%edi | |
510 movl %eax,%ecx | |
511 shrl $1,%ecx | |
512 andl $32,%ecx | |
513 xorl $32,%ecx | |
514 leal L_vpaes_consts+0x30-L017pic_point,%ebp | |
515 call __vpaes_schedule_core | |
516 L017pic_point: | |
517 movl 48(%esp),%esp | |
518 xorl %eax,%eax | |
519 popl %edi | |
520 popl %esi | |
521 popl %ebx | |
522 popl %ebp | |
523 ret | |
524 .globl _vpaes_encrypt | |
525 .private_extern _vpaes_encrypt | |
526 .align 4 | |
527 _vpaes_encrypt: | |
528 L_vpaes_encrypt_begin: | |
529 pushl %ebp | |
530 pushl %ebx | |
531 pushl %esi | |
532 pushl %edi | |
533 leal L_vpaes_consts+0x30-L018pic_point,%ebp | |
534 call __vpaes_preheat | |
535 L018pic_point: | |
536 movl 20(%esp),%esi | |
537 leal -56(%esp),%ebx | |
538 movl 24(%esp),%edi | |
539 andl $-16,%ebx | |
540 movl 28(%esp),%edx | |
541 xchgl %esp,%ebx | |
542 movl %ebx,48(%esp) | |
543 movdqu (%esi),%xmm0 | |
544 call __vpaes_encrypt_core | |
545 movdqu %xmm0,(%edi) | |
546 movl 48(%esp),%esp | |
547 popl %edi | |
548 popl %esi | |
549 popl %ebx | |
550 popl %ebp | |
551 ret | |
552 .globl _vpaes_decrypt | |
553 .private_extern _vpaes_decrypt | |
554 .align 4 | |
555 _vpaes_decrypt: | |
556 L_vpaes_decrypt_begin: | |
557 pushl %ebp | |
558 pushl %ebx | |
559 pushl %esi | |
560 pushl %edi | |
561 leal L_vpaes_consts+0x30-L019pic_point,%ebp | |
562 call __vpaes_preheat | |
563 L019pic_point: | |
564 movl 20(%esp),%esi | |
565 leal -56(%esp),%ebx | |
566 movl 24(%esp),%edi | |
567 andl $-16,%ebx | |
568 movl 28(%esp),%edx | |
569 xchgl %esp,%ebx | |
570 movl %ebx,48(%esp) | |
571 movdqu (%esi),%xmm0 | |
572 call __vpaes_decrypt_core | |
573 movdqu %xmm0,(%edi) | |
574 movl 48(%esp),%esp | |
575 popl %edi | |
576 popl %esi | |
577 popl %ebx | |
578 popl %ebp | |
579 ret | |
580 .globl _vpaes_cbc_encrypt | |
581 .private_extern _vpaes_cbc_encrypt | |
582 .align 4 | |
583 _vpaes_cbc_encrypt: | |
584 L_vpaes_cbc_encrypt_begin: | |
585 pushl %ebp | |
586 pushl %ebx | |
587 pushl %esi | |
588 pushl %edi | |
589 movl 20(%esp),%esi | |
590 movl 24(%esp),%edi | |
591 movl 28(%esp),%eax | |
592 movl 32(%esp),%edx | |
593 subl $16,%eax | |
594 jc L020cbc_abort | |
595 leal -56(%esp),%ebx | |
596 movl 36(%esp),%ebp | |
597 andl $-16,%ebx | |
598 movl 40(%esp),%ecx | |
599 xchgl %esp,%ebx | |
600 movdqu (%ebp),%xmm1 | |
601 subl %esi,%edi | |
602 movl %ebx,48(%esp) | |
603 movl %edi,(%esp) | |
604 movl %edx,4(%esp) | |
605 movl %ebp,8(%esp) | |
606 movl %eax,%edi | |
607 leal L_vpaes_consts+0x30-L021pic_point,%ebp | |
608 call __vpaes_preheat | |
609 L021pic_point: | |
610 cmpl $0,%ecx | |
611 je L022cbc_dec_loop | |
612 jmp L023cbc_enc_loop | |
613 .align 4,0x90 | |
614 L023cbc_enc_loop: | |
615 movdqu (%esi),%xmm0 | |
616 pxor %xmm1,%xmm0 | |
617 call __vpaes_encrypt_core | |
618 movl (%esp),%ebx | |
619 movl 4(%esp),%edx | |
620 movdqa %xmm0,%xmm1 | |
621 movdqu %xmm0,(%ebx,%esi,1) | |
622 leal 16(%esi),%esi | |
623 subl $16,%edi | |
624 jnc L023cbc_enc_loop | |
625 jmp L024cbc_done | |
626 .align 4,0x90 | |
627 L022cbc_dec_loop: | |
628 movdqu (%esi),%xmm0 | |
629 movdqa %xmm1,16(%esp) | |
630 movdqa %xmm0,32(%esp) | |
631 call __vpaes_decrypt_core | |
632 movl (%esp),%ebx | |
633 movl 4(%esp),%edx | |
634 pxor 16(%esp),%xmm0 | |
635 movdqa 32(%esp),%xmm1 | |
636 movdqu %xmm0,(%ebx,%esi,1) | |
637 leal 16(%esi),%esi | |
638 subl $16,%edi | |
639 jnc L022cbc_dec_loop | |
640 L024cbc_done: | |
641 movl 8(%esp),%ebx | |
642 movl 48(%esp),%esp | |
643 movdqu %xmm1,(%ebx) | |
644 L020cbc_abort: | |
645 popl %edi | |
646 popl %esi | |
647 popl %ebx | |
648 popl %ebp | |
649 ret | |
650 #endif | |
OLD | NEW |