OLD | NEW |
| (Empty) |
1 .file "crypto/aes/asm/aesni-x86.s" | |
2 .text | |
3 .globl _aesni_encrypt | |
4 .align 4 | |
5 _aesni_encrypt: | |
6 L_aesni_encrypt_begin: | |
7 movl 4(%esp),%eax | |
8 movl 12(%esp),%edx | |
9 movups (%eax),%xmm2 | |
10 movl 240(%edx),%ecx | |
11 movl 8(%esp),%eax | |
12 movups (%edx),%xmm0 | |
13 movups 16(%edx),%xmm1 | |
14 leal 32(%edx),%edx | |
15 xorps %xmm0,%xmm2 | |
16 L000enc1_loop_1: | |
17 .byte 102,15,56,220,209 | |
18 decl %ecx | |
19 movups (%edx),%xmm1 | |
20 leal 16(%edx),%edx | |
21 jnz L000enc1_loop_1 | |
22 .byte 102,15,56,221,209 | |
23 movups %xmm2,(%eax) | |
24 ret | |
25 .globl _aesni_decrypt | |
26 .align 4 | |
27 _aesni_decrypt: | |
28 L_aesni_decrypt_begin: | |
29 movl 4(%esp),%eax | |
30 movl 12(%esp),%edx | |
31 movups (%eax),%xmm2 | |
32 movl 240(%edx),%ecx | |
33 movl 8(%esp),%eax | |
34 movups (%edx),%xmm0 | |
35 movups 16(%edx),%xmm1 | |
36 leal 32(%edx),%edx | |
37 xorps %xmm0,%xmm2 | |
38 L001dec1_loop_2: | |
39 .byte 102,15,56,222,209 | |
40 decl %ecx | |
41 movups (%edx),%xmm1 | |
42 leal 16(%edx),%edx | |
43 jnz L001dec1_loop_2 | |
44 .byte 102,15,56,223,209 | |
45 movups %xmm2,(%eax) | |
46 ret | |
47 .align 4 | |
48 __aesni_encrypt3: | |
49 movups (%edx),%xmm0 | |
50 shrl $1,%ecx | |
51 movups 16(%edx),%xmm1 | |
52 leal 32(%edx),%edx | |
53 xorps %xmm0,%xmm2 | |
54 pxor %xmm0,%xmm3 | |
55 pxor %xmm0,%xmm4 | |
56 movups (%edx),%xmm0 | |
57 L002enc3_loop: | |
58 .byte 102,15,56,220,209 | |
59 .byte 102,15,56,220,217 | |
60 decl %ecx | |
61 .byte 102,15,56,220,225 | |
62 movups 16(%edx),%xmm1 | |
63 .byte 102,15,56,220,208 | |
64 .byte 102,15,56,220,216 | |
65 leal 32(%edx),%edx | |
66 .byte 102,15,56,220,224 | |
67 movups (%edx),%xmm0 | |
68 jnz L002enc3_loop | |
69 .byte 102,15,56,220,209 | |
70 .byte 102,15,56,220,217 | |
71 .byte 102,15,56,220,225 | |
72 .byte 102,15,56,221,208 | |
73 .byte 102,15,56,221,216 | |
74 .byte 102,15,56,221,224 | |
75 ret | |
76 .align 4 | |
77 __aesni_decrypt3: | |
78 movups (%edx),%xmm0 | |
79 shrl $1,%ecx | |
80 movups 16(%edx),%xmm1 | |
81 leal 32(%edx),%edx | |
82 xorps %xmm0,%xmm2 | |
83 pxor %xmm0,%xmm3 | |
84 pxor %xmm0,%xmm4 | |
85 movups (%edx),%xmm0 | |
86 L003dec3_loop: | |
87 .byte 102,15,56,222,209 | |
88 .byte 102,15,56,222,217 | |
89 decl %ecx | |
90 .byte 102,15,56,222,225 | |
91 movups 16(%edx),%xmm1 | |
92 .byte 102,15,56,222,208 | |
93 .byte 102,15,56,222,216 | |
94 leal 32(%edx),%edx | |
95 .byte 102,15,56,222,224 | |
96 movups (%edx),%xmm0 | |
97 jnz L003dec3_loop | |
98 .byte 102,15,56,222,209 | |
99 .byte 102,15,56,222,217 | |
100 .byte 102,15,56,222,225 | |
101 .byte 102,15,56,223,208 | |
102 .byte 102,15,56,223,216 | |
103 .byte 102,15,56,223,224 | |
104 ret | |
105 .align 4 | |
106 __aesni_encrypt4: | |
107 movups (%edx),%xmm0 | |
108 movups 16(%edx),%xmm1 | |
109 shrl $1,%ecx | |
110 leal 32(%edx),%edx | |
111 xorps %xmm0,%xmm2 | |
112 pxor %xmm0,%xmm3 | |
113 pxor %xmm0,%xmm4 | |
114 pxor %xmm0,%xmm5 | |
115 movups (%edx),%xmm0 | |
116 L004enc4_loop: | |
117 .byte 102,15,56,220,209 | |
118 .byte 102,15,56,220,217 | |
119 decl %ecx | |
120 .byte 102,15,56,220,225 | |
121 .byte 102,15,56,220,233 | |
122 movups 16(%edx),%xmm1 | |
123 .byte 102,15,56,220,208 | |
124 .byte 102,15,56,220,216 | |
125 leal 32(%edx),%edx | |
126 .byte 102,15,56,220,224 | |
127 .byte 102,15,56,220,232 | |
128 movups (%edx),%xmm0 | |
129 jnz L004enc4_loop | |
130 .byte 102,15,56,220,209 | |
131 .byte 102,15,56,220,217 | |
132 .byte 102,15,56,220,225 | |
133 .byte 102,15,56,220,233 | |
134 .byte 102,15,56,221,208 | |
135 .byte 102,15,56,221,216 | |
136 .byte 102,15,56,221,224 | |
137 .byte 102,15,56,221,232 | |
138 ret | |
139 .align 4 | |
140 __aesni_decrypt4: | |
141 movups (%edx),%xmm0 | |
142 movups 16(%edx),%xmm1 | |
143 shrl $1,%ecx | |
144 leal 32(%edx),%edx | |
145 xorps %xmm0,%xmm2 | |
146 pxor %xmm0,%xmm3 | |
147 pxor %xmm0,%xmm4 | |
148 pxor %xmm0,%xmm5 | |
149 movups (%edx),%xmm0 | |
150 L005dec4_loop: | |
151 .byte 102,15,56,222,209 | |
152 .byte 102,15,56,222,217 | |
153 decl %ecx | |
154 .byte 102,15,56,222,225 | |
155 .byte 102,15,56,222,233 | |
156 movups 16(%edx),%xmm1 | |
157 .byte 102,15,56,222,208 | |
158 .byte 102,15,56,222,216 | |
159 leal 32(%edx),%edx | |
160 .byte 102,15,56,222,224 | |
161 .byte 102,15,56,222,232 | |
162 movups (%edx),%xmm0 | |
163 jnz L005dec4_loop | |
164 .byte 102,15,56,222,209 | |
165 .byte 102,15,56,222,217 | |
166 .byte 102,15,56,222,225 | |
167 .byte 102,15,56,222,233 | |
168 .byte 102,15,56,223,208 | |
169 .byte 102,15,56,223,216 | |
170 .byte 102,15,56,223,224 | |
171 .byte 102,15,56,223,232 | |
172 ret | |
173 .align 4 | |
174 __aesni_encrypt6: | |
175 movups (%edx),%xmm0 | |
176 shrl $1,%ecx | |
177 movups 16(%edx),%xmm1 | |
178 leal 32(%edx),%edx | |
179 xorps %xmm0,%xmm2 | |
180 pxor %xmm0,%xmm3 | |
181 .byte 102,15,56,220,209 | |
182 pxor %xmm0,%xmm4 | |
183 .byte 102,15,56,220,217 | |
184 pxor %xmm0,%xmm5 | |
185 decl %ecx | |
186 .byte 102,15,56,220,225 | |
187 pxor %xmm0,%xmm6 | |
188 .byte 102,15,56,220,233 | |
189 pxor %xmm0,%xmm7 | |
190 .byte 102,15,56,220,241 | |
191 movups (%edx),%xmm0 | |
192 .byte 102,15,56,220,249 | |
193 jmp L_aesni_encrypt6_enter | |
194 .align 4,0x90 | |
195 L006enc6_loop: | |
196 .byte 102,15,56,220,209 | |
197 .byte 102,15,56,220,217 | |
198 decl %ecx | |
199 .byte 102,15,56,220,225 | |
200 .byte 102,15,56,220,233 | |
201 .byte 102,15,56,220,241 | |
202 .byte 102,15,56,220,249 | |
203 .align 4,0x90 | |
204 L_aesni_encrypt6_enter: | |
205 movups 16(%edx),%xmm1 | |
206 .byte 102,15,56,220,208 | |
207 .byte 102,15,56,220,216 | |
208 leal 32(%edx),%edx | |
209 .byte 102,15,56,220,224 | |
210 .byte 102,15,56,220,232 | |
211 .byte 102,15,56,220,240 | |
212 .byte 102,15,56,220,248 | |
213 movups (%edx),%xmm0 | |
214 jnz L006enc6_loop | |
215 .byte 102,15,56,220,209 | |
216 .byte 102,15,56,220,217 | |
217 .byte 102,15,56,220,225 | |
218 .byte 102,15,56,220,233 | |
219 .byte 102,15,56,220,241 | |
220 .byte 102,15,56,220,249 | |
221 .byte 102,15,56,221,208 | |
222 .byte 102,15,56,221,216 | |
223 .byte 102,15,56,221,224 | |
224 .byte 102,15,56,221,232 | |
225 .byte 102,15,56,221,240 | |
226 .byte 102,15,56,221,248 | |
227 ret | |
228 .align 4 | |
229 __aesni_decrypt6: | |
230 movups (%edx),%xmm0 | |
231 shrl $1,%ecx | |
232 movups 16(%edx),%xmm1 | |
233 leal 32(%edx),%edx | |
234 xorps %xmm0,%xmm2 | |
235 pxor %xmm0,%xmm3 | |
236 .byte 102,15,56,222,209 | |
237 pxor %xmm0,%xmm4 | |
238 .byte 102,15,56,222,217 | |
239 pxor %xmm0,%xmm5 | |
240 decl %ecx | |
241 .byte 102,15,56,222,225 | |
242 pxor %xmm0,%xmm6 | |
243 .byte 102,15,56,222,233 | |
244 pxor %xmm0,%xmm7 | |
245 .byte 102,15,56,222,241 | |
246 movups (%edx),%xmm0 | |
247 .byte 102,15,56,222,249 | |
248 jmp L_aesni_decrypt6_enter | |
249 .align 4,0x90 | |
250 L007dec6_loop: | |
251 .byte 102,15,56,222,209 | |
252 .byte 102,15,56,222,217 | |
253 decl %ecx | |
254 .byte 102,15,56,222,225 | |
255 .byte 102,15,56,222,233 | |
256 .byte 102,15,56,222,241 | |
257 .byte 102,15,56,222,249 | |
258 .align 4,0x90 | |
259 L_aesni_decrypt6_enter: | |
260 movups 16(%edx),%xmm1 | |
261 .byte 102,15,56,222,208 | |
262 .byte 102,15,56,222,216 | |
263 leal 32(%edx),%edx | |
264 .byte 102,15,56,222,224 | |
265 .byte 102,15,56,222,232 | |
266 .byte 102,15,56,222,240 | |
267 .byte 102,15,56,222,248 | |
268 movups (%edx),%xmm0 | |
269 jnz L007dec6_loop | |
270 .byte 102,15,56,222,209 | |
271 .byte 102,15,56,222,217 | |
272 .byte 102,15,56,222,225 | |
273 .byte 102,15,56,222,233 | |
274 .byte 102,15,56,222,241 | |
275 .byte 102,15,56,222,249 | |
276 .byte 102,15,56,223,208 | |
277 .byte 102,15,56,223,216 | |
278 .byte 102,15,56,223,224 | |
279 .byte 102,15,56,223,232 | |
280 .byte 102,15,56,223,240 | |
281 .byte 102,15,56,223,248 | |
282 ret | |
283 .globl _aesni_ecb_encrypt | |
284 .align 4 | |
285 _aesni_ecb_encrypt: | |
286 L_aesni_ecb_encrypt_begin: | |
287 pushl %ebp | |
288 pushl %ebx | |
289 pushl %esi | |
290 pushl %edi | |
291 movl 20(%esp),%esi | |
292 movl 24(%esp),%edi | |
293 movl 28(%esp),%eax | |
294 movl 32(%esp),%edx | |
295 movl 36(%esp),%ebx | |
296 andl $-16,%eax | |
297 jz L008ecb_ret | |
298 movl 240(%edx),%ecx | |
299 testl %ebx,%ebx | |
300 jz L009ecb_decrypt | |
301 movl %edx,%ebp | |
302 movl %ecx,%ebx | |
303 cmpl $96,%eax | |
304 jb L010ecb_enc_tail | |
305 movdqu (%esi),%xmm2 | |
306 movdqu 16(%esi),%xmm3 | |
307 movdqu 32(%esi),%xmm4 | |
308 movdqu 48(%esi),%xmm5 | |
309 movdqu 64(%esi),%xmm6 | |
310 movdqu 80(%esi),%xmm7 | |
311 leal 96(%esi),%esi | |
312 subl $96,%eax | |
313 jmp L011ecb_enc_loop6_enter | |
314 .align 4,0x90 | |
315 L012ecb_enc_loop6: | |
316 movups %xmm2,(%edi) | |
317 movdqu (%esi),%xmm2 | |
318 movups %xmm3,16(%edi) | |
319 movdqu 16(%esi),%xmm3 | |
320 movups %xmm4,32(%edi) | |
321 movdqu 32(%esi),%xmm4 | |
322 movups %xmm5,48(%edi) | |
323 movdqu 48(%esi),%xmm5 | |
324 movups %xmm6,64(%edi) | |
325 movdqu 64(%esi),%xmm6 | |
326 movups %xmm7,80(%edi) | |
327 leal 96(%edi),%edi | |
328 movdqu 80(%esi),%xmm7 | |
329 leal 96(%esi),%esi | |
330 L011ecb_enc_loop6_enter: | |
331 call __aesni_encrypt6 | |
332 movl %ebp,%edx | |
333 movl %ebx,%ecx | |
334 subl $96,%eax | |
335 jnc L012ecb_enc_loop6 | |
336 movups %xmm2,(%edi) | |
337 movups %xmm3,16(%edi) | |
338 movups %xmm4,32(%edi) | |
339 movups %xmm5,48(%edi) | |
340 movups %xmm6,64(%edi) | |
341 movups %xmm7,80(%edi) | |
342 leal 96(%edi),%edi | |
343 addl $96,%eax | |
344 jz L008ecb_ret | |
345 L010ecb_enc_tail: | |
346 movups (%esi),%xmm2 | |
347 cmpl $32,%eax | |
348 jb L013ecb_enc_one | |
349 movups 16(%esi),%xmm3 | |
350 je L014ecb_enc_two | |
351 movups 32(%esi),%xmm4 | |
352 cmpl $64,%eax | |
353 jb L015ecb_enc_three | |
354 movups 48(%esi),%xmm5 | |
355 je L016ecb_enc_four | |
356 movups 64(%esi),%xmm6 | |
357 xorps %xmm7,%xmm7 | |
358 call __aesni_encrypt6 | |
359 movups %xmm2,(%edi) | |
360 movups %xmm3,16(%edi) | |
361 movups %xmm4,32(%edi) | |
362 movups %xmm5,48(%edi) | |
363 movups %xmm6,64(%edi) | |
364 jmp L008ecb_ret | |
365 .align 4,0x90 | |
366 L013ecb_enc_one: | |
367 movups (%edx),%xmm0 | |
368 movups 16(%edx),%xmm1 | |
369 leal 32(%edx),%edx | |
370 xorps %xmm0,%xmm2 | |
371 L017enc1_loop_3: | |
372 .byte 102,15,56,220,209 | |
373 decl %ecx | |
374 movups (%edx),%xmm1 | |
375 leal 16(%edx),%edx | |
376 jnz L017enc1_loop_3 | |
377 .byte 102,15,56,221,209 | |
378 movups %xmm2,(%edi) | |
379 jmp L008ecb_ret | |
380 .align 4,0x90 | |
381 L014ecb_enc_two: | |
382 xorps %xmm4,%xmm4 | |
383 call __aesni_encrypt3 | |
384 movups %xmm2,(%edi) | |
385 movups %xmm3,16(%edi) | |
386 jmp L008ecb_ret | |
387 .align 4,0x90 | |
388 L015ecb_enc_three: | |
389 call __aesni_encrypt3 | |
390 movups %xmm2,(%edi) | |
391 movups %xmm3,16(%edi) | |
392 movups %xmm4,32(%edi) | |
393 jmp L008ecb_ret | |
394 .align 4,0x90 | |
395 L016ecb_enc_four: | |
396 call __aesni_encrypt4 | |
397 movups %xmm2,(%edi) | |
398 movups %xmm3,16(%edi) | |
399 movups %xmm4,32(%edi) | |
400 movups %xmm5,48(%edi) | |
401 jmp L008ecb_ret | |
402 .align 4,0x90 | |
403 L009ecb_decrypt: | |
404 movl %edx,%ebp | |
405 movl %ecx,%ebx | |
406 cmpl $96,%eax | |
407 jb L018ecb_dec_tail | |
408 movdqu (%esi),%xmm2 | |
409 movdqu 16(%esi),%xmm3 | |
410 movdqu 32(%esi),%xmm4 | |
411 movdqu 48(%esi),%xmm5 | |
412 movdqu 64(%esi),%xmm6 | |
413 movdqu 80(%esi),%xmm7 | |
414 leal 96(%esi),%esi | |
415 subl $96,%eax | |
416 jmp L019ecb_dec_loop6_enter | |
417 .align 4,0x90 | |
418 L020ecb_dec_loop6: | |
419 movups %xmm2,(%edi) | |
420 movdqu (%esi),%xmm2 | |
421 movups %xmm3,16(%edi) | |
422 movdqu 16(%esi),%xmm3 | |
423 movups %xmm4,32(%edi) | |
424 movdqu 32(%esi),%xmm4 | |
425 movups %xmm5,48(%edi) | |
426 movdqu 48(%esi),%xmm5 | |
427 movups %xmm6,64(%edi) | |
428 movdqu 64(%esi),%xmm6 | |
429 movups %xmm7,80(%edi) | |
430 leal 96(%edi),%edi | |
431 movdqu 80(%esi),%xmm7 | |
432 leal 96(%esi),%esi | |
433 L019ecb_dec_loop6_enter: | |
434 call __aesni_decrypt6 | |
435 movl %ebp,%edx | |
436 movl %ebx,%ecx | |
437 subl $96,%eax | |
438 jnc L020ecb_dec_loop6 | |
439 movups %xmm2,(%edi) | |
440 movups %xmm3,16(%edi) | |
441 movups %xmm4,32(%edi) | |
442 movups %xmm5,48(%edi) | |
443 movups %xmm6,64(%edi) | |
444 movups %xmm7,80(%edi) | |
445 leal 96(%edi),%edi | |
446 addl $96,%eax | |
447 jz L008ecb_ret | |
448 L018ecb_dec_tail: | |
449 movups (%esi),%xmm2 | |
450 cmpl $32,%eax | |
451 jb L021ecb_dec_one | |
452 movups 16(%esi),%xmm3 | |
453 je L022ecb_dec_two | |
454 movups 32(%esi),%xmm4 | |
455 cmpl $64,%eax | |
456 jb L023ecb_dec_three | |
457 movups 48(%esi),%xmm5 | |
458 je L024ecb_dec_four | |
459 movups 64(%esi),%xmm6 | |
460 xorps %xmm7,%xmm7 | |
461 call __aesni_decrypt6 | |
462 movups %xmm2,(%edi) | |
463 movups %xmm3,16(%edi) | |
464 movups %xmm4,32(%edi) | |
465 movups %xmm5,48(%edi) | |
466 movups %xmm6,64(%edi) | |
467 jmp L008ecb_ret | |
468 .align 4,0x90 | |
469 L021ecb_dec_one: | |
470 movups (%edx),%xmm0 | |
471 movups 16(%edx),%xmm1 | |
472 leal 32(%edx),%edx | |
473 xorps %xmm0,%xmm2 | |
474 L025dec1_loop_4: | |
475 .byte 102,15,56,222,209 | |
476 decl %ecx | |
477 movups (%edx),%xmm1 | |
478 leal 16(%edx),%edx | |
479 jnz L025dec1_loop_4 | |
480 .byte 102,15,56,223,209 | |
481 movups %xmm2,(%edi) | |
482 jmp L008ecb_ret | |
483 .align 4,0x90 | |
484 L022ecb_dec_two: | |
485 xorps %xmm4,%xmm4 | |
486 call __aesni_decrypt3 | |
487 movups %xmm2,(%edi) | |
488 movups %xmm3,16(%edi) | |
489 jmp L008ecb_ret | |
490 .align 4,0x90 | |
491 L023ecb_dec_three: | |
492 call __aesni_decrypt3 | |
493 movups %xmm2,(%edi) | |
494 movups %xmm3,16(%edi) | |
495 movups %xmm4,32(%edi) | |
496 jmp L008ecb_ret | |
497 .align 4,0x90 | |
498 L024ecb_dec_four: | |
499 call __aesni_decrypt4 | |
500 movups %xmm2,(%edi) | |
501 movups %xmm3,16(%edi) | |
502 movups %xmm4,32(%edi) | |
503 movups %xmm5,48(%edi) | |
504 L008ecb_ret: | |
505 popl %edi | |
506 popl %esi | |
507 popl %ebx | |
508 popl %ebp | |
509 ret | |
510 .globl _aesni_ccm64_encrypt_blocks | |
511 .align 4 | |
512 _aesni_ccm64_encrypt_blocks: | |
513 L_aesni_ccm64_encrypt_blocks_begin: | |
514 pushl %ebp | |
515 pushl %ebx | |
516 pushl %esi | |
517 pushl %edi | |
518 movl 20(%esp),%esi | |
519 movl 24(%esp),%edi | |
520 movl 28(%esp),%eax | |
521 movl 32(%esp),%edx | |
522 movl 36(%esp),%ebx | |
523 movl 40(%esp),%ecx | |
524 movl %esp,%ebp | |
525 subl $60,%esp | |
526 andl $-16,%esp | |
527 movl %ebp,48(%esp) | |
528 movdqu (%ebx),%xmm7 | |
529 movdqu (%ecx),%xmm3 | |
530 movl 240(%edx),%ecx | |
531 movl $202182159,(%esp) | |
532 movl $134810123,4(%esp) | |
533 movl $67438087,8(%esp) | |
534 movl $66051,12(%esp) | |
535 movl $1,%ebx | |
536 xorl %ebp,%ebp | |
537 movl %ebx,16(%esp) | |
538 movl %ebp,20(%esp) | |
539 movl %ebp,24(%esp) | |
540 movl %ebp,28(%esp) | |
541 shrl $1,%ecx | |
542 leal (%edx),%ebp | |
543 movdqa (%esp),%xmm5 | |
544 movdqa %xmm7,%xmm2 | |
545 movl %ecx,%ebx | |
546 .byte 102,15,56,0,253 | |
547 L026ccm64_enc_outer: | |
548 movups (%ebp),%xmm0 | |
549 movl %ebx,%ecx | |
550 movups (%esi),%xmm6 | |
551 xorps %xmm0,%xmm2 | |
552 movups 16(%ebp),%xmm1 | |
553 xorps %xmm6,%xmm0 | |
554 leal 32(%ebp),%edx | |
555 xorps %xmm0,%xmm3 | |
556 movups (%edx),%xmm0 | |
557 L027ccm64_enc2_loop: | |
558 .byte 102,15,56,220,209 | |
559 decl %ecx | |
560 .byte 102,15,56,220,217 | |
561 movups 16(%edx),%xmm1 | |
562 .byte 102,15,56,220,208 | |
563 leal 32(%edx),%edx | |
564 .byte 102,15,56,220,216 | |
565 movups (%edx),%xmm0 | |
566 jnz L027ccm64_enc2_loop | |
567 .byte 102,15,56,220,209 | |
568 .byte 102,15,56,220,217 | |
569 paddq 16(%esp),%xmm7 | |
570 .byte 102,15,56,221,208 | |
571 .byte 102,15,56,221,216 | |
572 decl %eax | |
573 leal 16(%esi),%esi | |
574 xorps %xmm2,%xmm6 | |
575 movdqa %xmm7,%xmm2 | |
576 movups %xmm6,(%edi) | |
577 leal 16(%edi),%edi | |
578 .byte 102,15,56,0,213 | |
579 jnz L026ccm64_enc_outer | |
580 movl 48(%esp),%esp | |
581 movl 40(%esp),%edi | |
582 movups %xmm3,(%edi) | |
583 popl %edi | |
584 popl %esi | |
585 popl %ebx | |
586 popl %ebp | |
587 ret | |
588 .globl _aesni_ccm64_decrypt_blocks | |
589 .align 4 | |
590 _aesni_ccm64_decrypt_blocks: | |
591 L_aesni_ccm64_decrypt_blocks_begin: | |
592 pushl %ebp | |
593 pushl %ebx | |
594 pushl %esi | |
595 pushl %edi | |
596 movl 20(%esp),%esi | |
597 movl 24(%esp),%edi | |
598 movl 28(%esp),%eax | |
599 movl 32(%esp),%edx | |
600 movl 36(%esp),%ebx | |
601 movl 40(%esp),%ecx | |
602 movl %esp,%ebp | |
603 subl $60,%esp | |
604 andl $-16,%esp | |
605 movl %ebp,48(%esp) | |
606 movdqu (%ebx),%xmm7 | |
607 movdqu (%ecx),%xmm3 | |
608 movl 240(%edx),%ecx | |
609 movl $202182159,(%esp) | |
610 movl $134810123,4(%esp) | |
611 movl $67438087,8(%esp) | |
612 movl $66051,12(%esp) | |
613 movl $1,%ebx | |
614 xorl %ebp,%ebp | |
615 movl %ebx,16(%esp) | |
616 movl %ebp,20(%esp) | |
617 movl %ebp,24(%esp) | |
618 movl %ebp,28(%esp) | |
619 movdqa (%esp),%xmm5 | |
620 movdqa %xmm7,%xmm2 | |
621 movl %edx,%ebp | |
622 movl %ecx,%ebx | |
623 .byte 102,15,56,0,253 | |
624 movups (%edx),%xmm0 | |
625 movups 16(%edx),%xmm1 | |
626 leal 32(%edx),%edx | |
627 xorps %xmm0,%xmm2 | |
628 L028enc1_loop_5: | |
629 .byte 102,15,56,220,209 | |
630 decl %ecx | |
631 movups (%edx),%xmm1 | |
632 leal 16(%edx),%edx | |
633 jnz L028enc1_loop_5 | |
634 .byte 102,15,56,221,209 | |
635 movups (%esi),%xmm6 | |
636 paddq 16(%esp),%xmm7 | |
637 leal 16(%esi),%esi | |
638 jmp L029ccm64_dec_outer | |
639 .align 4,0x90 | |
640 L029ccm64_dec_outer: | |
641 xorps %xmm2,%xmm6 | |
642 movdqa %xmm7,%xmm2 | |
643 movl %ebx,%ecx | |
644 movups %xmm6,(%edi) | |
645 leal 16(%edi),%edi | |
646 .byte 102,15,56,0,213 | |
647 subl $1,%eax | |
648 jz L030ccm64_dec_break | |
649 movups (%ebp),%xmm0 | |
650 shrl $1,%ecx | |
651 movups 16(%ebp),%xmm1 | |
652 xorps %xmm0,%xmm6 | |
653 leal 32(%ebp),%edx | |
654 xorps %xmm0,%xmm2 | |
655 xorps %xmm6,%xmm3 | |
656 movups (%edx),%xmm0 | |
657 L031ccm64_dec2_loop: | |
658 .byte 102,15,56,220,209 | |
659 decl %ecx | |
660 .byte 102,15,56,220,217 | |
661 movups 16(%edx),%xmm1 | |
662 .byte 102,15,56,220,208 | |
663 leal 32(%edx),%edx | |
664 .byte 102,15,56,220,216 | |
665 movups (%edx),%xmm0 | |
666 jnz L031ccm64_dec2_loop | |
667 movups (%esi),%xmm6 | |
668 paddq 16(%esp),%xmm7 | |
669 .byte 102,15,56,220,209 | |
670 .byte 102,15,56,220,217 | |
671 leal 16(%esi),%esi | |
672 .byte 102,15,56,221,208 | |
673 .byte 102,15,56,221,216 | |
674 jmp L029ccm64_dec_outer | |
675 .align 4,0x90 | |
676 L030ccm64_dec_break: | |
677 movl %ebp,%edx | |
678 movups (%edx),%xmm0 | |
679 movups 16(%edx),%xmm1 | |
680 xorps %xmm0,%xmm6 | |
681 leal 32(%edx),%edx | |
682 xorps %xmm6,%xmm3 | |
683 L032enc1_loop_6: | |
684 .byte 102,15,56,220,217 | |
685 decl %ecx | |
686 movups (%edx),%xmm1 | |
687 leal 16(%edx),%edx | |
688 jnz L032enc1_loop_6 | |
689 .byte 102,15,56,221,217 | |
690 movl 48(%esp),%esp | |
691 movl 40(%esp),%edi | |
692 movups %xmm3,(%edi) | |
693 popl %edi | |
694 popl %esi | |
695 popl %ebx | |
696 popl %ebp | |
697 ret | |
698 .globl _aesni_ctr32_encrypt_blocks | |
699 .align 4 | |
700 _aesni_ctr32_encrypt_blocks: | |
701 L_aesni_ctr32_encrypt_blocks_begin: | |
702 pushl %ebp | |
703 pushl %ebx | |
704 pushl %esi | |
705 pushl %edi | |
706 movl 20(%esp),%esi | |
707 movl 24(%esp),%edi | |
708 movl 28(%esp),%eax | |
709 movl 32(%esp),%edx | |
710 movl 36(%esp),%ebx | |
711 movl %esp,%ebp | |
712 subl $88,%esp | |
713 andl $-16,%esp | |
714 movl %ebp,80(%esp) | |
715 cmpl $1,%eax | |
716 je L033ctr32_one_shortcut | |
717 movdqu (%ebx),%xmm7 | |
718 movl $202182159,(%esp) | |
719 movl $134810123,4(%esp) | |
720 movl $67438087,8(%esp) | |
721 movl $66051,12(%esp) | |
722 movl $6,%ecx | |
723 xorl %ebp,%ebp | |
724 movl %ecx,16(%esp) | |
725 movl %ecx,20(%esp) | |
726 movl %ecx,24(%esp) | |
727 movl %ebp,28(%esp) | |
728 .byte 102,15,58,22,251,3 | |
729 .byte 102,15,58,34,253,3 | |
730 movl 240(%edx),%ecx | |
731 bswap %ebx | |
732 pxor %xmm1,%xmm1 | |
733 pxor %xmm0,%xmm0 | |
734 movdqa (%esp),%xmm2 | |
735 .byte 102,15,58,34,203,0 | |
736 leal 3(%ebx),%ebp | |
737 .byte 102,15,58,34,197,0 | |
738 incl %ebx | |
739 .byte 102,15,58,34,203,1 | |
740 incl %ebp | |
741 .byte 102,15,58,34,197,1 | |
742 incl %ebx | |
743 .byte 102,15,58,34,203,2 | |
744 incl %ebp | |
745 .byte 102,15,58,34,197,2 | |
746 movdqa %xmm1,48(%esp) | |
747 .byte 102,15,56,0,202 | |
748 movdqa %xmm0,64(%esp) | |
749 .byte 102,15,56,0,194 | |
750 pshufd $192,%xmm1,%xmm2 | |
751 pshufd $128,%xmm1,%xmm3 | |
752 cmpl $6,%eax | |
753 jb L034ctr32_tail | |
754 movdqa %xmm7,32(%esp) | |
755 shrl $1,%ecx | |
756 movl %edx,%ebp | |
757 movl %ecx,%ebx | |
758 subl $6,%eax | |
759 jmp L035ctr32_loop6 | |
760 .align 4,0x90 | |
761 L035ctr32_loop6: | |
762 pshufd $64,%xmm1,%xmm4 | |
763 movdqa 32(%esp),%xmm1 | |
764 pshufd $192,%xmm0,%xmm5 | |
765 por %xmm1,%xmm2 | |
766 pshufd $128,%xmm0,%xmm6 | |
767 por %xmm1,%xmm3 | |
768 pshufd $64,%xmm0,%xmm7 | |
769 por %xmm1,%xmm4 | |
770 por %xmm1,%xmm5 | |
771 por %xmm1,%xmm6 | |
772 por %xmm1,%xmm7 | |
773 movups (%ebp),%xmm0 | |
774 movups 16(%ebp),%xmm1 | |
775 leal 32(%ebp),%edx | |
776 decl %ecx | |
777 pxor %xmm0,%xmm2 | |
778 pxor %xmm0,%xmm3 | |
779 .byte 102,15,56,220,209 | |
780 pxor %xmm0,%xmm4 | |
781 .byte 102,15,56,220,217 | |
782 pxor %xmm0,%xmm5 | |
783 .byte 102,15,56,220,225 | |
784 pxor %xmm0,%xmm6 | |
785 .byte 102,15,56,220,233 | |
786 pxor %xmm0,%xmm7 | |
787 .byte 102,15,56,220,241 | |
788 movups (%edx),%xmm0 | |
789 .byte 102,15,56,220,249 | |
790 call L_aesni_encrypt6_enter | |
791 movups (%esi),%xmm1 | |
792 movups 16(%esi),%xmm0 | |
793 xorps %xmm1,%xmm2 | |
794 movups 32(%esi),%xmm1 | |
795 xorps %xmm0,%xmm3 | |
796 movups %xmm2,(%edi) | |
797 movdqa 16(%esp),%xmm0 | |
798 xorps %xmm1,%xmm4 | |
799 movdqa 48(%esp),%xmm1 | |
800 movups %xmm3,16(%edi) | |
801 movups %xmm4,32(%edi) | |
802 paddd %xmm0,%xmm1 | |
803 paddd 64(%esp),%xmm0 | |
804 movdqa (%esp),%xmm2 | |
805 movups 48(%esi),%xmm3 | |
806 movups 64(%esi),%xmm4 | |
807 xorps %xmm3,%xmm5 | |
808 movups 80(%esi),%xmm3 | |
809 leal 96(%esi),%esi | |
810 movdqa %xmm1,48(%esp) | |
811 .byte 102,15,56,0,202 | |
812 xorps %xmm4,%xmm6 | |
813 movups %xmm5,48(%edi) | |
814 xorps %xmm3,%xmm7 | |
815 movdqa %xmm0,64(%esp) | |
816 .byte 102,15,56,0,194 | |
817 movups %xmm6,64(%edi) | |
818 pshufd $192,%xmm1,%xmm2 | |
819 movups %xmm7,80(%edi) | |
820 leal 96(%edi),%edi | |
821 movl %ebx,%ecx | |
822 pshufd $128,%xmm1,%xmm3 | |
823 subl $6,%eax | |
824 jnc L035ctr32_loop6 | |
825 addl $6,%eax | |
826 jz L036ctr32_ret | |
827 movl %ebp,%edx | |
828 leal 1(,%ecx,2),%ecx | |
829 movdqa 32(%esp),%xmm7 | |
830 L034ctr32_tail: | |
831 por %xmm7,%xmm2 | |
832 cmpl $2,%eax | |
833 jb L037ctr32_one | |
834 pshufd $64,%xmm1,%xmm4 | |
835 por %xmm7,%xmm3 | |
836 je L038ctr32_two | |
837 pshufd $192,%xmm0,%xmm5 | |
838 por %xmm7,%xmm4 | |
839 cmpl $4,%eax | |
840 jb L039ctr32_three | |
841 pshufd $128,%xmm0,%xmm6 | |
842 por %xmm7,%xmm5 | |
843 je L040ctr32_four | |
844 por %xmm7,%xmm6 | |
845 call __aesni_encrypt6 | |
846 movups (%esi),%xmm1 | |
847 movups 16(%esi),%xmm0 | |
848 xorps %xmm1,%xmm2 | |
849 movups 32(%esi),%xmm1 | |
850 xorps %xmm0,%xmm3 | |
851 movups 48(%esi),%xmm0 | |
852 xorps %xmm1,%xmm4 | |
853 movups 64(%esi),%xmm1 | |
854 xorps %xmm0,%xmm5 | |
855 movups %xmm2,(%edi) | |
856 xorps %xmm1,%xmm6 | |
857 movups %xmm3,16(%edi) | |
858 movups %xmm4,32(%edi) | |
859 movups %xmm5,48(%edi) | |
860 movups %xmm6,64(%edi) | |
861 jmp L036ctr32_ret | |
862 .align 4,0x90 | |
863 L033ctr32_one_shortcut: | |
864 movups (%ebx),%xmm2 | |
865 movl 240(%edx),%ecx | |
866 L037ctr32_one: | |
867 movups (%edx),%xmm0 | |
868 movups 16(%edx),%xmm1 | |
869 leal 32(%edx),%edx | |
870 xorps %xmm0,%xmm2 | |
871 L041enc1_loop_7: | |
872 .byte 102,15,56,220,209 | |
873 decl %ecx | |
874 movups (%edx),%xmm1 | |
875 leal 16(%edx),%edx | |
876 jnz L041enc1_loop_7 | |
877 .byte 102,15,56,221,209 | |
878 movups (%esi),%xmm6 | |
879 xorps %xmm2,%xmm6 | |
880 movups %xmm6,(%edi) | |
881 jmp L036ctr32_ret | |
882 .align 4,0x90 | |
883 L038ctr32_two: | |
884 call __aesni_encrypt3 | |
885 movups (%esi),%xmm5 | |
886 movups 16(%esi),%xmm6 | |
887 xorps %xmm5,%xmm2 | |
888 xorps %xmm6,%xmm3 | |
889 movups %xmm2,(%edi) | |
890 movups %xmm3,16(%edi) | |
891 jmp L036ctr32_ret | |
892 .align 4,0x90 | |
893 L039ctr32_three: | |
894 call __aesni_encrypt3 | |
895 movups (%esi),%xmm5 | |
896 movups 16(%esi),%xmm6 | |
897 xorps %xmm5,%xmm2 | |
898 movups 32(%esi),%xmm7 | |
899 xorps %xmm6,%xmm3 | |
900 movups %xmm2,(%edi) | |
901 xorps %xmm7,%xmm4 | |
902 movups %xmm3,16(%edi) | |
903 movups %xmm4,32(%edi) | |
904 jmp L036ctr32_ret | |
905 .align 4,0x90 | |
906 L040ctr32_four: | |
907 call __aesni_encrypt4 | |
908 movups (%esi),%xmm6 | |
909 movups 16(%esi),%xmm7 | |
910 movups 32(%esi),%xmm1 | |
911 xorps %xmm6,%xmm2 | |
912 movups 48(%esi),%xmm0 | |
913 xorps %xmm7,%xmm3 | |
914 movups %xmm2,(%edi) | |
915 xorps %xmm1,%xmm4 | |
916 movups %xmm3,16(%edi) | |
917 xorps %xmm0,%xmm5 | |
918 movups %xmm4,32(%edi) | |
919 movups %xmm5,48(%edi) | |
920 L036ctr32_ret: | |
921 movl 80(%esp),%esp | |
922 popl %edi | |
923 popl %esi | |
924 popl %ebx | |
925 popl %ebp | |
926 ret | |
927 .globl _aesni_xts_encrypt | |
928 .align 4 | |
929 _aesni_xts_encrypt: | |
930 L_aesni_xts_encrypt_begin: | |
931 pushl %ebp | |
932 pushl %ebx | |
933 pushl %esi | |
934 pushl %edi | |
935 movl 36(%esp),%edx | |
936 movl 40(%esp),%esi | |
937 movl 240(%edx),%ecx | |
938 movups (%esi),%xmm2 | |
939 movups (%edx),%xmm0 | |
940 movups 16(%edx),%xmm1 | |
941 leal 32(%edx),%edx | |
942 xorps %xmm0,%xmm2 | |
943 L042enc1_loop_8: | |
944 .byte 102,15,56,220,209 | |
945 decl %ecx | |
946 movups (%edx),%xmm1 | |
947 leal 16(%edx),%edx | |
948 jnz L042enc1_loop_8 | |
949 .byte 102,15,56,221,209 | |
950 movl 20(%esp),%esi | |
951 movl 24(%esp),%edi | |
952 movl 28(%esp),%eax | |
953 movl 32(%esp),%edx | |
954 movl %esp,%ebp | |
955 subl $120,%esp | |
956 movl 240(%edx),%ecx | |
957 andl $-16,%esp | |
958 movl $135,96(%esp) | |
959 movl $0,100(%esp) | |
960 movl $1,104(%esp) | |
961 movl $0,108(%esp) | |
962 movl %eax,112(%esp) | |
963 movl %ebp,116(%esp) | |
964 movdqa %xmm2,%xmm1 | |
965 pxor %xmm0,%xmm0 | |
966 movdqa 96(%esp),%xmm3 | |
967 pcmpgtd %xmm1,%xmm0 | |
968 andl $-16,%eax | |
969 movl %edx,%ebp | |
970 movl %ecx,%ebx | |
971 subl $96,%eax | |
972 jc L043xts_enc_short | |
973 shrl $1,%ecx | |
974 movl %ecx,%ebx | |
975 jmp L044xts_enc_loop6 | |
976 .align 4,0x90 | |
977 L044xts_enc_loop6: | |
978 pshufd $19,%xmm0,%xmm2 | |
979 pxor %xmm0,%xmm0 | |
980 movdqa %xmm1,(%esp) | |
981 paddq %xmm1,%xmm1 | |
982 pand %xmm3,%xmm2 | |
983 pcmpgtd %xmm1,%xmm0 | |
984 pxor %xmm2,%xmm1 | |
985 pshufd $19,%xmm0,%xmm2 | |
986 pxor %xmm0,%xmm0 | |
987 movdqa %xmm1,16(%esp) | |
988 paddq %xmm1,%xmm1 | |
989 pand %xmm3,%xmm2 | |
990 pcmpgtd %xmm1,%xmm0 | |
991 pxor %xmm2,%xmm1 | |
992 pshufd $19,%xmm0,%xmm2 | |
993 pxor %xmm0,%xmm0 | |
994 movdqa %xmm1,32(%esp) | |
995 paddq %xmm1,%xmm1 | |
996 pand %xmm3,%xmm2 | |
997 pcmpgtd %xmm1,%xmm0 | |
998 pxor %xmm2,%xmm1 | |
999 pshufd $19,%xmm0,%xmm2 | |
1000 pxor %xmm0,%xmm0 | |
1001 movdqa %xmm1,48(%esp) | |
1002 paddq %xmm1,%xmm1 | |
1003 pand %xmm3,%xmm2 | |
1004 pcmpgtd %xmm1,%xmm0 | |
1005 pxor %xmm2,%xmm1 | |
1006 pshufd $19,%xmm0,%xmm7 | |
1007 movdqa %xmm1,64(%esp) | |
1008 paddq %xmm1,%xmm1 | |
1009 movups (%ebp),%xmm0 | |
1010 pand %xmm3,%xmm7 | |
1011 movups (%esi),%xmm2 | |
1012 pxor %xmm1,%xmm7 | |
1013 movdqu 16(%esi),%xmm3 | |
1014 xorps %xmm0,%xmm2 | |
1015 movdqu 32(%esi),%xmm4 | |
1016 pxor %xmm0,%xmm3 | |
1017 movdqu 48(%esi),%xmm5 | |
1018 pxor %xmm0,%xmm4 | |
1019 movdqu 64(%esi),%xmm6 | |
1020 pxor %xmm0,%xmm5 | |
1021 movdqu 80(%esi),%xmm1 | |
1022 pxor %xmm0,%xmm6 | |
1023 leal 96(%esi),%esi | |
1024 pxor (%esp),%xmm2 | |
1025 movdqa %xmm7,80(%esp) | |
1026 pxor %xmm1,%xmm7 | |
1027 movups 16(%ebp),%xmm1 | |
1028 leal 32(%ebp),%edx | |
1029 pxor 16(%esp),%xmm3 | |
1030 .byte 102,15,56,220,209 | |
1031 pxor 32(%esp),%xmm4 | |
1032 .byte 102,15,56,220,217 | |
1033 pxor 48(%esp),%xmm5 | |
1034 decl %ecx | |
1035 .byte 102,15,56,220,225 | |
1036 pxor 64(%esp),%xmm6 | |
1037 .byte 102,15,56,220,233 | |
1038 pxor %xmm0,%xmm7 | |
1039 .byte 102,15,56,220,241 | |
1040 movups (%edx),%xmm0 | |
1041 .byte 102,15,56,220,249 | |
1042 call L_aesni_encrypt6_enter | |
1043 movdqa 80(%esp),%xmm1 | |
1044 pxor %xmm0,%xmm0 | |
1045 xorps (%esp),%xmm2 | |
1046 pcmpgtd %xmm1,%xmm0 | |
1047 xorps 16(%esp),%xmm3 | |
1048 movups %xmm2,(%edi) | |
1049 xorps 32(%esp),%xmm4 | |
1050 movups %xmm3,16(%edi) | |
1051 xorps 48(%esp),%xmm5 | |
1052 movups %xmm4,32(%edi) | |
1053 xorps 64(%esp),%xmm6 | |
1054 movups %xmm5,48(%edi) | |
1055 xorps %xmm1,%xmm7 | |
1056 movups %xmm6,64(%edi) | |
1057 pshufd $19,%xmm0,%xmm2 | |
1058 movups %xmm7,80(%edi) | |
1059 leal 96(%edi),%edi | |
1060 movdqa 96(%esp),%xmm3 | |
1061 pxor %xmm0,%xmm0 | |
1062 paddq %xmm1,%xmm1 | |
1063 pand %xmm3,%xmm2 | |
1064 pcmpgtd %xmm1,%xmm0 | |
1065 movl %ebx,%ecx | |
1066 pxor %xmm2,%xmm1 | |
1067 subl $96,%eax | |
1068 jnc L044xts_enc_loop6 | |
1069 leal 1(,%ecx,2),%ecx | |
1070 movl %ebp,%edx | |
1071 movl %ecx,%ebx | |
1072 L043xts_enc_short: | |
1073 addl $96,%eax | |
1074 jz L045xts_enc_done6x | |
1075 movdqa %xmm1,%xmm5 | |
1076 cmpl $32,%eax | |
1077 jb L046xts_enc_one | |
1078 pshufd $19,%xmm0,%xmm2 | |
1079 pxor %xmm0,%xmm0 | |
1080 paddq %xmm1,%xmm1 | |
1081 pand %xmm3,%xmm2 | |
1082 pcmpgtd %xmm1,%xmm0 | |
1083 pxor %xmm2,%xmm1 | |
1084 je L047xts_enc_two | |
1085 pshufd $19,%xmm0,%xmm2 | |
1086 pxor %xmm0,%xmm0 | |
1087 movdqa %xmm1,%xmm6 | |
1088 paddq %xmm1,%xmm1 | |
1089 pand %xmm3,%xmm2 | |
1090 pcmpgtd %xmm1,%xmm0 | |
1091 pxor %xmm2,%xmm1 | |
1092 cmpl $64,%eax | |
1093 jb L048xts_enc_three | |
1094 pshufd $19,%xmm0,%xmm2 | |
1095 pxor %xmm0,%xmm0 | |
1096 movdqa %xmm1,%xmm7 | |
1097 paddq %xmm1,%xmm1 | |
1098 pand %xmm3,%xmm2 | |
1099 pcmpgtd %xmm1,%xmm0 | |
1100 pxor %xmm2,%xmm1 | |
1101 movdqa %xmm5,(%esp) | |
1102 movdqa %xmm6,16(%esp) | |
1103 je L049xts_enc_four | |
1104 movdqa %xmm7,32(%esp) | |
1105 pshufd $19,%xmm0,%xmm7 | |
1106 movdqa %xmm1,48(%esp) | |
1107 paddq %xmm1,%xmm1 | |
1108 pand %xmm3,%xmm7 | |
1109 pxor %xmm1,%xmm7 | |
1110 movdqu (%esi),%xmm2 | |
1111 movdqu 16(%esi),%xmm3 | |
1112 movdqu 32(%esi),%xmm4 | |
1113 pxor (%esp),%xmm2 | |
1114 movdqu 48(%esi),%xmm5 | |
1115 pxor 16(%esp),%xmm3 | |
1116 movdqu 64(%esi),%xmm6 | |
1117 pxor 32(%esp),%xmm4 | |
1118 leal 80(%esi),%esi | |
1119 pxor 48(%esp),%xmm5 | |
1120 movdqa %xmm7,64(%esp) | |
1121 pxor %xmm7,%xmm6 | |
1122 call __aesni_encrypt6 | |
1123 movaps 64(%esp),%xmm1 | |
1124 xorps (%esp),%xmm2 | |
1125 xorps 16(%esp),%xmm3 | |
1126 xorps 32(%esp),%xmm4 | |
1127 movups %xmm2,(%edi) | |
1128 xorps 48(%esp),%xmm5 | |
1129 movups %xmm3,16(%edi) | |
1130 xorps %xmm1,%xmm6 | |
1131 movups %xmm4,32(%edi) | |
1132 movups %xmm5,48(%edi) | |
1133 movups %xmm6,64(%edi) | |
1134 leal 80(%edi),%edi | |
1135 jmp L050xts_enc_done | |
1136 .align 4,0x90 | |
1137 L046xts_enc_one: | |
1138 movups (%esi),%xmm2 | |
1139 leal 16(%esi),%esi | |
1140 xorps %xmm5,%xmm2 | |
1141 movups (%edx),%xmm0 | |
1142 movups 16(%edx),%xmm1 | |
1143 leal 32(%edx),%edx | |
1144 xorps %xmm0,%xmm2 | |
1145 L051enc1_loop_9: | |
1146 .byte 102,15,56,220,209 | |
1147 decl %ecx | |
1148 movups (%edx),%xmm1 | |
1149 leal 16(%edx),%edx | |
1150 jnz L051enc1_loop_9 | |
1151 .byte 102,15,56,221,209 | |
1152 xorps %xmm5,%xmm2 | |
1153 movups %xmm2,(%edi) | |
1154 leal 16(%edi),%edi | |
1155 movdqa %xmm5,%xmm1 | |
1156 jmp L050xts_enc_done | |
1157 .align 4,0x90 | |
1158 L047xts_enc_two: | |
1159 movaps %xmm1,%xmm6 | |
1160 movups (%esi),%xmm2 | |
1161 movups 16(%esi),%xmm3 | |
1162 leal 32(%esi),%esi | |
1163 xorps %xmm5,%xmm2 | |
1164 xorps %xmm6,%xmm3 | |
1165 xorps %xmm4,%xmm4 | |
1166 call __aesni_encrypt3 | |
1167 xorps %xmm5,%xmm2 | |
1168 xorps %xmm6,%xmm3 | |
1169 movups %xmm2,(%edi) | |
1170 movups %xmm3,16(%edi) | |
1171 leal 32(%edi),%edi | |
1172 movdqa %xmm6,%xmm1 | |
1173 jmp L050xts_enc_done | |
1174 .align 4,0x90 | |
1175 L048xts_enc_three: | |
1176 movaps %xmm1,%xmm7 | |
1177 movups (%esi),%xmm2 | |
1178 movups 16(%esi),%xmm3 | |
1179 movups 32(%esi),%xmm4 | |
1180 leal 48(%esi),%esi | |
1181 xorps %xmm5,%xmm2 | |
1182 xorps %xmm6,%xmm3 | |
1183 xorps %xmm7,%xmm4 | |
1184 call __aesni_encrypt3 | |
1185 xorps %xmm5,%xmm2 | |
1186 xorps %xmm6,%xmm3 | |
1187 xorps %xmm7,%xmm4 | |
1188 movups %xmm2,(%edi) | |
1189 movups %xmm3,16(%edi) | |
1190 movups %xmm4,32(%edi) | |
1191 leal 48(%edi),%edi | |
1192 movdqa %xmm7,%xmm1 | |
1193 jmp L050xts_enc_done | |
1194 .align 4,0x90 | |
1195 L049xts_enc_four: | |
1196 movaps %xmm1,%xmm6 | |
1197 movups (%esi),%xmm2 | |
1198 movups 16(%esi),%xmm3 | |
1199 movups 32(%esi),%xmm4 | |
1200 xorps (%esp),%xmm2 | |
1201 movups 48(%esi),%xmm5 | |
1202 leal 64(%esi),%esi | |
1203 xorps 16(%esp),%xmm3 | |
1204 xorps %xmm7,%xmm4 | |
1205 xorps %xmm6,%xmm5 | |
1206 call __aesni_encrypt4 | |
1207 xorps (%esp),%xmm2 | |
1208 xorps 16(%esp),%xmm3 | |
1209 xorps %xmm7,%xmm4 | |
1210 movups %xmm2,(%edi) | |
1211 xorps %xmm6,%xmm5 | |
1212 movups %xmm3,16(%edi) | |
1213 movups %xmm4,32(%edi) | |
1214 movups %xmm5,48(%edi) | |
1215 leal 64(%edi),%edi | |
1216 movdqa %xmm6,%xmm1 | |
1217 jmp L050xts_enc_done | |
1218 .align 4,0x90 | |
1219 L045xts_enc_done6x: | |
1220 movl 112(%esp),%eax | |
1221 andl $15,%eax | |
1222 jz L052xts_enc_ret | |
1223 movdqa %xmm1,%xmm5 | |
1224 movl %eax,112(%esp) | |
1225 jmp L053xts_enc_steal | |
1226 .align 4,0x90 | |
1227 L050xts_enc_done: | |
1228 movl 112(%esp),%eax | |
1229 pxor %xmm0,%xmm0 | |
1230 andl $15,%eax | |
1231 jz L052xts_enc_ret | |
1232 pcmpgtd %xmm1,%xmm0 | |
1233 movl %eax,112(%esp) | |
1234 pshufd $19,%xmm0,%xmm5 | |
1235 paddq %xmm1,%xmm1 | |
1236 pand 96(%esp),%xmm5 | |
1237 pxor %xmm1,%xmm5 | |
1238 L053xts_enc_steal: | |
1239 movzbl (%esi),%ecx | |
1240 movzbl -16(%edi),%edx | |
1241 leal 1(%esi),%esi | |
1242 movb %cl,-16(%edi) | |
1243 movb %dl,(%edi) | |
1244 leal 1(%edi),%edi | |
1245 subl $1,%eax | |
1246 jnz L053xts_enc_steal | |
1247 subl 112(%esp),%edi | |
1248 movl %ebp,%edx | |
1249 movl %ebx,%ecx | |
1250 movups -16(%edi),%xmm2 | |
1251 xorps %xmm5,%xmm2 | |
1252 movups (%edx),%xmm0 | |
1253 movups 16(%edx),%xmm1 | |
1254 leal 32(%edx),%edx | |
1255 xorps %xmm0,%xmm2 | |
1256 L054enc1_loop_10: | |
1257 .byte 102,15,56,220,209 | |
1258 decl %ecx | |
1259 movups (%edx),%xmm1 | |
1260 leal 16(%edx),%edx | |
1261 jnz L054enc1_loop_10 | |
1262 .byte 102,15,56,221,209 | |
1263 xorps %xmm5,%xmm2 | |
1264 movups %xmm2,-16(%edi) | |
1265 L052xts_enc_ret: | |
1266 movl 116(%esp),%esp | |
1267 popl %edi | |
1268 popl %esi | |
1269 popl %ebx | |
1270 popl %ebp | |
1271 ret | |
1272 .globl _aesni_xts_decrypt | |
1273 .align 4 | |
1274 _aesni_xts_decrypt: | |
1275 L_aesni_xts_decrypt_begin: | |
1276 pushl %ebp | |
1277 pushl %ebx | |
1278 pushl %esi | |
1279 pushl %edi | |
1280 movl 36(%esp),%edx | |
1281 movl 40(%esp),%esi | |
1282 movl 240(%edx),%ecx | |
1283 movups (%esi),%xmm2 | |
1284 movups (%edx),%xmm0 | |
1285 movups 16(%edx),%xmm1 | |
1286 leal 32(%edx),%edx | |
1287 xorps %xmm0,%xmm2 | |
1288 L055enc1_loop_11: | |
1289 .byte 102,15,56,220,209 | |
1290 decl %ecx | |
1291 movups (%edx),%xmm1 | |
1292 leal 16(%edx),%edx | |
1293 jnz L055enc1_loop_11 | |
1294 .byte 102,15,56,221,209 | |
1295 movl 20(%esp),%esi | |
1296 movl 24(%esp),%edi | |
1297 movl 28(%esp),%eax | |
1298 movl 32(%esp),%edx | |
1299 movl %esp,%ebp | |
1300 subl $120,%esp | |
1301 andl $-16,%esp | |
1302 xorl %ebx,%ebx | |
1303 testl $15,%eax | |
1304 setnz %bl | |
1305 shll $4,%ebx | |
1306 subl %ebx,%eax | |
1307 movl $135,96(%esp) | |
1308 movl $0,100(%esp) | |
1309 movl $1,104(%esp) | |
1310 movl $0,108(%esp) | |
1311 movl %eax,112(%esp) | |
1312 movl %ebp,116(%esp) | |
1313 movl 240(%edx),%ecx | |
1314 movl %edx,%ebp | |
1315 movl %ecx,%ebx | |
1316 movdqa %xmm2,%xmm1 | |
1317 pxor %xmm0,%xmm0 | |
1318 movdqa 96(%esp),%xmm3 | |
1319 pcmpgtd %xmm1,%xmm0 | |
1320 andl $-16,%eax | |
1321 subl $96,%eax | |
1322 jc L056xts_dec_short | |
1323 shrl $1,%ecx | |
1324 movl %ecx,%ebx | |
1325 jmp L057xts_dec_loop6 | |
1326 .align 4,0x90 | |
1327 L057xts_dec_loop6: | |
1328 pshufd $19,%xmm0,%xmm2 | |
1329 pxor %xmm0,%xmm0 | |
1330 movdqa %xmm1,(%esp) | |
1331 paddq %xmm1,%xmm1 | |
1332 pand %xmm3,%xmm2 | |
1333 pcmpgtd %xmm1,%xmm0 | |
1334 pxor %xmm2,%xmm1 | |
1335 pshufd $19,%xmm0,%xmm2 | |
1336 pxor %xmm0,%xmm0 | |
1337 movdqa %xmm1,16(%esp) | |
1338 paddq %xmm1,%xmm1 | |
1339 pand %xmm3,%xmm2 | |
1340 pcmpgtd %xmm1,%xmm0 | |
1341 pxor %xmm2,%xmm1 | |
1342 pshufd $19,%xmm0,%xmm2 | |
1343 pxor %xmm0,%xmm0 | |
1344 movdqa %xmm1,32(%esp) | |
1345 paddq %xmm1,%xmm1 | |
1346 pand %xmm3,%xmm2 | |
1347 pcmpgtd %xmm1,%xmm0 | |
1348 pxor %xmm2,%xmm1 | |
1349 pshufd $19,%xmm0,%xmm2 | |
1350 pxor %xmm0,%xmm0 | |
1351 movdqa %xmm1,48(%esp) | |
1352 paddq %xmm1,%xmm1 | |
1353 pand %xmm3,%xmm2 | |
1354 pcmpgtd %xmm1,%xmm0 | |
1355 pxor %xmm2,%xmm1 | |
1356 pshufd $19,%xmm0,%xmm7 | |
1357 movdqa %xmm1,64(%esp) | |
1358 paddq %xmm1,%xmm1 | |
1359 movups (%ebp),%xmm0 | |
1360 pand %xmm3,%xmm7 | |
1361 movups (%esi),%xmm2 | |
1362 pxor %xmm1,%xmm7 | |
1363 movdqu 16(%esi),%xmm3 | |
1364 xorps %xmm0,%xmm2 | |
1365 movdqu 32(%esi),%xmm4 | |
1366 pxor %xmm0,%xmm3 | |
1367 movdqu 48(%esi),%xmm5 | |
1368 pxor %xmm0,%xmm4 | |
1369 movdqu 64(%esi),%xmm6 | |
1370 pxor %xmm0,%xmm5 | |
1371 movdqu 80(%esi),%xmm1 | |
1372 pxor %xmm0,%xmm6 | |
1373 leal 96(%esi),%esi | |
1374 pxor (%esp),%xmm2 | |
1375 movdqa %xmm7,80(%esp) | |
1376 pxor %xmm1,%xmm7 | |
1377 movups 16(%ebp),%xmm1 | |
1378 leal 32(%ebp),%edx | |
1379 pxor 16(%esp),%xmm3 | |
1380 .byte 102,15,56,222,209 | |
1381 pxor 32(%esp),%xmm4 | |
1382 .byte 102,15,56,222,217 | |
1383 pxor 48(%esp),%xmm5 | |
1384 decl %ecx | |
1385 .byte 102,15,56,222,225 | |
1386 pxor 64(%esp),%xmm6 | |
1387 .byte 102,15,56,222,233 | |
1388 pxor %xmm0,%xmm7 | |
1389 .byte 102,15,56,222,241 | |
1390 movups (%edx),%xmm0 | |
1391 .byte 102,15,56,222,249 | |
1392 call L_aesni_decrypt6_enter | |
1393 movdqa 80(%esp),%xmm1 | |
1394 pxor %xmm0,%xmm0 | |
1395 xorps (%esp),%xmm2 | |
1396 pcmpgtd %xmm1,%xmm0 | |
1397 xorps 16(%esp),%xmm3 | |
1398 movups %xmm2,(%edi) | |
1399 xorps 32(%esp),%xmm4 | |
1400 movups %xmm3,16(%edi) | |
1401 xorps 48(%esp),%xmm5 | |
1402 movups %xmm4,32(%edi) | |
1403 xorps 64(%esp),%xmm6 | |
1404 movups %xmm5,48(%edi) | |
1405 xorps %xmm1,%xmm7 | |
1406 movups %xmm6,64(%edi) | |
1407 pshufd $19,%xmm0,%xmm2 | |
1408 movups %xmm7,80(%edi) | |
1409 leal 96(%edi),%edi | |
1410 movdqa 96(%esp),%xmm3 | |
1411 pxor %xmm0,%xmm0 | |
1412 paddq %xmm1,%xmm1 | |
1413 pand %xmm3,%xmm2 | |
1414 pcmpgtd %xmm1,%xmm0 | |
1415 movl %ebx,%ecx | |
1416 pxor %xmm2,%xmm1 | |
1417 subl $96,%eax | |
1418 jnc L057xts_dec_loop6 | |
1419 leal 1(,%ecx,2),%ecx | |
1420 movl %ebp,%edx | |
1421 movl %ecx,%ebx | |
1422 L056xts_dec_short: | |
1423 addl $96,%eax | |
1424 jz L058xts_dec_done6x | |
1425 movdqa %xmm1,%xmm5 | |
1426 cmpl $32,%eax | |
1427 jb L059xts_dec_one | |
1428 pshufd $19,%xmm0,%xmm2 | |
1429 pxor %xmm0,%xmm0 | |
1430 paddq %xmm1,%xmm1 | |
1431 pand %xmm3,%xmm2 | |
1432 pcmpgtd %xmm1,%xmm0 | |
1433 pxor %xmm2,%xmm1 | |
1434 je L060xts_dec_two | |
1435 pshufd $19,%xmm0,%xmm2 | |
1436 pxor %xmm0,%xmm0 | |
1437 movdqa %xmm1,%xmm6 | |
1438 paddq %xmm1,%xmm1 | |
1439 pand %xmm3,%xmm2 | |
1440 pcmpgtd %xmm1,%xmm0 | |
1441 pxor %xmm2,%xmm1 | |
1442 cmpl $64,%eax | |
1443 jb L061xts_dec_three | |
1444 pshufd $19,%xmm0,%xmm2 | |
1445 pxor %xmm0,%xmm0 | |
1446 movdqa %xmm1,%xmm7 | |
1447 paddq %xmm1,%xmm1 | |
1448 pand %xmm3,%xmm2 | |
1449 pcmpgtd %xmm1,%xmm0 | |
1450 pxor %xmm2,%xmm1 | |
1451 movdqa %xmm5,(%esp) | |
1452 movdqa %xmm6,16(%esp) | |
1453 je L062xts_dec_four | |
1454 movdqa %xmm7,32(%esp) | |
1455 pshufd $19,%xmm0,%xmm7 | |
1456 movdqa %xmm1,48(%esp) | |
1457 paddq %xmm1,%xmm1 | |
1458 pand %xmm3,%xmm7 | |
1459 pxor %xmm1,%xmm7 | |
1460 movdqu (%esi),%xmm2 | |
1461 movdqu 16(%esi),%xmm3 | |
1462 movdqu 32(%esi),%xmm4 | |
1463 pxor (%esp),%xmm2 | |
1464 movdqu 48(%esi),%xmm5 | |
1465 pxor 16(%esp),%xmm3 | |
1466 movdqu 64(%esi),%xmm6 | |
1467 pxor 32(%esp),%xmm4 | |
1468 leal 80(%esi),%esi | |
1469 pxor 48(%esp),%xmm5 | |
1470 movdqa %xmm7,64(%esp) | |
1471 pxor %xmm7,%xmm6 | |
1472 call __aesni_decrypt6 | |
1473 movaps 64(%esp),%xmm1 | |
1474 xorps (%esp),%xmm2 | |
1475 xorps 16(%esp),%xmm3 | |
1476 xorps 32(%esp),%xmm4 | |
1477 movups %xmm2,(%edi) | |
1478 xorps 48(%esp),%xmm5 | |
1479 movups %xmm3,16(%edi) | |
1480 xorps %xmm1,%xmm6 | |
1481 movups %xmm4,32(%edi) | |
1482 movups %xmm5,48(%edi) | |
1483 movups %xmm6,64(%edi) | |
1484 leal 80(%edi),%edi | |
1485 jmp L063xts_dec_done | |
1486 .align 4,0x90 | |
1487 L059xts_dec_one: | |
1488 movups (%esi),%xmm2 | |
1489 leal 16(%esi),%esi | |
1490 xorps %xmm5,%xmm2 | |
1491 movups (%edx),%xmm0 | |
1492 movups 16(%edx),%xmm1 | |
1493 leal 32(%edx),%edx | |
1494 xorps %xmm0,%xmm2 | |
1495 L064dec1_loop_12: | |
1496 .byte 102,15,56,222,209 | |
1497 decl %ecx | |
1498 movups (%edx),%xmm1 | |
1499 leal 16(%edx),%edx | |
1500 jnz L064dec1_loop_12 | |
1501 .byte 102,15,56,223,209 | |
1502 xorps %xmm5,%xmm2 | |
1503 movups %xmm2,(%edi) | |
1504 leal 16(%edi),%edi | |
1505 movdqa %xmm5,%xmm1 | |
1506 jmp L063xts_dec_done | |
1507 .align 4,0x90 | |
1508 L060xts_dec_two: | |
1509 movaps %xmm1,%xmm6 | |
1510 movups (%esi),%xmm2 | |
1511 movups 16(%esi),%xmm3 | |
1512 leal 32(%esi),%esi | |
1513 xorps %xmm5,%xmm2 | |
1514 xorps %xmm6,%xmm3 | |
1515 call __aesni_decrypt3 | |
1516 xorps %xmm5,%xmm2 | |
1517 xorps %xmm6,%xmm3 | |
1518 movups %xmm2,(%edi) | |
1519 movups %xmm3,16(%edi) | |
1520 leal 32(%edi),%edi | |
1521 movdqa %xmm6,%xmm1 | |
1522 jmp L063xts_dec_done | |
1523 .align 4,0x90 | |
1524 L061xts_dec_three: | |
1525 movaps %xmm1,%xmm7 | |
1526 movups (%esi),%xmm2 | |
1527 movups 16(%esi),%xmm3 | |
1528 movups 32(%esi),%xmm4 | |
1529 leal 48(%esi),%esi | |
1530 xorps %xmm5,%xmm2 | |
1531 xorps %xmm6,%xmm3 | |
1532 xorps %xmm7,%xmm4 | |
1533 call __aesni_decrypt3 | |
1534 xorps %xmm5,%xmm2 | |
1535 xorps %xmm6,%xmm3 | |
1536 xorps %xmm7,%xmm4 | |
1537 movups %xmm2,(%edi) | |
1538 movups %xmm3,16(%edi) | |
1539 movups %xmm4,32(%edi) | |
1540 leal 48(%edi),%edi | |
1541 movdqa %xmm7,%xmm1 | |
1542 jmp L063xts_dec_done | |
1543 .align 4,0x90 | |
1544 L062xts_dec_four: | |
1545 movaps %xmm1,%xmm6 | |
1546 movups (%esi),%xmm2 | |
1547 movups 16(%esi),%xmm3 | |
1548 movups 32(%esi),%xmm4 | |
1549 xorps (%esp),%xmm2 | |
1550 movups 48(%esi),%xmm5 | |
1551 leal 64(%esi),%esi | |
1552 xorps 16(%esp),%xmm3 | |
1553 xorps %xmm7,%xmm4 | |
1554 xorps %xmm6,%xmm5 | |
1555 call __aesni_decrypt4 | |
1556 xorps (%esp),%xmm2 | |
1557 xorps 16(%esp),%xmm3 | |
1558 xorps %xmm7,%xmm4 | |
1559 movups %xmm2,(%edi) | |
1560 xorps %xmm6,%xmm5 | |
1561 movups %xmm3,16(%edi) | |
1562 movups %xmm4,32(%edi) | |
1563 movups %xmm5,48(%edi) | |
1564 leal 64(%edi),%edi | |
1565 movdqa %xmm6,%xmm1 | |
1566 jmp L063xts_dec_done | |
1567 .align 4,0x90 | |
1568 L058xts_dec_done6x: | |
1569 movl 112(%esp),%eax | |
1570 andl $15,%eax | |
1571 jz L065xts_dec_ret | |
1572 movl %eax,112(%esp) | |
1573 jmp L066xts_dec_only_one_more | |
1574 .align 4,0x90 | |
1575 L063xts_dec_done: | |
1576 movl 112(%esp),%eax | |
1577 pxor %xmm0,%xmm0 | |
1578 andl $15,%eax | |
1579 jz L065xts_dec_ret | |
1580 pcmpgtd %xmm1,%xmm0 | |
1581 movl %eax,112(%esp) | |
1582 pshufd $19,%xmm0,%xmm2 | |
1583 pxor %xmm0,%xmm0 | |
1584 movdqa 96(%esp),%xmm3 | |
1585 paddq %xmm1,%xmm1 | |
1586 pand %xmm3,%xmm2 | |
1587 pcmpgtd %xmm1,%xmm0 | |
1588 pxor %xmm2,%xmm1 | |
1589 L066xts_dec_only_one_more: | |
1590 pshufd $19,%xmm0,%xmm5 | |
1591 movdqa %xmm1,%xmm6 | |
1592 paddq %xmm1,%xmm1 | |
1593 pand %xmm3,%xmm5 | |
1594 pxor %xmm1,%xmm5 | |
1595 movl %ebp,%edx | |
1596 movl %ebx,%ecx | |
1597 movups (%esi),%xmm2 | |
1598 xorps %xmm5,%xmm2 | |
1599 movups (%edx),%xmm0 | |
1600 movups 16(%edx),%xmm1 | |
1601 leal 32(%edx),%edx | |
1602 xorps %xmm0,%xmm2 | |
1603 L067dec1_loop_13: | |
1604 .byte 102,15,56,222,209 | |
1605 decl %ecx | |
1606 movups (%edx),%xmm1 | |
1607 leal 16(%edx),%edx | |
1608 jnz L067dec1_loop_13 | |
1609 .byte 102,15,56,223,209 | |
1610 xorps %xmm5,%xmm2 | |
1611 movups %xmm2,(%edi) | |
1612 L068xts_dec_steal: | |
1613 movzbl 16(%esi),%ecx | |
1614 movzbl (%edi),%edx | |
1615 leal 1(%esi),%esi | |
1616 movb %cl,(%edi) | |
1617 movb %dl,16(%edi) | |
1618 leal 1(%edi),%edi | |
1619 subl $1,%eax | |
1620 jnz L068xts_dec_steal | |
1621 subl 112(%esp),%edi | |
1622 movl %ebp,%edx | |
1623 movl %ebx,%ecx | |
1624 movups (%edi),%xmm2 | |
1625 xorps %xmm6,%xmm2 | |
1626 movups (%edx),%xmm0 | |
1627 movups 16(%edx),%xmm1 | |
1628 leal 32(%edx),%edx | |
1629 xorps %xmm0,%xmm2 | |
1630 L069dec1_loop_14: | |
1631 .byte 102,15,56,222,209 | |
1632 decl %ecx | |
1633 movups (%edx),%xmm1 | |
1634 leal 16(%edx),%edx | |
1635 jnz L069dec1_loop_14 | |
1636 .byte 102,15,56,223,209 | |
1637 xorps %xmm6,%xmm2 | |
1638 movups %xmm2,(%edi) | |
1639 L065xts_dec_ret: | |
1640 movl 116(%esp),%esp | |
1641 popl %edi | |
1642 popl %esi | |
1643 popl %ebx | |
1644 popl %ebp | |
1645 ret | |
1646 .globl _aesni_cbc_encrypt | |
1647 .align 4 | |
1648 _aesni_cbc_encrypt: | |
1649 L_aesni_cbc_encrypt_begin: | |
1650 pushl %ebp | |
1651 pushl %ebx | |
1652 pushl %esi | |
1653 pushl %edi | |
1654 movl 20(%esp),%esi | |
1655 movl %esp,%ebx | |
1656 movl 24(%esp),%edi | |
1657 subl $24,%ebx | |
1658 movl 28(%esp),%eax | |
1659 andl $-16,%ebx | |
1660 movl 32(%esp),%edx | |
1661 movl 36(%esp),%ebp | |
1662 testl %eax,%eax | |
1663 jz L070cbc_abort | |
1664 cmpl $0,40(%esp) | |
1665 xchgl %esp,%ebx | |
1666 movups (%ebp),%xmm7 | |
1667 movl 240(%edx),%ecx | |
1668 movl %edx,%ebp | |
1669 movl %ebx,16(%esp) | |
1670 movl %ecx,%ebx | |
1671 je L071cbc_decrypt | |
1672 movaps %xmm7,%xmm2 | |
1673 cmpl $16,%eax | |
1674 jb L072cbc_enc_tail | |
1675 subl $16,%eax | |
1676 jmp L073cbc_enc_loop | |
1677 .align 4,0x90 | |
1678 L073cbc_enc_loop: | |
1679 movups (%esi),%xmm7 | |
1680 leal 16(%esi),%esi | |
1681 movups (%edx),%xmm0 | |
1682 movups 16(%edx),%xmm1 | |
1683 xorps %xmm0,%xmm7 | |
1684 leal 32(%edx),%edx | |
1685 xorps %xmm7,%xmm2 | |
1686 L074enc1_loop_15: | |
1687 .byte 102,15,56,220,209 | |
1688 decl %ecx | |
1689 movups (%edx),%xmm1 | |
1690 leal 16(%edx),%edx | |
1691 jnz L074enc1_loop_15 | |
1692 .byte 102,15,56,221,209 | |
1693 movl %ebx,%ecx | |
1694 movl %ebp,%edx | |
1695 movups %xmm2,(%edi) | |
1696 leal 16(%edi),%edi | |
1697 subl $16,%eax | |
1698 jnc L073cbc_enc_loop | |
1699 addl $16,%eax | |
1700 jnz L072cbc_enc_tail | |
1701 movaps %xmm2,%xmm7 | |
1702 jmp L075cbc_ret | |
1703 L072cbc_enc_tail: | |
1704 movl %eax,%ecx | |
1705 .long 2767451785 | |
1706 movl $16,%ecx | |
1707 subl %eax,%ecx | |
1708 xorl %eax,%eax | |
1709 .long 2868115081 | |
1710 leal -16(%edi),%edi | |
1711 movl %ebx,%ecx | |
1712 movl %edi,%esi | |
1713 movl %ebp,%edx | |
1714 jmp L073cbc_enc_loop | |
1715 .align 4,0x90 | |
1716 L071cbc_decrypt: | |
1717 cmpl $80,%eax | |
1718 jbe L076cbc_dec_tail | |
1719 movaps %xmm7,(%esp) | |
1720 subl $80,%eax | |
1721 jmp L077cbc_dec_loop6_enter | |
1722 .align 4,0x90 | |
1723 L078cbc_dec_loop6: | |
1724 movaps %xmm0,(%esp) | |
1725 movups %xmm7,(%edi) | |
1726 leal 16(%edi),%edi | |
1727 L077cbc_dec_loop6_enter: | |
1728 movdqu (%esi),%xmm2 | |
1729 movdqu 16(%esi),%xmm3 | |
1730 movdqu 32(%esi),%xmm4 | |
1731 movdqu 48(%esi),%xmm5 | |
1732 movdqu 64(%esi),%xmm6 | |
1733 movdqu 80(%esi),%xmm7 | |
1734 call __aesni_decrypt6 | |
1735 movups (%esi),%xmm1 | |
1736 movups 16(%esi),%xmm0 | |
1737 xorps (%esp),%xmm2 | |
1738 xorps %xmm1,%xmm3 | |
1739 movups 32(%esi),%xmm1 | |
1740 xorps %xmm0,%xmm4 | |
1741 movups 48(%esi),%xmm0 | |
1742 xorps %xmm1,%xmm5 | |
1743 movups 64(%esi),%xmm1 | |
1744 xorps %xmm0,%xmm6 | |
1745 movups 80(%esi),%xmm0 | |
1746 xorps %xmm1,%xmm7 | |
1747 movups %xmm2,(%edi) | |
1748 movups %xmm3,16(%edi) | |
1749 leal 96(%esi),%esi | |
1750 movups %xmm4,32(%edi) | |
1751 movl %ebx,%ecx | |
1752 movups %xmm5,48(%edi) | |
1753 movl %ebp,%edx | |
1754 movups %xmm6,64(%edi) | |
1755 leal 80(%edi),%edi | |
1756 subl $96,%eax | |
1757 ja L078cbc_dec_loop6 | |
1758 movaps %xmm7,%xmm2 | |
1759 movaps %xmm0,%xmm7 | |
1760 addl $80,%eax | |
1761 jle L079cbc_dec_tail_collected | |
1762 movups %xmm2,(%edi) | |
1763 leal 16(%edi),%edi | |
1764 L076cbc_dec_tail: | |
1765 movups (%esi),%xmm2 | |
1766 movaps %xmm2,%xmm6 | |
1767 cmpl $16,%eax | |
1768 jbe L080cbc_dec_one | |
1769 movups 16(%esi),%xmm3 | |
1770 movaps %xmm3,%xmm5 | |
1771 cmpl $32,%eax | |
1772 jbe L081cbc_dec_two | |
1773 movups 32(%esi),%xmm4 | |
1774 cmpl $48,%eax | |
1775 jbe L082cbc_dec_three | |
1776 movups 48(%esi),%xmm5 | |
1777 cmpl $64,%eax | |
1778 jbe L083cbc_dec_four | |
1779 movups 64(%esi),%xmm6 | |
1780 movaps %xmm7,(%esp) | |
1781 movups (%esi),%xmm2 | |
1782 xorps %xmm7,%xmm7 | |
1783 call __aesni_decrypt6 | |
1784 movups (%esi),%xmm1 | |
1785 movups 16(%esi),%xmm0 | |
1786 xorps (%esp),%xmm2 | |
1787 xorps %xmm1,%xmm3 | |
1788 movups 32(%esi),%xmm1 | |
1789 xorps %xmm0,%xmm4 | |
1790 movups 48(%esi),%xmm0 | |
1791 xorps %xmm1,%xmm5 | |
1792 movups 64(%esi),%xmm7 | |
1793 xorps %xmm0,%xmm6 | |
1794 movups %xmm2,(%edi) | |
1795 movups %xmm3,16(%edi) | |
1796 movups %xmm4,32(%edi) | |
1797 movups %xmm5,48(%edi) | |
1798 leal 64(%edi),%edi | |
1799 movaps %xmm6,%xmm2 | |
1800 subl $80,%eax | |
1801 jmp L079cbc_dec_tail_collected | |
1802 .align 4,0x90 | |
1803 L080cbc_dec_one: | |
1804 movups (%edx),%xmm0 | |
1805 movups 16(%edx),%xmm1 | |
1806 leal 32(%edx),%edx | |
1807 xorps %xmm0,%xmm2 | |
1808 L084dec1_loop_16: | |
1809 .byte 102,15,56,222,209 | |
1810 decl %ecx | |
1811 movups (%edx),%xmm1 | |
1812 leal 16(%edx),%edx | |
1813 jnz L084dec1_loop_16 | |
1814 .byte 102,15,56,223,209 | |
1815 xorps %xmm7,%xmm2 | |
1816 movaps %xmm6,%xmm7 | |
1817 subl $16,%eax | |
1818 jmp L079cbc_dec_tail_collected | |
1819 .align 4,0x90 | |
1820 L081cbc_dec_two: | |
1821 xorps %xmm4,%xmm4 | |
1822 call __aesni_decrypt3 | |
1823 xorps %xmm7,%xmm2 | |
1824 xorps %xmm6,%xmm3 | |
1825 movups %xmm2,(%edi) | |
1826 movaps %xmm3,%xmm2 | |
1827 leal 16(%edi),%edi | |
1828 movaps %xmm5,%xmm7 | |
1829 subl $32,%eax | |
1830 jmp L079cbc_dec_tail_collected | |
1831 .align 4,0x90 | |
1832 L082cbc_dec_three: | |
1833 call __aesni_decrypt3 | |
1834 xorps %xmm7,%xmm2 | |
1835 xorps %xmm6,%xmm3 | |
1836 xorps %xmm5,%xmm4 | |
1837 movups %xmm2,(%edi) | |
1838 movaps %xmm4,%xmm2 | |
1839 movups %xmm3,16(%edi) | |
1840 leal 32(%edi),%edi | |
1841 movups 32(%esi),%xmm7 | |
1842 subl $48,%eax | |
1843 jmp L079cbc_dec_tail_collected | |
1844 .align 4,0x90 | |
1845 L083cbc_dec_four: | |
1846 call __aesni_decrypt4 | |
1847 movups 16(%esi),%xmm1 | |
1848 movups 32(%esi),%xmm0 | |
1849 xorps %xmm7,%xmm2 | |
1850 movups 48(%esi),%xmm7 | |
1851 xorps %xmm6,%xmm3 | |
1852 movups %xmm2,(%edi) | |
1853 xorps %xmm1,%xmm4 | |
1854 movups %xmm3,16(%edi) | |
1855 xorps %xmm0,%xmm5 | |
1856 movups %xmm4,32(%edi) | |
1857 leal 48(%edi),%edi | |
1858 movaps %xmm5,%xmm2 | |
1859 subl $64,%eax | |
1860 L079cbc_dec_tail_collected: | |
1861 andl $15,%eax | |
1862 jnz L085cbc_dec_tail_partial | |
1863 movups %xmm2,(%edi) | |
1864 jmp L075cbc_ret | |
1865 .align 4,0x90 | |
1866 L085cbc_dec_tail_partial: | |
1867 movaps %xmm2,(%esp) | |
1868 movl $16,%ecx | |
1869 movl %esp,%esi | |
1870 subl %eax,%ecx | |
1871 .long 2767451785 | |
1872 L075cbc_ret: | |
1873 movl 16(%esp),%esp | |
1874 movl 36(%esp),%ebp | |
1875 movups %xmm7,(%ebp) | |
1876 L070cbc_abort: | |
1877 popl %edi | |
1878 popl %esi | |
1879 popl %ebx | |
1880 popl %ebp | |
1881 ret | |
1882 .align 4 | |
1883 __aesni_set_encrypt_key: | |
1884 testl %eax,%eax | |
1885 jz L086bad_pointer | |
1886 testl %edx,%edx | |
1887 jz L086bad_pointer | |
1888 movups (%eax),%xmm0 | |
1889 xorps %xmm4,%xmm4 | |
1890 leal 16(%edx),%edx | |
1891 cmpl $256,%ecx | |
1892 je L08714rounds | |
1893 cmpl $192,%ecx | |
1894 je L08812rounds | |
1895 cmpl $128,%ecx | |
1896 jne L089bad_keybits | |
1897 .align 4,0x90 | |
1898 L09010rounds: | |
1899 movl $9,%ecx | |
1900 movups %xmm0,-16(%edx) | |
1901 .byte 102,15,58,223,200,1 | |
1902 call L091key_128_cold | |
1903 .byte 102,15,58,223,200,2 | |
1904 call L092key_128 | |
1905 .byte 102,15,58,223,200,4 | |
1906 call L092key_128 | |
1907 .byte 102,15,58,223,200,8 | |
1908 call L092key_128 | |
1909 .byte 102,15,58,223,200,16 | |
1910 call L092key_128 | |
1911 .byte 102,15,58,223,200,32 | |
1912 call L092key_128 | |
1913 .byte 102,15,58,223,200,64 | |
1914 call L092key_128 | |
1915 .byte 102,15,58,223,200,128 | |
1916 call L092key_128 | |
1917 .byte 102,15,58,223,200,27 | |
1918 call L092key_128 | |
1919 .byte 102,15,58,223,200,54 | |
1920 call L092key_128 | |
1921 movups %xmm0,(%edx) | |
1922 movl %ecx,80(%edx) | |
1923 xorl %eax,%eax | |
1924 ret | |
1925 .align 4,0x90 | |
1926 L092key_128: | |
1927 movups %xmm0,(%edx) | |
1928 leal 16(%edx),%edx | |
1929 L091key_128_cold: | |
1930 shufps $16,%xmm0,%xmm4 | |
1931 xorps %xmm4,%xmm0 | |
1932 shufps $140,%xmm0,%xmm4 | |
1933 xorps %xmm4,%xmm0 | |
1934 shufps $255,%xmm1,%xmm1 | |
1935 xorps %xmm1,%xmm0 | |
1936 ret | |
1937 .align 4,0x90 | |
1938 L08812rounds: | |
1939 movq 16(%eax),%xmm2 | |
1940 movl $11,%ecx | |
1941 movups %xmm0,-16(%edx) | |
1942 .byte 102,15,58,223,202,1 | |
1943 call L093key_192a_cold | |
1944 .byte 102,15,58,223,202,2 | |
1945 call L094key_192b | |
1946 .byte 102,15,58,223,202,4 | |
1947 call L095key_192a | |
1948 .byte 102,15,58,223,202,8 | |
1949 call L094key_192b | |
1950 .byte 102,15,58,223,202,16 | |
1951 call L095key_192a | |
1952 .byte 102,15,58,223,202,32 | |
1953 call L094key_192b | |
1954 .byte 102,15,58,223,202,64 | |
1955 call L095key_192a | |
1956 .byte 102,15,58,223,202,128 | |
1957 call L094key_192b | |
1958 movups %xmm0,(%edx) | |
1959 movl %ecx,48(%edx) | |
1960 xorl %eax,%eax | |
1961 ret | |
1962 .align 4,0x90 | |
1963 L095key_192a: | |
1964 movups %xmm0,(%edx) | |
1965 leal 16(%edx),%edx | |
1966 .align 4,0x90 | |
1967 L093key_192a_cold: | |
1968 movaps %xmm2,%xmm5 | |
1969 L096key_192b_warm: | |
1970 shufps $16,%xmm0,%xmm4 | |
1971 movdqa %xmm2,%xmm3 | |
1972 xorps %xmm4,%xmm0 | |
1973 shufps $140,%xmm0,%xmm4 | |
1974 pslldq $4,%xmm3 | |
1975 xorps %xmm4,%xmm0 | |
1976 pshufd $85,%xmm1,%xmm1 | |
1977 pxor %xmm3,%xmm2 | |
1978 pxor %xmm1,%xmm0 | |
1979 pshufd $255,%xmm0,%xmm3 | |
1980 pxor %xmm3,%xmm2 | |
1981 ret | |
1982 .align 4,0x90 | |
1983 L094key_192b: | |
1984 movaps %xmm0,%xmm3 | |
1985 shufps $68,%xmm0,%xmm5 | |
1986 movups %xmm5,(%edx) | |
1987 shufps $78,%xmm2,%xmm3 | |
1988 movups %xmm3,16(%edx) | |
1989 leal 32(%edx),%edx | |
1990 jmp L096key_192b_warm | |
1991 .align 4,0x90 | |
1992 L08714rounds: | |
1993 movups 16(%eax),%xmm2 | |
1994 movl $13,%ecx | |
1995 leal 16(%edx),%edx | |
1996 movups %xmm0,-32(%edx) | |
1997 movups %xmm2,-16(%edx) | |
1998 .byte 102,15,58,223,202,1 | |
1999 call L097key_256a_cold | |
2000 .byte 102,15,58,223,200,1 | |
2001 call L098key_256b | |
2002 .byte 102,15,58,223,202,2 | |
2003 call L099key_256a | |
2004 .byte 102,15,58,223,200,2 | |
2005 call L098key_256b | |
2006 .byte 102,15,58,223,202,4 | |
2007 call L099key_256a | |
2008 .byte 102,15,58,223,200,4 | |
2009 call L098key_256b | |
2010 .byte 102,15,58,223,202,8 | |
2011 call L099key_256a | |
2012 .byte 102,15,58,223,200,8 | |
2013 call L098key_256b | |
2014 .byte 102,15,58,223,202,16 | |
2015 call L099key_256a | |
2016 .byte 102,15,58,223,200,16 | |
2017 call L098key_256b | |
2018 .byte 102,15,58,223,202,32 | |
2019 call L099key_256a | |
2020 .byte 102,15,58,223,200,32 | |
2021 call L098key_256b | |
2022 .byte 102,15,58,223,202,64 | |
2023 call L099key_256a | |
2024 movups %xmm0,(%edx) | |
2025 movl %ecx,16(%edx) | |
2026 xorl %eax,%eax | |
2027 ret | |
2028 .align 4,0x90 | |
2029 L099key_256a: | |
2030 movups %xmm2,(%edx) | |
2031 leal 16(%edx),%edx | |
2032 L097key_256a_cold: | |
2033 shufps $16,%xmm0,%xmm4 | |
2034 xorps %xmm4,%xmm0 | |
2035 shufps $140,%xmm0,%xmm4 | |
2036 xorps %xmm4,%xmm0 | |
2037 shufps $255,%xmm1,%xmm1 | |
2038 xorps %xmm1,%xmm0 | |
2039 ret | |
2040 .align 4,0x90 | |
2041 L098key_256b: | |
2042 movups %xmm0,(%edx) | |
2043 leal 16(%edx),%edx | |
2044 shufps $16,%xmm2,%xmm4 | |
2045 xorps %xmm4,%xmm2 | |
2046 shufps $140,%xmm2,%xmm4 | |
2047 xorps %xmm4,%xmm2 | |
2048 shufps $170,%xmm1,%xmm1 | |
2049 xorps %xmm1,%xmm2 | |
2050 ret | |
2051 .align 2,0x90 | |
2052 L086bad_pointer: | |
2053 movl $-1,%eax | |
2054 ret | |
2055 .align 2,0x90 | |
2056 L089bad_keybits: | |
2057 movl $-2,%eax | |
2058 ret | |
2059 .globl _aesni_set_encrypt_key | |
2060 .align 4 | |
2061 _aesni_set_encrypt_key: | |
2062 L_aesni_set_encrypt_key_begin: | |
2063 movl 4(%esp),%eax | |
2064 movl 8(%esp),%ecx | |
2065 movl 12(%esp),%edx | |
2066 call __aesni_set_encrypt_key | |
2067 ret | |
2068 .globl _aesni_set_decrypt_key | |
2069 .align 4 | |
2070 _aesni_set_decrypt_key: | |
2071 L_aesni_set_decrypt_key_begin: | |
2072 movl 4(%esp),%eax | |
2073 movl 8(%esp),%ecx | |
2074 movl 12(%esp),%edx | |
2075 call __aesni_set_encrypt_key | |
2076 movl 12(%esp),%edx | |
2077 shll $4,%ecx | |
2078 testl %eax,%eax | |
2079 jnz L100dec_key_ret | |
2080 leal 16(%edx,%ecx,1),%eax | |
2081 movups (%edx),%xmm0 | |
2082 movups (%eax),%xmm1 | |
2083 movups %xmm0,(%eax) | |
2084 movups %xmm1,(%edx) | |
2085 leal 16(%edx),%edx | |
2086 leal -16(%eax),%eax | |
2087 L101dec_key_inverse: | |
2088 movups (%edx),%xmm0 | |
2089 movups (%eax),%xmm1 | |
2090 .byte 102,15,56,219,192 | |
2091 .byte 102,15,56,219,201 | |
2092 leal 16(%edx),%edx | |
2093 leal -16(%eax),%eax | |
2094 movups %xmm0,16(%eax) | |
2095 movups %xmm1,-16(%edx) | |
2096 cmpl %edx,%eax | |
2097 ja L101dec_key_inverse | |
2098 movups (%edx),%xmm0 | |
2099 .byte 102,15,56,219,192 | |
2100 movups %xmm0,(%edx) | |
2101 xorl %eax,%eax | |
2102 L100dec_key_ret: | |
2103 ret | |
2104 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 | |
2105 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 | |
2106 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 | |
2107 .byte 115,108,46,111,114,103,62,0 | |
OLD | NEW |