]>
Commit | Line | Data |
---|---|---|
4102950a CZ |
1 | ; WARNING: do not edit!\r |
2 | ; Generated from openssl/crypto/aes/asm/aesni-x86.pl\r | |
3 | ;\r | |
4 | ; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.\r | |
5 | ;\r | |
6 | ; Licensed under the OpenSSL license (the "License"). You may not use\r | |
7 | ; this file except in compliance with the License. You can obtain a copy\r | |
8 | ; in the file LICENSE in the source distribution or at\r | |
9 | ; https://www.openssl.org/source/license.html\r | |
10 | \r | |
11 | %ifidn __OUTPUT_FORMAT__,obj\r | |
12 | section code use32 class=code align=64\r | |
13 | %elifidn __OUTPUT_FORMAT__,win32\r | |
14 | $@feat.00 equ 1\r | |
15 | section .text code align=64\r | |
16 | %else\r | |
17 | section .text code\r | |
18 | %endif\r | |
19 | ;extern _OPENSSL_ia32cap_P\r | |
20 | global _aesni_encrypt\r | |
21 | align 16\r | |
22 | _aesni_encrypt:\r | |
23 | L$_aesni_encrypt_begin:\r | |
24 | mov eax,DWORD [4+esp]\r | |
25 | mov edx,DWORD [12+esp]\r | |
26 | movups xmm2,[eax]\r | |
27 | mov ecx,DWORD [240+edx]\r | |
28 | mov eax,DWORD [8+esp]\r | |
29 | movups xmm0,[edx]\r | |
30 | movups xmm1,[16+edx]\r | |
31 | lea edx,[32+edx]\r | |
32 | xorps xmm2,xmm0\r | |
33 | L$000enc1_loop_1:\r | |
34 | db 102,15,56,220,209\r | |
35 | dec ecx\r | |
36 | movups xmm1,[edx]\r | |
37 | lea edx,[16+edx]\r | |
38 | jnz NEAR L$000enc1_loop_1\r | |
39 | db 102,15,56,221,209\r | |
40 | pxor xmm0,xmm0\r | |
41 | pxor xmm1,xmm1\r | |
42 | movups [eax],xmm2\r | |
43 | pxor xmm2,xmm2\r | |
44 | ret\r | |
45 | global _aesni_decrypt\r | |
46 | align 16\r | |
47 | _aesni_decrypt:\r | |
48 | L$_aesni_decrypt_begin:\r | |
49 | mov eax,DWORD [4+esp]\r | |
50 | mov edx,DWORD [12+esp]\r | |
51 | movups xmm2,[eax]\r | |
52 | mov ecx,DWORD [240+edx]\r | |
53 | mov eax,DWORD [8+esp]\r | |
54 | movups xmm0,[edx]\r | |
55 | movups xmm1,[16+edx]\r | |
56 | lea edx,[32+edx]\r | |
57 | xorps xmm2,xmm0\r | |
58 | L$001dec1_loop_2:\r | |
59 | db 102,15,56,222,209\r | |
60 | dec ecx\r | |
61 | movups xmm1,[edx]\r | |
62 | lea edx,[16+edx]\r | |
63 | jnz NEAR L$001dec1_loop_2\r | |
64 | db 102,15,56,223,209\r | |
65 | pxor xmm0,xmm0\r | |
66 | pxor xmm1,xmm1\r | |
67 | movups [eax],xmm2\r | |
68 | pxor xmm2,xmm2\r | |
69 | ret\r | |
70 | align 16\r | |
71 | __aesni_encrypt2:\r | |
72 | movups xmm0,[edx]\r | |
73 | shl ecx,4\r | |
74 | movups xmm1,[16+edx]\r | |
75 | xorps xmm2,xmm0\r | |
76 | pxor xmm3,xmm0\r | |
77 | movups xmm0,[32+edx]\r | |
78 | lea edx,[32+ecx*1+edx]\r | |
79 | neg ecx\r | |
80 | add ecx,16\r | |
81 | L$002enc2_loop:\r | |
82 | db 102,15,56,220,209\r | |
83 | db 102,15,56,220,217\r | |
84 | movups xmm1,[ecx*1+edx]\r | |
85 | add ecx,32\r | |
86 | db 102,15,56,220,208\r | |
87 | db 102,15,56,220,216\r | |
88 | movups xmm0,[ecx*1+edx-16]\r | |
89 | jnz NEAR L$002enc2_loop\r | |
90 | db 102,15,56,220,209\r | |
91 | db 102,15,56,220,217\r | |
92 | db 102,15,56,221,208\r | |
93 | db 102,15,56,221,216\r | |
94 | ret\r | |
95 | align 16\r | |
96 | __aesni_decrypt2:\r | |
97 | movups xmm0,[edx]\r | |
98 | shl ecx,4\r | |
99 | movups xmm1,[16+edx]\r | |
100 | xorps xmm2,xmm0\r | |
101 | pxor xmm3,xmm0\r | |
102 | movups xmm0,[32+edx]\r | |
103 | lea edx,[32+ecx*1+edx]\r | |
104 | neg ecx\r | |
105 | add ecx,16\r | |
106 | L$003dec2_loop:\r | |
107 | db 102,15,56,222,209\r | |
108 | db 102,15,56,222,217\r | |
109 | movups xmm1,[ecx*1+edx]\r | |
110 | add ecx,32\r | |
111 | db 102,15,56,222,208\r | |
112 | db 102,15,56,222,216\r | |
113 | movups xmm0,[ecx*1+edx-16]\r | |
114 | jnz NEAR L$003dec2_loop\r | |
115 | db 102,15,56,222,209\r | |
116 | db 102,15,56,222,217\r | |
117 | db 102,15,56,223,208\r | |
118 | db 102,15,56,223,216\r | |
119 | ret\r | |
120 | align 16\r | |
121 | __aesni_encrypt3:\r | |
122 | movups xmm0,[edx]\r | |
123 | shl ecx,4\r | |
124 | movups xmm1,[16+edx]\r | |
125 | xorps xmm2,xmm0\r | |
126 | pxor xmm3,xmm0\r | |
127 | pxor xmm4,xmm0\r | |
128 | movups xmm0,[32+edx]\r | |
129 | lea edx,[32+ecx*1+edx]\r | |
130 | neg ecx\r | |
131 | add ecx,16\r | |
132 | L$004enc3_loop:\r | |
133 | db 102,15,56,220,209\r | |
134 | db 102,15,56,220,217\r | |
135 | db 102,15,56,220,225\r | |
136 | movups xmm1,[ecx*1+edx]\r | |
137 | add ecx,32\r | |
138 | db 102,15,56,220,208\r | |
139 | db 102,15,56,220,216\r | |
140 | db 102,15,56,220,224\r | |
141 | movups xmm0,[ecx*1+edx-16]\r | |
142 | jnz NEAR L$004enc3_loop\r | |
143 | db 102,15,56,220,209\r | |
144 | db 102,15,56,220,217\r | |
145 | db 102,15,56,220,225\r | |
146 | db 102,15,56,221,208\r | |
147 | db 102,15,56,221,216\r | |
148 | db 102,15,56,221,224\r | |
149 | ret\r | |
150 | align 16\r | |
151 | __aesni_decrypt3:\r | |
152 | movups xmm0,[edx]\r | |
153 | shl ecx,4\r | |
154 | movups xmm1,[16+edx]\r | |
155 | xorps xmm2,xmm0\r | |
156 | pxor xmm3,xmm0\r | |
157 | pxor xmm4,xmm0\r | |
158 | movups xmm0,[32+edx]\r | |
159 | lea edx,[32+ecx*1+edx]\r | |
160 | neg ecx\r | |
161 | add ecx,16\r | |
162 | L$005dec3_loop:\r | |
163 | db 102,15,56,222,209\r | |
164 | db 102,15,56,222,217\r | |
165 | db 102,15,56,222,225\r | |
166 | movups xmm1,[ecx*1+edx]\r | |
167 | add ecx,32\r | |
168 | db 102,15,56,222,208\r | |
169 | db 102,15,56,222,216\r | |
170 | db 102,15,56,222,224\r | |
171 | movups xmm0,[ecx*1+edx-16]\r | |
172 | jnz NEAR L$005dec3_loop\r | |
173 | db 102,15,56,222,209\r | |
174 | db 102,15,56,222,217\r | |
175 | db 102,15,56,222,225\r | |
176 | db 102,15,56,223,208\r | |
177 | db 102,15,56,223,216\r | |
178 | db 102,15,56,223,224\r | |
179 | ret\r | |
180 | align 16\r | |
181 | __aesni_encrypt4:\r | |
182 | movups xmm0,[edx]\r | |
183 | movups xmm1,[16+edx]\r | |
184 | shl ecx,4\r | |
185 | xorps xmm2,xmm0\r | |
186 | pxor xmm3,xmm0\r | |
187 | pxor xmm4,xmm0\r | |
188 | pxor xmm5,xmm0\r | |
189 | movups xmm0,[32+edx]\r | |
190 | lea edx,[32+ecx*1+edx]\r | |
191 | neg ecx\r | |
192 | db 15,31,64,0\r | |
193 | add ecx,16\r | |
194 | L$006enc4_loop:\r | |
195 | db 102,15,56,220,209\r | |
196 | db 102,15,56,220,217\r | |
197 | db 102,15,56,220,225\r | |
198 | db 102,15,56,220,233\r | |
199 | movups xmm1,[ecx*1+edx]\r | |
200 | add ecx,32\r | |
201 | db 102,15,56,220,208\r | |
202 | db 102,15,56,220,216\r | |
203 | db 102,15,56,220,224\r | |
204 | db 102,15,56,220,232\r | |
205 | movups xmm0,[ecx*1+edx-16]\r | |
206 | jnz NEAR L$006enc4_loop\r | |
207 | db 102,15,56,220,209\r | |
208 | db 102,15,56,220,217\r | |
209 | db 102,15,56,220,225\r | |
210 | db 102,15,56,220,233\r | |
211 | db 102,15,56,221,208\r | |
212 | db 102,15,56,221,216\r | |
213 | db 102,15,56,221,224\r | |
214 | db 102,15,56,221,232\r | |
215 | ret\r | |
216 | align 16\r | |
217 | __aesni_decrypt4:\r | |
218 | movups xmm0,[edx]\r | |
219 | movups xmm1,[16+edx]\r | |
220 | shl ecx,4\r | |
221 | xorps xmm2,xmm0\r | |
222 | pxor xmm3,xmm0\r | |
223 | pxor xmm4,xmm0\r | |
224 | pxor xmm5,xmm0\r | |
225 | movups xmm0,[32+edx]\r | |
226 | lea edx,[32+ecx*1+edx]\r | |
227 | neg ecx\r | |
228 | db 15,31,64,0\r | |
229 | add ecx,16\r | |
230 | L$007dec4_loop:\r | |
231 | db 102,15,56,222,209\r | |
232 | db 102,15,56,222,217\r | |
233 | db 102,15,56,222,225\r | |
234 | db 102,15,56,222,233\r | |
235 | movups xmm1,[ecx*1+edx]\r | |
236 | add ecx,32\r | |
237 | db 102,15,56,222,208\r | |
238 | db 102,15,56,222,216\r | |
239 | db 102,15,56,222,224\r | |
240 | db 102,15,56,222,232\r | |
241 | movups xmm0,[ecx*1+edx-16]\r | |
242 | jnz NEAR L$007dec4_loop\r | |
243 | db 102,15,56,222,209\r | |
244 | db 102,15,56,222,217\r | |
245 | db 102,15,56,222,225\r | |
246 | db 102,15,56,222,233\r | |
247 | db 102,15,56,223,208\r | |
248 | db 102,15,56,223,216\r | |
249 | db 102,15,56,223,224\r | |
250 | db 102,15,56,223,232\r | |
251 | ret\r | |
252 | align 16\r | |
253 | __aesni_encrypt6:\r | |
254 | movups xmm0,[edx]\r | |
255 | shl ecx,4\r | |
256 | movups xmm1,[16+edx]\r | |
257 | xorps xmm2,xmm0\r | |
258 | pxor xmm3,xmm0\r | |
259 | pxor xmm4,xmm0\r | |
260 | db 102,15,56,220,209\r | |
261 | pxor xmm5,xmm0\r | |
262 | pxor xmm6,xmm0\r | |
263 | db 102,15,56,220,217\r | |
264 | lea edx,[32+ecx*1+edx]\r | |
265 | neg ecx\r | |
266 | db 102,15,56,220,225\r | |
267 | pxor xmm7,xmm0\r | |
268 | movups xmm0,[ecx*1+edx]\r | |
269 | add ecx,16\r | |
270 | jmp NEAR L$008_aesni_encrypt6_inner\r | |
271 | align 16\r | |
272 | L$009enc6_loop:\r | |
273 | db 102,15,56,220,209\r | |
274 | db 102,15,56,220,217\r | |
275 | db 102,15,56,220,225\r | |
276 | L$008_aesni_encrypt6_inner:\r | |
277 | db 102,15,56,220,233\r | |
278 | db 102,15,56,220,241\r | |
279 | db 102,15,56,220,249\r | |
280 | L$_aesni_encrypt6_enter:\r | |
281 | movups xmm1,[ecx*1+edx]\r | |
282 | add ecx,32\r | |
283 | db 102,15,56,220,208\r | |
284 | db 102,15,56,220,216\r | |
285 | db 102,15,56,220,224\r | |
286 | db 102,15,56,220,232\r | |
287 | db 102,15,56,220,240\r | |
288 | db 102,15,56,220,248\r | |
289 | movups xmm0,[ecx*1+edx-16]\r | |
290 | jnz NEAR L$009enc6_loop\r | |
291 | db 102,15,56,220,209\r | |
292 | db 102,15,56,220,217\r | |
293 | db 102,15,56,220,225\r | |
294 | db 102,15,56,220,233\r | |
295 | db 102,15,56,220,241\r | |
296 | db 102,15,56,220,249\r | |
297 | db 102,15,56,221,208\r | |
298 | db 102,15,56,221,216\r | |
299 | db 102,15,56,221,224\r | |
300 | db 102,15,56,221,232\r | |
301 | db 102,15,56,221,240\r | |
302 | db 102,15,56,221,248\r | |
303 | ret\r | |
304 | align 16\r | |
305 | __aesni_decrypt6:\r | |
306 | movups xmm0,[edx]\r | |
307 | shl ecx,4\r | |
308 | movups xmm1,[16+edx]\r | |
309 | xorps xmm2,xmm0\r | |
310 | pxor xmm3,xmm0\r | |
311 | pxor xmm4,xmm0\r | |
312 | db 102,15,56,222,209\r | |
313 | pxor xmm5,xmm0\r | |
314 | pxor xmm6,xmm0\r | |
315 | db 102,15,56,222,217\r | |
316 | lea edx,[32+ecx*1+edx]\r | |
317 | neg ecx\r | |
318 | db 102,15,56,222,225\r | |
319 | pxor xmm7,xmm0\r | |
320 | movups xmm0,[ecx*1+edx]\r | |
321 | add ecx,16\r | |
322 | jmp NEAR L$010_aesni_decrypt6_inner\r | |
323 | align 16\r | |
324 | L$011dec6_loop:\r | |
325 | db 102,15,56,222,209\r | |
326 | db 102,15,56,222,217\r | |
327 | db 102,15,56,222,225\r | |
328 | L$010_aesni_decrypt6_inner:\r | |
329 | db 102,15,56,222,233\r | |
330 | db 102,15,56,222,241\r | |
331 | db 102,15,56,222,249\r | |
332 | L$_aesni_decrypt6_enter:\r | |
333 | movups xmm1,[ecx*1+edx]\r | |
334 | add ecx,32\r | |
335 | db 102,15,56,222,208\r | |
336 | db 102,15,56,222,216\r | |
337 | db 102,15,56,222,224\r | |
338 | db 102,15,56,222,232\r | |
339 | db 102,15,56,222,240\r | |
340 | db 102,15,56,222,248\r | |
341 | movups xmm0,[ecx*1+edx-16]\r | |
342 | jnz NEAR L$011dec6_loop\r | |
343 | db 102,15,56,222,209\r | |
344 | db 102,15,56,222,217\r | |
345 | db 102,15,56,222,225\r | |
346 | db 102,15,56,222,233\r | |
347 | db 102,15,56,222,241\r | |
348 | db 102,15,56,222,249\r | |
349 | db 102,15,56,223,208\r | |
350 | db 102,15,56,223,216\r | |
351 | db 102,15,56,223,224\r | |
352 | db 102,15,56,223,232\r | |
353 | db 102,15,56,223,240\r | |
354 | db 102,15,56,223,248\r | |
355 | ret\r | |
356 | global _aesni_ecb_encrypt\r | |
357 | align 16\r | |
358 | _aesni_ecb_encrypt:\r | |
359 | L$_aesni_ecb_encrypt_begin:\r | |
360 | push ebp\r | |
361 | push ebx\r | |
362 | push esi\r | |
363 | push edi\r | |
364 | mov esi,DWORD [20+esp]\r | |
365 | mov edi,DWORD [24+esp]\r | |
366 | mov eax,DWORD [28+esp]\r | |
367 | mov edx,DWORD [32+esp]\r | |
368 | mov ebx,DWORD [36+esp]\r | |
369 | and eax,-16\r | |
370 | jz NEAR L$012ecb_ret\r | |
371 | mov ecx,DWORD [240+edx]\r | |
372 | test ebx,ebx\r | |
373 | jz NEAR L$013ecb_decrypt\r | |
374 | mov ebp,edx\r | |
375 | mov ebx,ecx\r | |
376 | cmp eax,96\r | |
377 | jb NEAR L$014ecb_enc_tail\r | |
378 | movdqu xmm2,[esi]\r | |
379 | movdqu xmm3,[16+esi]\r | |
380 | movdqu xmm4,[32+esi]\r | |
381 | movdqu xmm5,[48+esi]\r | |
382 | movdqu xmm6,[64+esi]\r | |
383 | movdqu xmm7,[80+esi]\r | |
384 | lea esi,[96+esi]\r | |
385 | sub eax,96\r | |
386 | jmp NEAR L$015ecb_enc_loop6_enter\r | |
387 | align 16\r | |
388 | L$016ecb_enc_loop6:\r | |
389 | movups [edi],xmm2\r | |
390 | movdqu xmm2,[esi]\r | |
391 | movups [16+edi],xmm3\r | |
392 | movdqu xmm3,[16+esi]\r | |
393 | movups [32+edi],xmm4\r | |
394 | movdqu xmm4,[32+esi]\r | |
395 | movups [48+edi],xmm5\r | |
396 | movdqu xmm5,[48+esi]\r | |
397 | movups [64+edi],xmm6\r | |
398 | movdqu xmm6,[64+esi]\r | |
399 | movups [80+edi],xmm7\r | |
400 | lea edi,[96+edi]\r | |
401 | movdqu xmm7,[80+esi]\r | |
402 | lea esi,[96+esi]\r | |
403 | L$015ecb_enc_loop6_enter:\r | |
404 | call __aesni_encrypt6\r | |
405 | mov edx,ebp\r | |
406 | mov ecx,ebx\r | |
407 | sub eax,96\r | |
408 | jnc NEAR L$016ecb_enc_loop6\r | |
409 | movups [edi],xmm2\r | |
410 | movups [16+edi],xmm3\r | |
411 | movups [32+edi],xmm4\r | |
412 | movups [48+edi],xmm5\r | |
413 | movups [64+edi],xmm6\r | |
414 | movups [80+edi],xmm7\r | |
415 | lea edi,[96+edi]\r | |
416 | add eax,96\r | |
417 | jz NEAR L$012ecb_ret\r | |
418 | L$014ecb_enc_tail:\r | |
419 | movups xmm2,[esi]\r | |
420 | cmp eax,32\r | |
421 | jb NEAR L$017ecb_enc_one\r | |
422 | movups xmm3,[16+esi]\r | |
423 | je NEAR L$018ecb_enc_two\r | |
424 | movups xmm4,[32+esi]\r | |
425 | cmp eax,64\r | |
426 | jb NEAR L$019ecb_enc_three\r | |
427 | movups xmm5,[48+esi]\r | |
428 | je NEAR L$020ecb_enc_four\r | |
429 | movups xmm6,[64+esi]\r | |
430 | xorps xmm7,xmm7\r | |
431 | call __aesni_encrypt6\r | |
432 | movups [edi],xmm2\r | |
433 | movups [16+edi],xmm3\r | |
434 | movups [32+edi],xmm4\r | |
435 | movups [48+edi],xmm5\r | |
436 | movups [64+edi],xmm6\r | |
437 | jmp NEAR L$012ecb_ret\r | |
438 | align 16\r | |
439 | L$017ecb_enc_one:\r | |
440 | movups xmm0,[edx]\r | |
441 | movups xmm1,[16+edx]\r | |
442 | lea edx,[32+edx]\r | |
443 | xorps xmm2,xmm0\r | |
444 | L$021enc1_loop_3:\r | |
445 | db 102,15,56,220,209\r | |
446 | dec ecx\r | |
447 | movups xmm1,[edx]\r | |
448 | lea edx,[16+edx]\r | |
449 | jnz NEAR L$021enc1_loop_3\r | |
450 | db 102,15,56,221,209\r | |
451 | movups [edi],xmm2\r | |
452 | jmp NEAR L$012ecb_ret\r | |
453 | align 16\r | |
454 | L$018ecb_enc_two:\r | |
455 | call __aesni_encrypt2\r | |
456 | movups [edi],xmm2\r | |
457 | movups [16+edi],xmm3\r | |
458 | jmp NEAR L$012ecb_ret\r | |
459 | align 16\r | |
460 | L$019ecb_enc_three:\r | |
461 | call __aesni_encrypt3\r | |
462 | movups [edi],xmm2\r | |
463 | movups [16+edi],xmm3\r | |
464 | movups [32+edi],xmm4\r | |
465 | jmp NEAR L$012ecb_ret\r | |
466 | align 16\r | |
467 | L$020ecb_enc_four:\r | |
468 | call __aesni_encrypt4\r | |
469 | movups [edi],xmm2\r | |
470 | movups [16+edi],xmm3\r | |
471 | movups [32+edi],xmm4\r | |
472 | movups [48+edi],xmm5\r | |
473 | jmp NEAR L$012ecb_ret\r | |
474 | align 16\r | |
475 | L$013ecb_decrypt:\r | |
476 | mov ebp,edx\r | |
477 | mov ebx,ecx\r | |
478 | cmp eax,96\r | |
479 | jb NEAR L$022ecb_dec_tail\r | |
480 | movdqu xmm2,[esi]\r | |
481 | movdqu xmm3,[16+esi]\r | |
482 | movdqu xmm4,[32+esi]\r | |
483 | movdqu xmm5,[48+esi]\r | |
484 | movdqu xmm6,[64+esi]\r | |
485 | movdqu xmm7,[80+esi]\r | |
486 | lea esi,[96+esi]\r | |
487 | sub eax,96\r | |
488 | jmp NEAR L$023ecb_dec_loop6_enter\r | |
489 | align 16\r | |
490 | L$024ecb_dec_loop6:\r | |
491 | movups [edi],xmm2\r | |
492 | movdqu xmm2,[esi]\r | |
493 | movups [16+edi],xmm3\r | |
494 | movdqu xmm3,[16+esi]\r | |
495 | movups [32+edi],xmm4\r | |
496 | movdqu xmm4,[32+esi]\r | |
497 | movups [48+edi],xmm5\r | |
498 | movdqu xmm5,[48+esi]\r | |
499 | movups [64+edi],xmm6\r | |
500 | movdqu xmm6,[64+esi]\r | |
501 | movups [80+edi],xmm7\r | |
502 | lea edi,[96+edi]\r | |
503 | movdqu xmm7,[80+esi]\r | |
504 | lea esi,[96+esi]\r | |
505 | L$023ecb_dec_loop6_enter:\r | |
506 | call __aesni_decrypt6\r | |
507 | mov edx,ebp\r | |
508 | mov ecx,ebx\r | |
509 | sub eax,96\r | |
510 | jnc NEAR L$024ecb_dec_loop6\r | |
511 | movups [edi],xmm2\r | |
512 | movups [16+edi],xmm3\r | |
513 | movups [32+edi],xmm4\r | |
514 | movups [48+edi],xmm5\r | |
515 | movups [64+edi],xmm6\r | |
516 | movups [80+edi],xmm7\r | |
517 | lea edi,[96+edi]\r | |
518 | add eax,96\r | |
519 | jz NEAR L$012ecb_ret\r | |
520 | L$022ecb_dec_tail:\r | |
521 | movups xmm2,[esi]\r | |
522 | cmp eax,32\r | |
523 | jb NEAR L$025ecb_dec_one\r | |
524 | movups xmm3,[16+esi]\r | |
525 | je NEAR L$026ecb_dec_two\r | |
526 | movups xmm4,[32+esi]\r | |
527 | cmp eax,64\r | |
528 | jb NEAR L$027ecb_dec_three\r | |
529 | movups xmm5,[48+esi]\r | |
530 | je NEAR L$028ecb_dec_four\r | |
531 | movups xmm6,[64+esi]\r | |
532 | xorps xmm7,xmm7\r | |
533 | call __aesni_decrypt6\r | |
534 | movups [edi],xmm2\r | |
535 | movups [16+edi],xmm3\r | |
536 | movups [32+edi],xmm4\r | |
537 | movups [48+edi],xmm5\r | |
538 | movups [64+edi],xmm6\r | |
539 | jmp NEAR L$012ecb_ret\r | |
540 | align 16\r | |
541 | L$025ecb_dec_one:\r | |
542 | movups xmm0,[edx]\r | |
543 | movups xmm1,[16+edx]\r | |
544 | lea edx,[32+edx]\r | |
545 | xorps xmm2,xmm0\r | |
546 | L$029dec1_loop_4:\r | |
547 | db 102,15,56,222,209\r | |
548 | dec ecx\r | |
549 | movups xmm1,[edx]\r | |
550 | lea edx,[16+edx]\r | |
551 | jnz NEAR L$029dec1_loop_4\r | |
552 | db 102,15,56,223,209\r | |
553 | movups [edi],xmm2\r | |
554 | jmp NEAR L$012ecb_ret\r | |
555 | align 16\r | |
556 | L$026ecb_dec_two:\r | |
557 | call __aesni_decrypt2\r | |
558 | movups [edi],xmm2\r | |
559 | movups [16+edi],xmm3\r | |
560 | jmp NEAR L$012ecb_ret\r | |
561 | align 16\r | |
562 | L$027ecb_dec_three:\r | |
563 | call __aesni_decrypt3\r | |
564 | movups [edi],xmm2\r | |
565 | movups [16+edi],xmm3\r | |
566 | movups [32+edi],xmm4\r | |
567 | jmp NEAR L$012ecb_ret\r | |
568 | align 16\r | |
569 | L$028ecb_dec_four:\r | |
570 | call __aesni_decrypt4\r | |
571 | movups [edi],xmm2\r | |
572 | movups [16+edi],xmm3\r | |
573 | movups [32+edi],xmm4\r | |
574 | movups [48+edi],xmm5\r | |
575 | L$012ecb_ret:\r | |
576 | pxor xmm0,xmm0\r | |
577 | pxor xmm1,xmm1\r | |
578 | pxor xmm2,xmm2\r | |
579 | pxor xmm3,xmm3\r | |
580 | pxor xmm4,xmm4\r | |
581 | pxor xmm5,xmm5\r | |
582 | pxor xmm6,xmm6\r | |
583 | pxor xmm7,xmm7\r | |
584 | pop edi\r | |
585 | pop esi\r | |
586 | pop ebx\r | |
587 | pop ebp\r | |
588 | ret\r | |
589 | global _aesni_ccm64_encrypt_blocks\r | |
590 | align 16\r | |
591 | _aesni_ccm64_encrypt_blocks:\r | |
592 | L$_aesni_ccm64_encrypt_blocks_begin:\r | |
593 | push ebp\r | |
594 | push ebx\r | |
595 | push esi\r | |
596 | push edi\r | |
597 | mov esi,DWORD [20+esp]\r | |
598 | mov edi,DWORD [24+esp]\r | |
599 | mov eax,DWORD [28+esp]\r | |
600 | mov edx,DWORD [32+esp]\r | |
601 | mov ebx,DWORD [36+esp]\r | |
602 | mov ecx,DWORD [40+esp]\r | |
603 | mov ebp,esp\r | |
604 | sub esp,60\r | |
605 | and esp,-16\r | |
606 | mov DWORD [48+esp],ebp\r | |
607 | movdqu xmm7,[ebx]\r | |
608 | movdqu xmm3,[ecx]\r | |
609 | mov ecx,DWORD [240+edx]\r | |
610 | mov DWORD [esp],202182159\r | |
611 | mov DWORD [4+esp],134810123\r | |
612 | mov DWORD [8+esp],67438087\r | |
613 | mov DWORD [12+esp],66051\r | |
614 | mov ebx,1\r | |
615 | xor ebp,ebp\r | |
616 | mov DWORD [16+esp],ebx\r | |
617 | mov DWORD [20+esp],ebp\r | |
618 | mov DWORD [24+esp],ebp\r | |
619 | mov DWORD [28+esp],ebp\r | |
620 | shl ecx,4\r | |
621 | mov ebx,16\r | |
622 | lea ebp,[edx]\r | |
623 | movdqa xmm5,[esp]\r | |
624 | movdqa xmm2,xmm7\r | |
625 | lea edx,[32+ecx*1+edx]\r | |
626 | sub ebx,ecx\r | |
627 | db 102,15,56,0,253\r | |
628 | L$030ccm64_enc_outer:\r | |
629 | movups xmm0,[ebp]\r | |
630 | mov ecx,ebx\r | |
631 | movups xmm6,[esi]\r | |
632 | xorps xmm2,xmm0\r | |
633 | movups xmm1,[16+ebp]\r | |
634 | xorps xmm0,xmm6\r | |
635 | xorps xmm3,xmm0\r | |
636 | movups xmm0,[32+ebp]\r | |
637 | L$031ccm64_enc2_loop:\r | |
638 | db 102,15,56,220,209\r | |
639 | db 102,15,56,220,217\r | |
640 | movups xmm1,[ecx*1+edx]\r | |
641 | add ecx,32\r | |
642 | db 102,15,56,220,208\r | |
643 | db 102,15,56,220,216\r | |
644 | movups xmm0,[ecx*1+edx-16]\r | |
645 | jnz NEAR L$031ccm64_enc2_loop\r | |
646 | db 102,15,56,220,209\r | |
647 | db 102,15,56,220,217\r | |
648 | paddq xmm7,[16+esp]\r | |
649 | dec eax\r | |
650 | db 102,15,56,221,208\r | |
651 | db 102,15,56,221,216\r | |
652 | lea esi,[16+esi]\r | |
653 | xorps xmm6,xmm2\r | |
654 | movdqa xmm2,xmm7\r | |
655 | movups [edi],xmm6\r | |
656 | db 102,15,56,0,213\r | |
657 | lea edi,[16+edi]\r | |
658 | jnz NEAR L$030ccm64_enc_outer\r | |
659 | mov esp,DWORD [48+esp]\r | |
660 | mov edi,DWORD [40+esp]\r | |
661 | movups [edi],xmm3\r | |
662 | pxor xmm0,xmm0\r | |
663 | pxor xmm1,xmm1\r | |
664 | pxor xmm2,xmm2\r | |
665 | pxor xmm3,xmm3\r | |
666 | pxor xmm4,xmm4\r | |
667 | pxor xmm5,xmm5\r | |
668 | pxor xmm6,xmm6\r | |
669 | pxor xmm7,xmm7\r | |
670 | pop edi\r | |
671 | pop esi\r | |
672 | pop ebx\r | |
673 | pop ebp\r | |
674 | ret\r | |
675 | global _aesni_ccm64_decrypt_blocks\r | |
676 | align 16\r | |
677 | _aesni_ccm64_decrypt_blocks:\r | |
678 | L$_aesni_ccm64_decrypt_blocks_begin:\r | |
679 | push ebp\r | |
680 | push ebx\r | |
681 | push esi\r | |
682 | push edi\r | |
683 | mov esi,DWORD [20+esp]\r | |
684 | mov edi,DWORD [24+esp]\r | |
685 | mov eax,DWORD [28+esp]\r | |
686 | mov edx,DWORD [32+esp]\r | |
687 | mov ebx,DWORD [36+esp]\r | |
688 | mov ecx,DWORD [40+esp]\r | |
689 | mov ebp,esp\r | |
690 | sub esp,60\r | |
691 | and esp,-16\r | |
692 | mov DWORD [48+esp],ebp\r | |
693 | movdqu xmm7,[ebx]\r | |
694 | movdqu xmm3,[ecx]\r | |
695 | mov ecx,DWORD [240+edx]\r | |
696 | mov DWORD [esp],202182159\r | |
697 | mov DWORD [4+esp],134810123\r | |
698 | mov DWORD [8+esp],67438087\r | |
699 | mov DWORD [12+esp],66051\r | |
700 | mov ebx,1\r | |
701 | xor ebp,ebp\r | |
702 | mov DWORD [16+esp],ebx\r | |
703 | mov DWORD [20+esp],ebp\r | |
704 | mov DWORD [24+esp],ebp\r | |
705 | mov DWORD [28+esp],ebp\r | |
706 | movdqa xmm5,[esp]\r | |
707 | movdqa xmm2,xmm7\r | |
708 | mov ebp,edx\r | |
709 | mov ebx,ecx\r | |
710 | db 102,15,56,0,253\r | |
711 | movups xmm0,[edx]\r | |
712 | movups xmm1,[16+edx]\r | |
713 | lea edx,[32+edx]\r | |
714 | xorps xmm2,xmm0\r | |
715 | L$032enc1_loop_5:\r | |
716 | db 102,15,56,220,209\r | |
717 | dec ecx\r | |
718 | movups xmm1,[edx]\r | |
719 | lea edx,[16+edx]\r | |
720 | jnz NEAR L$032enc1_loop_5\r | |
721 | db 102,15,56,221,209\r | |
722 | shl ebx,4\r | |
723 | mov ecx,16\r | |
724 | movups xmm6,[esi]\r | |
725 | paddq xmm7,[16+esp]\r | |
726 | lea esi,[16+esi]\r | |
727 | sub ecx,ebx\r | |
728 | lea edx,[32+ebx*1+ebp]\r | |
729 | mov ebx,ecx\r | |
730 | jmp NEAR L$033ccm64_dec_outer\r | |
731 | align 16\r | |
732 | L$033ccm64_dec_outer:\r | |
733 | xorps xmm6,xmm2\r | |
734 | movdqa xmm2,xmm7\r | |
735 | movups [edi],xmm6\r | |
736 | lea edi,[16+edi]\r | |
737 | db 102,15,56,0,213\r | |
738 | sub eax,1\r | |
739 | jz NEAR L$034ccm64_dec_break\r | |
740 | movups xmm0,[ebp]\r | |
741 | mov ecx,ebx\r | |
742 | movups xmm1,[16+ebp]\r | |
743 | xorps xmm6,xmm0\r | |
744 | xorps xmm2,xmm0\r | |
745 | xorps xmm3,xmm6\r | |
746 | movups xmm0,[32+ebp]\r | |
747 | L$035ccm64_dec2_loop:\r | |
748 | db 102,15,56,220,209\r | |
749 | db 102,15,56,220,217\r | |
750 | movups xmm1,[ecx*1+edx]\r | |
751 | add ecx,32\r | |
752 | db 102,15,56,220,208\r | |
753 | db 102,15,56,220,216\r | |
754 | movups xmm0,[ecx*1+edx-16]\r | |
755 | jnz NEAR L$035ccm64_dec2_loop\r | |
756 | movups xmm6,[esi]\r | |
757 | paddq xmm7,[16+esp]\r | |
758 | db 102,15,56,220,209\r | |
759 | db 102,15,56,220,217\r | |
760 | db 102,15,56,221,208\r | |
761 | db 102,15,56,221,216\r | |
762 | lea esi,[16+esi]\r | |
763 | jmp NEAR L$033ccm64_dec_outer\r | |
764 | align 16\r | |
765 | L$034ccm64_dec_break:\r | |
766 | mov ecx,DWORD [240+ebp]\r | |
767 | mov edx,ebp\r | |
768 | movups xmm0,[edx]\r | |
769 | movups xmm1,[16+edx]\r | |
770 | xorps xmm6,xmm0\r | |
771 | lea edx,[32+edx]\r | |
772 | xorps xmm3,xmm6\r | |
773 | L$036enc1_loop_6:\r | |
774 | db 102,15,56,220,217\r | |
775 | dec ecx\r | |
776 | movups xmm1,[edx]\r | |
777 | lea edx,[16+edx]\r | |
778 | jnz NEAR L$036enc1_loop_6\r | |
779 | db 102,15,56,221,217\r | |
780 | mov esp,DWORD [48+esp]\r | |
781 | mov edi,DWORD [40+esp]\r | |
782 | movups [edi],xmm3\r | |
783 | pxor xmm0,xmm0\r | |
784 | pxor xmm1,xmm1\r | |
785 | pxor xmm2,xmm2\r | |
786 | pxor xmm3,xmm3\r | |
787 | pxor xmm4,xmm4\r | |
788 | pxor xmm5,xmm5\r | |
789 | pxor xmm6,xmm6\r | |
790 | pxor xmm7,xmm7\r | |
791 | pop edi\r | |
792 | pop esi\r | |
793 | pop ebx\r | |
794 | pop ebp\r | |
795 | ret\r | |
796 | global _aesni_ctr32_encrypt_blocks\r | |
797 | align 16\r | |
798 | _aesni_ctr32_encrypt_blocks:\r | |
799 | L$_aesni_ctr32_encrypt_blocks_begin:\r | |
800 | push ebp\r | |
801 | push ebx\r | |
802 | push esi\r | |
803 | push edi\r | |
804 | mov esi,DWORD [20+esp]\r | |
805 | mov edi,DWORD [24+esp]\r | |
806 | mov eax,DWORD [28+esp]\r | |
807 | mov edx,DWORD [32+esp]\r | |
808 | mov ebx,DWORD [36+esp]\r | |
809 | mov ebp,esp\r | |
810 | sub esp,88\r | |
811 | and esp,-16\r | |
812 | mov DWORD [80+esp],ebp\r | |
813 | cmp eax,1\r | |
814 | je NEAR L$037ctr32_one_shortcut\r | |
815 | movdqu xmm7,[ebx]\r | |
816 | mov DWORD [esp],202182159\r | |
817 | mov DWORD [4+esp],134810123\r | |
818 | mov DWORD [8+esp],67438087\r | |
819 | mov DWORD [12+esp],66051\r | |
820 | mov ecx,6\r | |
821 | xor ebp,ebp\r | |
822 | mov DWORD [16+esp],ecx\r | |
823 | mov DWORD [20+esp],ecx\r | |
824 | mov DWORD [24+esp],ecx\r | |
825 | mov DWORD [28+esp],ebp\r | |
826 | db 102,15,58,22,251,3\r | |
827 | db 102,15,58,34,253,3\r | |
828 | mov ecx,DWORD [240+edx]\r | |
829 | bswap ebx\r | |
830 | pxor xmm0,xmm0\r | |
831 | pxor xmm1,xmm1\r | |
832 | movdqa xmm2,[esp]\r | |
833 | db 102,15,58,34,195,0\r | |
834 | lea ebp,[3+ebx]\r | |
835 | db 102,15,58,34,205,0\r | |
836 | inc ebx\r | |
837 | db 102,15,58,34,195,1\r | |
838 | inc ebp\r | |
839 | db 102,15,58,34,205,1\r | |
840 | inc ebx\r | |
841 | db 102,15,58,34,195,2\r | |
842 | inc ebp\r | |
843 | db 102,15,58,34,205,2\r | |
844 | movdqa [48+esp],xmm0\r | |
845 | db 102,15,56,0,194\r | |
846 | movdqu xmm6,[edx]\r | |
847 | movdqa [64+esp],xmm1\r | |
848 | db 102,15,56,0,202\r | |
849 | pshufd xmm2,xmm0,192\r | |
850 | pshufd xmm3,xmm0,128\r | |
851 | cmp eax,6\r | |
852 | jb NEAR L$038ctr32_tail\r | |
853 | pxor xmm7,xmm6\r | |
854 | shl ecx,4\r | |
855 | mov ebx,16\r | |
856 | movdqa [32+esp],xmm7\r | |
857 | mov ebp,edx\r | |
858 | sub ebx,ecx\r | |
859 | lea edx,[32+ecx*1+edx]\r | |
860 | sub eax,6\r | |
861 | jmp NEAR L$039ctr32_loop6\r | |
862 | align 16\r | |
863 | L$039ctr32_loop6:\r | |
864 | pshufd xmm4,xmm0,64\r | |
865 | movdqa xmm0,[32+esp]\r | |
866 | pshufd xmm5,xmm1,192\r | |
867 | pxor xmm2,xmm0\r | |
868 | pshufd xmm6,xmm1,128\r | |
869 | pxor xmm3,xmm0\r | |
870 | pshufd xmm7,xmm1,64\r | |
871 | movups xmm1,[16+ebp]\r | |
872 | pxor xmm4,xmm0\r | |
873 | pxor xmm5,xmm0\r | |
874 | db 102,15,56,220,209\r | |
875 | pxor xmm6,xmm0\r | |
876 | pxor xmm7,xmm0\r | |
877 | db 102,15,56,220,217\r | |
878 | movups xmm0,[32+ebp]\r | |
879 | mov ecx,ebx\r | |
880 | db 102,15,56,220,225\r | |
881 | db 102,15,56,220,233\r | |
882 | db 102,15,56,220,241\r | |
883 | db 102,15,56,220,249\r | |
884 | call L$_aesni_encrypt6_enter\r | |
885 | movups xmm1,[esi]\r | |
886 | movups xmm0,[16+esi]\r | |
887 | xorps xmm2,xmm1\r | |
888 | movups xmm1,[32+esi]\r | |
889 | xorps xmm3,xmm0\r | |
890 | movups [edi],xmm2\r | |
891 | movdqa xmm0,[16+esp]\r | |
892 | xorps xmm4,xmm1\r | |
893 | movdqa xmm1,[64+esp]\r | |
894 | movups [16+edi],xmm3\r | |
895 | movups [32+edi],xmm4\r | |
896 | paddd xmm1,xmm0\r | |
897 | paddd xmm0,[48+esp]\r | |
898 | movdqa xmm2,[esp]\r | |
899 | movups xmm3,[48+esi]\r | |
900 | movups xmm4,[64+esi]\r | |
901 | xorps xmm5,xmm3\r | |
902 | movups xmm3,[80+esi]\r | |
903 | lea esi,[96+esi]\r | |
904 | movdqa [48+esp],xmm0\r | |
905 | db 102,15,56,0,194\r | |
906 | xorps xmm6,xmm4\r | |
907 | movups [48+edi],xmm5\r | |
908 | xorps xmm7,xmm3\r | |
909 | movdqa [64+esp],xmm1\r | |
910 | db 102,15,56,0,202\r | |
911 | movups [64+edi],xmm6\r | |
912 | pshufd xmm2,xmm0,192\r | |
913 | movups [80+edi],xmm7\r | |
914 | lea edi,[96+edi]\r | |
915 | pshufd xmm3,xmm0,128\r | |
916 | sub eax,6\r | |
917 | jnc NEAR L$039ctr32_loop6\r | |
918 | add eax,6\r | |
919 | jz NEAR L$040ctr32_ret\r | |
920 | movdqu xmm7,[ebp]\r | |
921 | mov edx,ebp\r | |
922 | pxor xmm7,[32+esp]\r | |
923 | mov ecx,DWORD [240+ebp]\r | |
924 | L$038ctr32_tail:\r | |
925 | por xmm2,xmm7\r | |
926 | cmp eax,2\r | |
927 | jb NEAR L$041ctr32_one\r | |
928 | pshufd xmm4,xmm0,64\r | |
929 | por xmm3,xmm7\r | |
930 | je NEAR L$042ctr32_two\r | |
931 | pshufd xmm5,xmm1,192\r | |
932 | por xmm4,xmm7\r | |
933 | cmp eax,4\r | |
934 | jb NEAR L$043ctr32_three\r | |
935 | pshufd xmm6,xmm1,128\r | |
936 | por xmm5,xmm7\r | |
937 | je NEAR L$044ctr32_four\r | |
938 | por xmm6,xmm7\r | |
939 | call __aesni_encrypt6\r | |
940 | movups xmm1,[esi]\r | |
941 | movups xmm0,[16+esi]\r | |
942 | xorps xmm2,xmm1\r | |
943 | movups xmm1,[32+esi]\r | |
944 | xorps xmm3,xmm0\r | |
945 | movups xmm0,[48+esi]\r | |
946 | xorps xmm4,xmm1\r | |
947 | movups xmm1,[64+esi]\r | |
948 | xorps xmm5,xmm0\r | |
949 | movups [edi],xmm2\r | |
950 | xorps xmm6,xmm1\r | |
951 | movups [16+edi],xmm3\r | |
952 | movups [32+edi],xmm4\r | |
953 | movups [48+edi],xmm5\r | |
954 | movups [64+edi],xmm6\r | |
955 | jmp NEAR L$040ctr32_ret\r | |
956 | align 16\r | |
957 | L$037ctr32_one_shortcut:\r | |
958 | movups xmm2,[ebx]\r | |
959 | mov ecx,DWORD [240+edx]\r | |
960 | L$041ctr32_one:\r | |
961 | movups xmm0,[edx]\r | |
962 | movups xmm1,[16+edx]\r | |
963 | lea edx,[32+edx]\r | |
964 | xorps xmm2,xmm0\r | |
965 | L$045enc1_loop_7:\r | |
966 | db 102,15,56,220,209\r | |
967 | dec ecx\r | |
968 | movups xmm1,[edx]\r | |
969 | lea edx,[16+edx]\r | |
970 | jnz NEAR L$045enc1_loop_7\r | |
971 | db 102,15,56,221,209\r | |
972 | movups xmm6,[esi]\r | |
973 | xorps xmm6,xmm2\r | |
974 | movups [edi],xmm6\r | |
975 | jmp NEAR L$040ctr32_ret\r | |
976 | align 16\r | |
977 | L$042ctr32_two:\r | |
978 | call __aesni_encrypt2\r | |
979 | movups xmm5,[esi]\r | |
980 | movups xmm6,[16+esi]\r | |
981 | xorps xmm2,xmm5\r | |
982 | xorps xmm3,xmm6\r | |
983 | movups [edi],xmm2\r | |
984 | movups [16+edi],xmm3\r | |
985 | jmp NEAR L$040ctr32_ret\r | |
986 | align 16\r | |
987 | L$043ctr32_three:\r | |
988 | call __aesni_encrypt3\r | |
989 | movups xmm5,[esi]\r | |
990 | movups xmm6,[16+esi]\r | |
991 | xorps xmm2,xmm5\r | |
992 | movups xmm7,[32+esi]\r | |
993 | xorps xmm3,xmm6\r | |
994 | movups [edi],xmm2\r | |
995 | xorps xmm4,xmm7\r | |
996 | movups [16+edi],xmm3\r | |
997 | movups [32+edi],xmm4\r | |
998 | jmp NEAR L$040ctr32_ret\r | |
999 | align 16\r | |
1000 | L$044ctr32_four:\r | |
1001 | call __aesni_encrypt4\r | |
1002 | movups xmm6,[esi]\r | |
1003 | movups xmm7,[16+esi]\r | |
1004 | movups xmm1,[32+esi]\r | |
1005 | xorps xmm2,xmm6\r | |
1006 | movups xmm0,[48+esi]\r | |
1007 | xorps xmm3,xmm7\r | |
1008 | movups [edi],xmm2\r | |
1009 | xorps xmm4,xmm1\r | |
1010 | movups [16+edi],xmm3\r | |
1011 | xorps xmm5,xmm0\r | |
1012 | movups [32+edi],xmm4\r | |
1013 | movups [48+edi],xmm5\r | |
1014 | L$040ctr32_ret:\r | |
1015 | pxor xmm0,xmm0\r | |
1016 | pxor xmm1,xmm1\r | |
1017 | pxor xmm2,xmm2\r | |
1018 | pxor xmm3,xmm3\r | |
1019 | pxor xmm4,xmm4\r | |
1020 | movdqa [32+esp],xmm0\r | |
1021 | pxor xmm5,xmm5\r | |
1022 | movdqa [48+esp],xmm0\r | |
1023 | pxor xmm6,xmm6\r | |
1024 | movdqa [64+esp],xmm0\r | |
1025 | pxor xmm7,xmm7\r | |
1026 | mov esp,DWORD [80+esp]\r | |
1027 | pop edi\r | |
1028 | pop esi\r | |
1029 | pop ebx\r | |
1030 | pop ebp\r | |
1031 | ret\r | |
1032 | global _aesni_xts_encrypt\r | |
1033 | align 16\r | |
1034 | _aesni_xts_encrypt:\r | |
1035 | L$_aesni_xts_encrypt_begin:\r | |
1036 | push ebp\r | |
1037 | push ebx\r | |
1038 | push esi\r | |
1039 | push edi\r | |
1040 | mov edx,DWORD [36+esp]\r | |
1041 | mov esi,DWORD [40+esp]\r | |
1042 | mov ecx,DWORD [240+edx]\r | |
1043 | movups xmm2,[esi]\r | |
1044 | movups xmm0,[edx]\r | |
1045 | movups xmm1,[16+edx]\r | |
1046 | lea edx,[32+edx]\r | |
1047 | xorps xmm2,xmm0\r | |
1048 | L$046enc1_loop_8:\r | |
1049 | db 102,15,56,220,209\r | |
1050 | dec ecx\r | |
1051 | movups xmm1,[edx]\r | |
1052 | lea edx,[16+edx]\r | |
1053 | jnz NEAR L$046enc1_loop_8\r | |
1054 | db 102,15,56,221,209\r | |
1055 | mov esi,DWORD [20+esp]\r | |
1056 | mov edi,DWORD [24+esp]\r | |
1057 | mov eax,DWORD [28+esp]\r | |
1058 | mov edx,DWORD [32+esp]\r | |
1059 | mov ebp,esp\r | |
1060 | sub esp,120\r | |
1061 | mov ecx,DWORD [240+edx]\r | |
1062 | and esp,-16\r | |
1063 | mov DWORD [96+esp],135\r | |
1064 | mov DWORD [100+esp],0\r | |
1065 | mov DWORD [104+esp],1\r | |
1066 | mov DWORD [108+esp],0\r | |
1067 | mov DWORD [112+esp],eax\r | |
1068 | mov DWORD [116+esp],ebp\r | |
1069 | movdqa xmm1,xmm2\r | |
1070 | pxor xmm0,xmm0\r | |
1071 | movdqa xmm3,[96+esp]\r | |
1072 | pcmpgtd xmm0,xmm1\r | |
1073 | and eax,-16\r | |
1074 | mov ebp,edx\r | |
1075 | mov ebx,ecx\r | |
1076 | sub eax,96\r | |
1077 | jc NEAR L$047xts_enc_short\r | |
1078 | shl ecx,4\r | |
1079 | mov ebx,16\r | |
1080 | sub ebx,ecx\r | |
1081 | lea edx,[32+ecx*1+edx]\r | |
1082 | jmp NEAR L$048xts_enc_loop6\r | |
1083 | align 16\r | |
1084 | L$048xts_enc_loop6:\r | |
1085 | pshufd xmm2,xmm0,19\r | |
1086 | pxor xmm0,xmm0\r | |
1087 | movdqa [esp],xmm1\r | |
1088 | paddq xmm1,xmm1\r | |
1089 | pand xmm2,xmm3\r | |
1090 | pcmpgtd xmm0,xmm1\r | |
1091 | pxor xmm1,xmm2\r | |
1092 | pshufd xmm2,xmm0,19\r | |
1093 | pxor xmm0,xmm0\r | |
1094 | movdqa [16+esp],xmm1\r | |
1095 | paddq xmm1,xmm1\r | |
1096 | pand xmm2,xmm3\r | |
1097 | pcmpgtd xmm0,xmm1\r | |
1098 | pxor xmm1,xmm2\r | |
1099 | pshufd xmm2,xmm0,19\r | |
1100 | pxor xmm0,xmm0\r | |
1101 | movdqa [32+esp],xmm1\r | |
1102 | paddq xmm1,xmm1\r | |
1103 | pand xmm2,xmm3\r | |
1104 | pcmpgtd xmm0,xmm1\r | |
1105 | pxor xmm1,xmm2\r | |
1106 | pshufd xmm2,xmm0,19\r | |
1107 | pxor xmm0,xmm0\r | |
1108 | movdqa [48+esp],xmm1\r | |
1109 | paddq xmm1,xmm1\r | |
1110 | pand xmm2,xmm3\r | |
1111 | pcmpgtd xmm0,xmm1\r | |
1112 | pxor xmm1,xmm2\r | |
1113 | pshufd xmm7,xmm0,19\r | |
1114 | movdqa [64+esp],xmm1\r | |
1115 | paddq xmm1,xmm1\r | |
1116 | movups xmm0,[ebp]\r | |
1117 | pand xmm7,xmm3\r | |
1118 | movups xmm2,[esi]\r | |
1119 | pxor xmm7,xmm1\r | |
1120 | mov ecx,ebx\r | |
1121 | movdqu xmm3,[16+esi]\r | |
1122 | xorps xmm2,xmm0\r | |
1123 | movdqu xmm4,[32+esi]\r | |
1124 | pxor xmm3,xmm0\r | |
1125 | movdqu xmm5,[48+esi]\r | |
1126 | pxor xmm4,xmm0\r | |
1127 | movdqu xmm6,[64+esi]\r | |
1128 | pxor xmm5,xmm0\r | |
1129 | movdqu xmm1,[80+esi]\r | |
1130 | pxor xmm6,xmm0\r | |
1131 | lea esi,[96+esi]\r | |
1132 | pxor xmm2,[esp]\r | |
1133 | movdqa [80+esp],xmm7\r | |
1134 | pxor xmm7,xmm1\r | |
1135 | movups xmm1,[16+ebp]\r | |
1136 | pxor xmm3,[16+esp]\r | |
1137 | pxor xmm4,[32+esp]\r | |
1138 | db 102,15,56,220,209\r | |
1139 | pxor xmm5,[48+esp]\r | |
1140 | pxor xmm6,[64+esp]\r | |
1141 | db 102,15,56,220,217\r | |
1142 | pxor xmm7,xmm0\r | |
1143 | movups xmm0,[32+ebp]\r | |
1144 | db 102,15,56,220,225\r | |
1145 | db 102,15,56,220,233\r | |
1146 | db 102,15,56,220,241\r | |
1147 | db 102,15,56,220,249\r | |
1148 | call L$_aesni_encrypt6_enter\r | |
1149 | movdqa xmm1,[80+esp]\r | |
1150 | pxor xmm0,xmm0\r | |
1151 | xorps xmm2,[esp]\r | |
1152 | pcmpgtd xmm0,xmm1\r | |
1153 | xorps xmm3,[16+esp]\r | |
1154 | movups [edi],xmm2\r | |
1155 | xorps xmm4,[32+esp]\r | |
1156 | movups [16+edi],xmm3\r | |
1157 | xorps xmm5,[48+esp]\r | |
1158 | movups [32+edi],xmm4\r | |
1159 | xorps xmm6,[64+esp]\r | |
1160 | movups [48+edi],xmm5\r | |
1161 | xorps xmm7,xmm1\r | |
1162 | movups [64+edi],xmm6\r | |
1163 | pshufd xmm2,xmm0,19\r | |
1164 | movups [80+edi],xmm7\r | |
1165 | lea edi,[96+edi]\r | |
1166 | movdqa xmm3,[96+esp]\r | |
1167 | pxor xmm0,xmm0\r | |
1168 | paddq xmm1,xmm1\r | |
1169 | pand xmm2,xmm3\r | |
1170 | pcmpgtd xmm0,xmm1\r | |
1171 | pxor xmm1,xmm2\r | |
1172 | sub eax,96\r | |
1173 | jnc NEAR L$048xts_enc_loop6\r | |
1174 | mov ecx,DWORD [240+ebp]\r | |
1175 | mov edx,ebp\r | |
1176 | mov ebx,ecx\r | |
1177 | L$047xts_enc_short:\r | |
1178 | add eax,96\r | |
1179 | jz NEAR L$049xts_enc_done6x\r | |
1180 | movdqa xmm5,xmm1\r | |
1181 | cmp eax,32\r | |
1182 | jb NEAR L$050xts_enc_one\r | |
1183 | pshufd xmm2,xmm0,19\r | |
1184 | pxor xmm0,xmm0\r | |
1185 | paddq xmm1,xmm1\r | |
1186 | pand xmm2,xmm3\r | |
1187 | pcmpgtd xmm0,xmm1\r | |
1188 | pxor xmm1,xmm2\r | |
1189 | je NEAR L$051xts_enc_two\r | |
1190 | pshufd xmm2,xmm0,19\r | |
1191 | pxor xmm0,xmm0\r | |
1192 | movdqa xmm6,xmm1\r | |
1193 | paddq xmm1,xmm1\r | |
1194 | pand xmm2,xmm3\r | |
1195 | pcmpgtd xmm0,xmm1\r | |
1196 | pxor xmm1,xmm2\r | |
1197 | cmp eax,64\r | |
1198 | jb NEAR L$052xts_enc_three\r | |
1199 | pshufd xmm2,xmm0,19\r | |
1200 | pxor xmm0,xmm0\r | |
1201 | movdqa xmm7,xmm1\r | |
1202 | paddq xmm1,xmm1\r | |
1203 | pand xmm2,xmm3\r | |
1204 | pcmpgtd xmm0,xmm1\r | |
1205 | pxor xmm1,xmm2\r | |
1206 | movdqa [esp],xmm5\r | |
1207 | movdqa [16+esp],xmm6\r | |
1208 | je NEAR L$053xts_enc_four\r | |
1209 | movdqa [32+esp],xmm7\r | |
1210 | pshufd xmm7,xmm0,19\r | |
1211 | movdqa [48+esp],xmm1\r | |
1212 | paddq xmm1,xmm1\r | |
1213 | pand xmm7,xmm3\r | |
1214 | pxor xmm7,xmm1\r | |
1215 | movdqu xmm2,[esi]\r | |
1216 | movdqu xmm3,[16+esi]\r | |
1217 | movdqu xmm4,[32+esi]\r | |
1218 | pxor xmm2,[esp]\r | |
1219 | movdqu xmm5,[48+esi]\r | |
1220 | pxor xmm3,[16+esp]\r | |
1221 | movdqu xmm6,[64+esi]\r | |
1222 | pxor xmm4,[32+esp]\r | |
1223 | lea esi,[80+esi]\r | |
1224 | pxor xmm5,[48+esp]\r | |
1225 | movdqa [64+esp],xmm7\r | |
1226 | pxor xmm6,xmm7\r | |
1227 | call __aesni_encrypt6\r | |
1228 | movaps xmm1,[64+esp]\r | |
1229 | xorps xmm2,[esp]\r | |
1230 | xorps xmm3,[16+esp]\r | |
1231 | xorps xmm4,[32+esp]\r | |
1232 | movups [edi],xmm2\r | |
1233 | xorps xmm5,[48+esp]\r | |
1234 | movups [16+edi],xmm3\r | |
1235 | xorps xmm6,xmm1\r | |
1236 | movups [32+edi],xmm4\r | |
1237 | movups [48+edi],xmm5\r | |
1238 | movups [64+edi],xmm6\r | |
1239 | lea edi,[80+edi]\r | |
1240 | jmp NEAR L$054xts_enc_done\r | |
1241 | align 16\r | |
1242 | L$050xts_enc_one:\r | |
1243 | movups xmm2,[esi]\r | |
1244 | lea esi,[16+esi]\r | |
1245 | xorps xmm2,xmm5\r | |
1246 | movups xmm0,[edx]\r | |
1247 | movups xmm1,[16+edx]\r | |
1248 | lea edx,[32+edx]\r | |
1249 | xorps xmm2,xmm0\r | |
1250 | L$055enc1_loop_9:\r | |
1251 | db 102,15,56,220,209\r | |
1252 | dec ecx\r | |
1253 | movups xmm1,[edx]\r | |
1254 | lea edx,[16+edx]\r | |
1255 | jnz NEAR L$055enc1_loop_9\r | |
1256 | db 102,15,56,221,209\r | |
1257 | xorps xmm2,xmm5\r | |
1258 | movups [edi],xmm2\r | |
1259 | lea edi,[16+edi]\r | |
1260 | movdqa xmm1,xmm5\r | |
1261 | jmp NEAR L$054xts_enc_done\r | |
1262 | align 16\r | |
1263 | L$051xts_enc_two:\r | |
1264 | movaps xmm6,xmm1\r | |
1265 | movups xmm2,[esi]\r | |
1266 | movups xmm3,[16+esi]\r | |
1267 | lea esi,[32+esi]\r | |
1268 | xorps xmm2,xmm5\r | |
1269 | xorps xmm3,xmm6\r | |
1270 | call __aesni_encrypt2\r | |
1271 | xorps xmm2,xmm5\r | |
1272 | xorps xmm3,xmm6\r | |
1273 | movups [edi],xmm2\r | |
1274 | movups [16+edi],xmm3\r | |
1275 | lea edi,[32+edi]\r | |
1276 | movdqa xmm1,xmm6\r | |
1277 | jmp NEAR L$054xts_enc_done\r | |
1278 | align 16\r | |
1279 | L$052xts_enc_three:\r | |
1280 | movaps xmm7,xmm1\r | |
1281 | movups xmm2,[esi]\r | |
1282 | movups xmm3,[16+esi]\r | |
1283 | movups xmm4,[32+esi]\r | |
1284 | lea esi,[48+esi]\r | |
1285 | xorps xmm2,xmm5\r | |
1286 | xorps xmm3,xmm6\r | |
1287 | xorps xmm4,xmm7\r | |
1288 | call __aesni_encrypt3\r | |
1289 | xorps xmm2,xmm5\r | |
1290 | xorps xmm3,xmm6\r | |
1291 | xorps xmm4,xmm7\r | |
1292 | movups [edi],xmm2\r | |
1293 | movups [16+edi],xmm3\r | |
1294 | movups [32+edi],xmm4\r | |
1295 | lea edi,[48+edi]\r | |
1296 | movdqa xmm1,xmm7\r | |
1297 | jmp NEAR L$054xts_enc_done\r | |
1298 | align 16\r | |
1299 | L$053xts_enc_four:\r | |
1300 | movaps xmm6,xmm1\r | |
1301 | movups xmm2,[esi]\r | |
1302 | movups xmm3,[16+esi]\r | |
1303 | movups xmm4,[32+esi]\r | |
1304 | xorps xmm2,[esp]\r | |
1305 | movups xmm5,[48+esi]\r | |
1306 | lea esi,[64+esi]\r | |
1307 | xorps xmm3,[16+esp]\r | |
1308 | xorps xmm4,xmm7\r | |
1309 | xorps xmm5,xmm6\r | |
1310 | call __aesni_encrypt4\r | |
1311 | xorps xmm2,[esp]\r | |
1312 | xorps xmm3,[16+esp]\r | |
1313 | xorps xmm4,xmm7\r | |
1314 | movups [edi],xmm2\r | |
1315 | xorps xmm5,xmm6\r | |
1316 | movups [16+edi],xmm3\r | |
1317 | movups [32+edi],xmm4\r | |
1318 | movups [48+edi],xmm5\r | |
1319 | lea edi,[64+edi]\r | |
1320 | movdqa xmm1,xmm6\r | |
1321 | jmp NEAR L$054xts_enc_done\r | |
1322 | align 16\r | |
1323 | L$049xts_enc_done6x:\r | |
1324 | mov eax,DWORD [112+esp]\r | |
1325 | and eax,15\r | |
1326 | jz NEAR L$056xts_enc_ret\r | |
1327 | movdqa xmm5,xmm1\r | |
1328 | mov DWORD [112+esp],eax\r | |
1329 | jmp NEAR L$057xts_enc_steal\r | |
1330 | align 16\r | |
1331 | L$054xts_enc_done:\r | |
1332 | mov eax,DWORD [112+esp]\r | |
1333 | pxor xmm0,xmm0\r | |
1334 | and eax,15\r | |
1335 | jz NEAR L$056xts_enc_ret\r | |
1336 | pcmpgtd xmm0,xmm1\r | |
1337 | mov DWORD [112+esp],eax\r | |
1338 | pshufd xmm5,xmm0,19\r | |
1339 | paddq xmm1,xmm1\r | |
1340 | pand xmm5,[96+esp]\r | |
1341 | pxor xmm5,xmm1\r | |
1342 | L$057xts_enc_steal:\r | |
1343 | movzx ecx,BYTE [esi]\r | |
1344 | movzx edx,BYTE [edi-16]\r | |
1345 | lea esi,[1+esi]\r | |
1346 | mov BYTE [edi-16],cl\r | |
1347 | mov BYTE [edi],dl\r | |
1348 | lea edi,[1+edi]\r | |
1349 | sub eax,1\r | |
1350 | jnz NEAR L$057xts_enc_steal\r | |
1351 | sub edi,DWORD [112+esp]\r | |
1352 | mov edx,ebp\r | |
1353 | mov ecx,ebx\r | |
1354 | movups xmm2,[edi-16]\r | |
1355 | xorps xmm2,xmm5\r | |
1356 | movups xmm0,[edx]\r | |
1357 | movups xmm1,[16+edx]\r | |
1358 | lea edx,[32+edx]\r | |
1359 | xorps xmm2,xmm0\r | |
1360 | L$058enc1_loop_10:\r | |
1361 | db 102,15,56,220,209\r | |
1362 | dec ecx\r | |
1363 | movups xmm1,[edx]\r | |
1364 | lea edx,[16+edx]\r | |
1365 | jnz NEAR L$058enc1_loop_10\r | |
1366 | db 102,15,56,221,209\r | |
1367 | xorps xmm2,xmm5\r | |
1368 | movups [edi-16],xmm2\r | |
1369 | L$056xts_enc_ret:\r | |
1370 | pxor xmm0,xmm0\r | |
1371 | pxor xmm1,xmm1\r | |
1372 | pxor xmm2,xmm2\r | |
1373 | movdqa [esp],xmm0\r | |
1374 | pxor xmm3,xmm3\r | |
1375 | movdqa [16+esp],xmm0\r | |
1376 | pxor xmm4,xmm4\r | |
1377 | movdqa [32+esp],xmm0\r | |
1378 | pxor xmm5,xmm5\r | |
1379 | movdqa [48+esp],xmm0\r | |
1380 | pxor xmm6,xmm6\r | |
1381 | movdqa [64+esp],xmm0\r | |
1382 | pxor xmm7,xmm7\r | |
1383 | movdqa [80+esp],xmm0\r | |
1384 | mov esp,DWORD [116+esp]\r | |
1385 | pop edi\r | |
1386 | pop esi\r | |
1387 | pop ebx\r | |
1388 | pop ebp\r | |
1389 | ret\r | |
1390 | global _aesni_xts_decrypt\r | |
1391 | align 16\r | |
1392 | _aesni_xts_decrypt:\r | |
1393 | L$_aesni_xts_decrypt_begin:\r | |
1394 | push ebp\r | |
1395 | push ebx\r | |
1396 | push esi\r | |
1397 | push edi\r | |
1398 | mov edx,DWORD [36+esp]\r | |
1399 | mov esi,DWORD [40+esp]\r | |
1400 | mov ecx,DWORD [240+edx]\r | |
1401 | movups xmm2,[esi]\r | |
1402 | movups xmm0,[edx]\r | |
1403 | movups xmm1,[16+edx]\r | |
1404 | lea edx,[32+edx]\r | |
1405 | xorps xmm2,xmm0\r | |
1406 | L$059enc1_loop_11:\r | |
1407 | db 102,15,56,220,209\r | |
1408 | dec ecx\r | |
1409 | movups xmm1,[edx]\r | |
1410 | lea edx,[16+edx]\r | |
1411 | jnz NEAR L$059enc1_loop_11\r | |
1412 | db 102,15,56,221,209\r | |
1413 | mov esi,DWORD [20+esp]\r | |
1414 | mov edi,DWORD [24+esp]\r | |
1415 | mov eax,DWORD [28+esp]\r | |
1416 | mov edx,DWORD [32+esp]\r | |
1417 | mov ebp,esp\r | |
1418 | sub esp,120\r | |
1419 | and esp,-16\r | |
1420 | xor ebx,ebx\r | |
1421 | test eax,15\r | |
1422 | setnz bl\r | |
1423 | shl ebx,4\r | |
1424 | sub eax,ebx\r | |
1425 | mov DWORD [96+esp],135\r | |
1426 | mov DWORD [100+esp],0\r | |
1427 | mov DWORD [104+esp],1\r | |
1428 | mov DWORD [108+esp],0\r | |
1429 | mov DWORD [112+esp],eax\r | |
1430 | mov DWORD [116+esp],ebp\r | |
1431 | mov ecx,DWORD [240+edx]\r | |
1432 | mov ebp,edx\r | |
1433 | mov ebx,ecx\r | |
1434 | movdqa xmm1,xmm2\r | |
1435 | pxor xmm0,xmm0\r | |
1436 | movdqa xmm3,[96+esp]\r | |
1437 | pcmpgtd xmm0,xmm1\r | |
1438 | and eax,-16\r | |
1439 | sub eax,96\r | |
1440 | jc NEAR L$060xts_dec_short\r | |
1441 | shl ecx,4\r | |
1442 | mov ebx,16\r | |
1443 | sub ebx,ecx\r | |
1444 | lea edx,[32+ecx*1+edx]\r | |
1445 | jmp NEAR L$061xts_dec_loop6\r | |
1446 | align 16\r | |
1447 | L$061xts_dec_loop6:\r | |
1448 | pshufd xmm2,xmm0,19\r | |
1449 | pxor xmm0,xmm0\r | |
1450 | movdqa [esp],xmm1\r | |
1451 | paddq xmm1,xmm1\r | |
1452 | pand xmm2,xmm3\r | |
1453 | pcmpgtd xmm0,xmm1\r | |
1454 | pxor xmm1,xmm2\r | |
1455 | pshufd xmm2,xmm0,19\r | |
1456 | pxor xmm0,xmm0\r | |
1457 | movdqa [16+esp],xmm1\r | |
1458 | paddq xmm1,xmm1\r | |
1459 | pand xmm2,xmm3\r | |
1460 | pcmpgtd xmm0,xmm1\r | |
1461 | pxor xmm1,xmm2\r | |
1462 | pshufd xmm2,xmm0,19\r | |
1463 | pxor xmm0,xmm0\r | |
1464 | movdqa [32+esp],xmm1\r | |
1465 | paddq xmm1,xmm1\r | |
1466 | pand xmm2,xmm3\r | |
1467 | pcmpgtd xmm0,xmm1\r | |
1468 | pxor xmm1,xmm2\r | |
1469 | pshufd xmm2,xmm0,19\r | |
1470 | pxor xmm0,xmm0\r | |
1471 | movdqa [48+esp],xmm1\r | |
1472 | paddq xmm1,xmm1\r | |
1473 | pand xmm2,xmm3\r | |
1474 | pcmpgtd xmm0,xmm1\r | |
1475 | pxor xmm1,xmm2\r | |
1476 | pshufd xmm7,xmm0,19\r | |
1477 | movdqa [64+esp],xmm1\r | |
1478 | paddq xmm1,xmm1\r | |
1479 | movups xmm0,[ebp]\r | |
1480 | pand xmm7,xmm3\r | |
1481 | movups xmm2,[esi]\r | |
1482 | pxor xmm7,xmm1\r | |
1483 | mov ecx,ebx\r | |
1484 | movdqu xmm3,[16+esi]\r | |
1485 | xorps xmm2,xmm0\r | |
1486 | movdqu xmm4,[32+esi]\r | |
1487 | pxor xmm3,xmm0\r | |
1488 | movdqu xmm5,[48+esi]\r | |
1489 | pxor xmm4,xmm0\r | |
1490 | movdqu xmm6,[64+esi]\r | |
1491 | pxor xmm5,xmm0\r | |
1492 | movdqu xmm1,[80+esi]\r | |
1493 | pxor xmm6,xmm0\r | |
1494 | lea esi,[96+esi]\r | |
1495 | pxor xmm2,[esp]\r | |
1496 | movdqa [80+esp],xmm7\r | |
1497 | pxor xmm7,xmm1\r | |
1498 | movups xmm1,[16+ebp]\r | |
1499 | pxor xmm3,[16+esp]\r | |
1500 | pxor xmm4,[32+esp]\r | |
1501 | db 102,15,56,222,209\r | |
1502 | pxor xmm5,[48+esp]\r | |
1503 | pxor xmm6,[64+esp]\r | |
1504 | db 102,15,56,222,217\r | |
1505 | pxor xmm7,xmm0\r | |
1506 | movups xmm0,[32+ebp]\r | |
1507 | db 102,15,56,222,225\r | |
1508 | db 102,15,56,222,233\r | |
1509 | db 102,15,56,222,241\r | |
1510 | db 102,15,56,222,249\r | |
1511 | call L$_aesni_decrypt6_enter\r | |
1512 | movdqa xmm1,[80+esp]\r | |
1513 | pxor xmm0,xmm0\r | |
1514 | xorps xmm2,[esp]\r | |
1515 | pcmpgtd xmm0,xmm1\r | |
1516 | xorps xmm3,[16+esp]\r | |
1517 | movups [edi],xmm2\r | |
1518 | xorps xmm4,[32+esp]\r | |
1519 | movups [16+edi],xmm3\r | |
1520 | xorps xmm5,[48+esp]\r | |
1521 | movups [32+edi],xmm4\r | |
1522 | xorps xmm6,[64+esp]\r | |
1523 | movups [48+edi],xmm5\r | |
1524 | xorps xmm7,xmm1\r | |
1525 | movups [64+edi],xmm6\r | |
1526 | pshufd xmm2,xmm0,19\r | |
1527 | movups [80+edi],xmm7\r | |
1528 | lea edi,[96+edi]\r | |
1529 | movdqa xmm3,[96+esp]\r | |
1530 | pxor xmm0,xmm0\r | |
1531 | paddq xmm1,xmm1\r | |
1532 | pand xmm2,xmm3\r | |
1533 | pcmpgtd xmm0,xmm1\r | |
1534 | pxor xmm1,xmm2\r | |
1535 | sub eax,96\r | |
1536 | jnc NEAR L$061xts_dec_loop6\r | |
1537 | mov ecx,DWORD [240+ebp]\r | |
1538 | mov edx,ebp\r | |
1539 | mov ebx,ecx\r | |
1540 | L$060xts_dec_short:\r | |
1541 | add eax,96\r | |
1542 | jz NEAR L$062xts_dec_done6x\r | |
1543 | movdqa xmm5,xmm1\r | |
1544 | cmp eax,32\r | |
1545 | jb NEAR L$063xts_dec_one\r | |
1546 | pshufd xmm2,xmm0,19\r | |
1547 | pxor xmm0,xmm0\r | |
1548 | paddq xmm1,xmm1\r | |
1549 | pand xmm2,xmm3\r | |
1550 | pcmpgtd xmm0,xmm1\r | |
1551 | pxor xmm1,xmm2\r | |
1552 | je NEAR L$064xts_dec_two\r | |
1553 | pshufd xmm2,xmm0,19\r | |
1554 | pxor xmm0,xmm0\r | |
1555 | movdqa xmm6,xmm1\r | |
1556 | paddq xmm1,xmm1\r | |
1557 | pand xmm2,xmm3\r | |
1558 | pcmpgtd xmm0,xmm1\r | |
1559 | pxor xmm1,xmm2\r | |
1560 | cmp eax,64\r | |
1561 | jb NEAR L$065xts_dec_three\r | |
1562 | pshufd xmm2,xmm0,19\r | |
1563 | pxor xmm0,xmm0\r | |
1564 | movdqa xmm7,xmm1\r | |
1565 | paddq xmm1,xmm1\r | |
1566 | pand xmm2,xmm3\r | |
1567 | pcmpgtd xmm0,xmm1\r | |
1568 | pxor xmm1,xmm2\r | |
1569 | movdqa [esp],xmm5\r | |
1570 | movdqa [16+esp],xmm6\r | |
1571 | je NEAR L$066xts_dec_four\r | |
1572 | movdqa [32+esp],xmm7\r | |
1573 | pshufd xmm7,xmm0,19\r | |
1574 | movdqa [48+esp],xmm1\r | |
1575 | paddq xmm1,xmm1\r | |
1576 | pand xmm7,xmm3\r | |
1577 | pxor xmm7,xmm1\r | |
1578 | movdqu xmm2,[esi]\r | |
1579 | movdqu xmm3,[16+esi]\r | |
1580 | movdqu xmm4,[32+esi]\r | |
1581 | pxor xmm2,[esp]\r | |
1582 | movdqu xmm5,[48+esi]\r | |
1583 | pxor xmm3,[16+esp]\r | |
1584 | movdqu xmm6,[64+esi]\r | |
1585 | pxor xmm4,[32+esp]\r | |
1586 | lea esi,[80+esi]\r | |
1587 | pxor xmm5,[48+esp]\r | |
1588 | movdqa [64+esp],xmm7\r | |
1589 | pxor xmm6,xmm7\r | |
1590 | call __aesni_decrypt6\r | |
1591 | movaps xmm1,[64+esp]\r | |
1592 | xorps xmm2,[esp]\r | |
1593 | xorps xmm3,[16+esp]\r | |
1594 | xorps xmm4,[32+esp]\r | |
1595 | movups [edi],xmm2\r | |
1596 | xorps xmm5,[48+esp]\r | |
1597 | movups [16+edi],xmm3\r | |
1598 | xorps xmm6,xmm1\r | |
1599 | movups [32+edi],xmm4\r | |
1600 | movups [48+edi],xmm5\r | |
1601 | movups [64+edi],xmm6\r | |
1602 | lea edi,[80+edi]\r | |
1603 | jmp NEAR L$067xts_dec_done\r | |
1604 | align 16\r | |
1605 | L$063xts_dec_one:\r | |
1606 | movups xmm2,[esi]\r | |
1607 | lea esi,[16+esi]\r | |
1608 | xorps xmm2,xmm5\r | |
1609 | movups xmm0,[edx]\r | |
1610 | movups xmm1,[16+edx]\r | |
1611 | lea edx,[32+edx]\r | |
1612 | xorps xmm2,xmm0\r | |
1613 | L$068dec1_loop_12:\r | |
1614 | db 102,15,56,222,209\r | |
1615 | dec ecx\r | |
1616 | movups xmm1,[edx]\r | |
1617 | lea edx,[16+edx]\r | |
1618 | jnz NEAR L$068dec1_loop_12\r | |
1619 | db 102,15,56,223,209\r | |
1620 | xorps xmm2,xmm5\r | |
1621 | movups [edi],xmm2\r | |
1622 | lea edi,[16+edi]\r | |
1623 | movdqa xmm1,xmm5\r | |
1624 | jmp NEAR L$067xts_dec_done\r | |
1625 | align 16\r | |
1626 | L$064xts_dec_two:\r | |
1627 | movaps xmm6,xmm1\r | |
1628 | movups xmm2,[esi]\r | |
1629 | movups xmm3,[16+esi]\r | |
1630 | lea esi,[32+esi]\r | |
1631 | xorps xmm2,xmm5\r | |
1632 | xorps xmm3,xmm6\r | |
1633 | call __aesni_decrypt2\r | |
1634 | xorps xmm2,xmm5\r | |
1635 | xorps xmm3,xmm6\r | |
1636 | movups [edi],xmm2\r | |
1637 | movups [16+edi],xmm3\r | |
1638 | lea edi,[32+edi]\r | |
1639 | movdqa xmm1,xmm6\r | |
1640 | jmp NEAR L$067xts_dec_done\r | |
1641 | align 16\r | |
1642 | L$065xts_dec_three:\r | |
1643 | movaps xmm7,xmm1\r | |
1644 | movups xmm2,[esi]\r | |
1645 | movups xmm3,[16+esi]\r | |
1646 | movups xmm4,[32+esi]\r | |
1647 | lea esi,[48+esi]\r | |
1648 | xorps xmm2,xmm5\r | |
1649 | xorps xmm3,xmm6\r | |
1650 | xorps xmm4,xmm7\r | |
1651 | call __aesni_decrypt3\r | |
1652 | xorps xmm2,xmm5\r | |
1653 | xorps xmm3,xmm6\r | |
1654 | xorps xmm4,xmm7\r | |
1655 | movups [edi],xmm2\r | |
1656 | movups [16+edi],xmm3\r | |
1657 | movups [32+edi],xmm4\r | |
1658 | lea edi,[48+edi]\r | |
1659 | movdqa xmm1,xmm7\r | |
1660 | jmp NEAR L$067xts_dec_done\r | |
1661 | align 16\r | |
1662 | L$066xts_dec_four:\r | |
1663 | movaps xmm6,xmm1\r | |
1664 | movups xmm2,[esi]\r | |
1665 | movups xmm3,[16+esi]\r | |
1666 | movups xmm4,[32+esi]\r | |
1667 | xorps xmm2,[esp]\r | |
1668 | movups xmm5,[48+esi]\r | |
1669 | lea esi,[64+esi]\r | |
1670 | xorps xmm3,[16+esp]\r | |
1671 | xorps xmm4,xmm7\r | |
1672 | xorps xmm5,xmm6\r | |
1673 | call __aesni_decrypt4\r | |
1674 | xorps xmm2,[esp]\r | |
1675 | xorps xmm3,[16+esp]\r | |
1676 | xorps xmm4,xmm7\r | |
1677 | movups [edi],xmm2\r | |
1678 | xorps xmm5,xmm6\r | |
1679 | movups [16+edi],xmm3\r | |
1680 | movups [32+edi],xmm4\r | |
1681 | movups [48+edi],xmm5\r | |
1682 | lea edi,[64+edi]\r | |
1683 | movdqa xmm1,xmm6\r | |
1684 | jmp NEAR L$067xts_dec_done\r | |
1685 | align 16\r | |
1686 | L$062xts_dec_done6x:\r | |
1687 | mov eax,DWORD [112+esp]\r | |
1688 | and eax,15\r | |
1689 | jz NEAR L$069xts_dec_ret\r | |
1690 | mov DWORD [112+esp],eax\r | |
1691 | jmp NEAR L$070xts_dec_only_one_more\r | |
1692 | align 16\r | |
1693 | L$067xts_dec_done:\r | |
1694 | mov eax,DWORD [112+esp]\r | |
1695 | pxor xmm0,xmm0\r | |
1696 | and eax,15\r | |
1697 | jz NEAR L$069xts_dec_ret\r | |
1698 | pcmpgtd xmm0,xmm1\r | |
1699 | mov DWORD [112+esp],eax\r | |
1700 | pshufd xmm2,xmm0,19\r | |
1701 | pxor xmm0,xmm0\r | |
1702 | movdqa xmm3,[96+esp]\r | |
1703 | paddq xmm1,xmm1\r | |
1704 | pand xmm2,xmm3\r | |
1705 | pcmpgtd xmm0,xmm1\r | |
1706 | pxor xmm1,xmm2\r | |
1707 | L$070xts_dec_only_one_more:\r | |
1708 | pshufd xmm5,xmm0,19\r | |
1709 | movdqa xmm6,xmm1\r | |
1710 | paddq xmm1,xmm1\r | |
1711 | pand xmm5,xmm3\r | |
1712 | pxor xmm5,xmm1\r | |
1713 | mov edx,ebp\r | |
1714 | mov ecx,ebx\r | |
1715 | movups xmm2,[esi]\r | |
1716 | xorps xmm2,xmm5\r | |
1717 | movups xmm0,[edx]\r | |
1718 | movups xmm1,[16+edx]\r | |
1719 | lea edx,[32+edx]\r | |
1720 | xorps xmm2,xmm0\r | |
1721 | L$071dec1_loop_13:\r | |
1722 | db 102,15,56,222,209\r | |
1723 | dec ecx\r | |
1724 | movups xmm1,[edx]\r | |
1725 | lea edx,[16+edx]\r | |
1726 | jnz NEAR L$071dec1_loop_13\r | |
1727 | db 102,15,56,223,209\r | |
1728 | xorps xmm2,xmm5\r | |
1729 | movups [edi],xmm2\r | |
1730 | L$072xts_dec_steal:\r | |
1731 | movzx ecx,BYTE [16+esi]\r | |
1732 | movzx edx,BYTE [edi]\r | |
1733 | lea esi,[1+esi]\r | |
1734 | mov BYTE [edi],cl\r | |
1735 | mov BYTE [16+edi],dl\r | |
1736 | lea edi,[1+edi]\r | |
1737 | sub eax,1\r | |
1738 | jnz NEAR L$072xts_dec_steal\r | |
1739 | sub edi,DWORD [112+esp]\r | |
1740 | mov edx,ebp\r | |
1741 | mov ecx,ebx\r | |
1742 | movups xmm2,[edi]\r | |
1743 | xorps xmm2,xmm6\r | |
1744 | movups xmm0,[edx]\r | |
1745 | movups xmm1,[16+edx]\r | |
1746 | lea edx,[32+edx]\r | |
1747 | xorps xmm2,xmm0\r | |
1748 | L$073dec1_loop_14:\r | |
1749 | db 102,15,56,222,209\r | |
1750 | dec ecx\r | |
1751 | movups xmm1,[edx]\r | |
1752 | lea edx,[16+edx]\r | |
1753 | jnz NEAR L$073dec1_loop_14\r | |
1754 | db 102,15,56,223,209\r | |
1755 | xorps xmm2,xmm6\r | |
1756 | movups [edi],xmm2\r | |
1757 | L$069xts_dec_ret:\r | |
1758 | pxor xmm0,xmm0\r | |
1759 | pxor xmm1,xmm1\r | |
1760 | pxor xmm2,xmm2\r | |
1761 | movdqa [esp],xmm0\r | |
1762 | pxor xmm3,xmm3\r | |
1763 | movdqa [16+esp],xmm0\r | |
1764 | pxor xmm4,xmm4\r | |
1765 | movdqa [32+esp],xmm0\r | |
1766 | pxor xmm5,xmm5\r | |
1767 | movdqa [48+esp],xmm0\r | |
1768 | pxor xmm6,xmm6\r | |
1769 | movdqa [64+esp],xmm0\r | |
1770 | pxor xmm7,xmm7\r | |
1771 | movdqa [80+esp],xmm0\r | |
1772 | mov esp,DWORD [116+esp]\r | |
1773 | pop edi\r | |
1774 | pop esi\r | |
1775 | pop ebx\r | |
1776 | pop ebp\r | |
1777 | ret\r | |
1778 | global _aesni_ocb_encrypt\r | |
1779 | align 16\r | |
1780 | _aesni_ocb_encrypt:\r | |
1781 | L$_aesni_ocb_encrypt_begin:\r | |
1782 | push ebp\r | |
1783 | push ebx\r | |
1784 | push esi\r | |
1785 | push edi\r | |
1786 | mov ecx,DWORD [40+esp]\r | |
1787 | mov ebx,DWORD [48+esp]\r | |
1788 | mov esi,DWORD [20+esp]\r | |
1789 | mov edi,DWORD [24+esp]\r | |
1790 | mov eax,DWORD [28+esp]\r | |
1791 | mov edx,DWORD [32+esp]\r | |
1792 | movdqu xmm0,[ecx]\r | |
1793 | mov ebp,DWORD [36+esp]\r | |
1794 | movdqu xmm1,[ebx]\r | |
1795 | mov ebx,DWORD [44+esp]\r | |
1796 | mov ecx,esp\r | |
1797 | sub esp,132\r | |
1798 | and esp,-16\r | |
1799 | sub edi,esi\r | |
1800 | shl eax,4\r | |
1801 | lea eax,[eax*1+esi-96]\r | |
1802 | mov DWORD [120+esp],edi\r | |
1803 | mov DWORD [124+esp],eax\r | |
1804 | mov DWORD [128+esp],ecx\r | |
1805 | mov ecx,DWORD [240+edx]\r | |
1806 | test ebp,1\r | |
1807 | jnz NEAR L$074odd\r | |
1808 | bsf eax,ebp\r | |
1809 | add ebp,1\r | |
1810 | shl eax,4\r | |
1811 | movdqu xmm7,[eax*1+ebx]\r | |
1812 | mov eax,edx\r | |
1813 | movdqu xmm2,[esi]\r | |
1814 | lea esi,[16+esi]\r | |
1815 | pxor xmm7,xmm0\r | |
1816 | pxor xmm1,xmm2\r | |
1817 | pxor xmm2,xmm7\r | |
1818 | movdqa xmm6,xmm1\r | |
1819 | movups xmm0,[edx]\r | |
1820 | movups xmm1,[16+edx]\r | |
1821 | lea edx,[32+edx]\r | |
1822 | xorps xmm2,xmm0\r | |
1823 | L$075enc1_loop_15:\r | |
1824 | db 102,15,56,220,209\r | |
1825 | dec ecx\r | |
1826 | movups xmm1,[edx]\r | |
1827 | lea edx,[16+edx]\r | |
1828 | jnz NEAR L$075enc1_loop_15\r | |
1829 | db 102,15,56,221,209\r | |
1830 | xorps xmm2,xmm7\r | |
1831 | movdqa xmm0,xmm7\r | |
1832 | movdqa xmm1,xmm6\r | |
1833 | movups [esi*1+edi-16],xmm2\r | |
1834 | mov ecx,DWORD [240+eax]\r | |
1835 | mov edx,eax\r | |
1836 | mov eax,DWORD [124+esp]\r | |
1837 | L$074odd:\r | |
1838 | shl ecx,4\r | |
1839 | mov edi,16\r | |
1840 | sub edi,ecx\r | |
1841 | mov DWORD [112+esp],edx\r | |
1842 | lea edx,[32+ecx*1+edx]\r | |
1843 | mov DWORD [116+esp],edi\r | |
1844 | cmp esi,eax\r | |
1845 | ja NEAR L$076short\r | |
1846 | jmp NEAR L$077grandloop\r | |
1847 | align 32\r | |
1848 | L$077grandloop:\r | |
1849 | lea ecx,[1+ebp]\r | |
1850 | lea eax,[3+ebp]\r | |
1851 | lea edi,[5+ebp]\r | |
1852 | add ebp,6\r | |
1853 | bsf ecx,ecx\r | |
1854 | bsf eax,eax\r | |
1855 | bsf edi,edi\r | |
1856 | shl ecx,4\r | |
1857 | shl eax,4\r | |
1858 | shl edi,4\r | |
1859 | movdqu xmm2,[ebx]\r | |
1860 | movdqu xmm3,[ecx*1+ebx]\r | |
1861 | mov ecx,DWORD [116+esp]\r | |
1862 | movdqa xmm4,xmm2\r | |
1863 | movdqu xmm5,[eax*1+ebx]\r | |
1864 | movdqa xmm6,xmm2\r | |
1865 | movdqu xmm7,[edi*1+ebx]\r | |
1866 | pxor xmm2,xmm0\r | |
1867 | pxor xmm3,xmm2\r | |
1868 | movdqa [esp],xmm2\r | |
1869 | pxor xmm4,xmm3\r | |
1870 | movdqa [16+esp],xmm3\r | |
1871 | pxor xmm5,xmm4\r | |
1872 | movdqa [32+esp],xmm4\r | |
1873 | pxor xmm6,xmm5\r | |
1874 | movdqa [48+esp],xmm5\r | |
1875 | pxor xmm7,xmm6\r | |
1876 | movdqa [64+esp],xmm6\r | |
1877 | movdqa [80+esp],xmm7\r | |
1878 | movups xmm0,[ecx*1+edx-48]\r | |
1879 | movdqu xmm2,[esi]\r | |
1880 | movdqu xmm3,[16+esi]\r | |
1881 | movdqu xmm4,[32+esi]\r | |
1882 | movdqu xmm5,[48+esi]\r | |
1883 | movdqu xmm6,[64+esi]\r | |
1884 | movdqu xmm7,[80+esi]\r | |
1885 | lea esi,[96+esi]\r | |
1886 | pxor xmm1,xmm2\r | |
1887 | pxor xmm2,xmm0\r | |
1888 | pxor xmm1,xmm3\r | |
1889 | pxor xmm3,xmm0\r | |
1890 | pxor xmm1,xmm4\r | |
1891 | pxor xmm4,xmm0\r | |
1892 | pxor xmm1,xmm5\r | |
1893 | pxor xmm5,xmm0\r | |
1894 | pxor xmm1,xmm6\r | |
1895 | pxor xmm6,xmm0\r | |
1896 | pxor xmm1,xmm7\r | |
1897 | pxor xmm7,xmm0\r | |
1898 | movdqa [96+esp],xmm1\r | |
1899 | movups xmm1,[ecx*1+edx-32]\r | |
1900 | pxor xmm2,[esp]\r | |
1901 | pxor xmm3,[16+esp]\r | |
1902 | pxor xmm4,[32+esp]\r | |
1903 | pxor xmm5,[48+esp]\r | |
1904 | pxor xmm6,[64+esp]\r | |
1905 | pxor xmm7,[80+esp]\r | |
1906 | movups xmm0,[ecx*1+edx-16]\r | |
1907 | db 102,15,56,220,209\r | |
1908 | db 102,15,56,220,217\r | |
1909 | db 102,15,56,220,225\r | |
1910 | db 102,15,56,220,233\r | |
1911 | db 102,15,56,220,241\r | |
1912 | db 102,15,56,220,249\r | |
1913 | mov edi,DWORD [120+esp]\r | |
1914 | mov eax,DWORD [124+esp]\r | |
1915 | call L$_aesni_encrypt6_enter\r | |
1916 | movdqa xmm0,[80+esp]\r | |
1917 | pxor xmm2,[esp]\r | |
1918 | pxor xmm3,[16+esp]\r | |
1919 | pxor xmm4,[32+esp]\r | |
1920 | pxor xmm5,[48+esp]\r | |
1921 | pxor xmm6,[64+esp]\r | |
1922 | pxor xmm7,xmm0\r | |
1923 | movdqa xmm1,[96+esp]\r | |
1924 | movdqu [esi*1+edi-96],xmm2\r | |
1925 | movdqu [esi*1+edi-80],xmm3\r | |
1926 | movdqu [esi*1+edi-64],xmm4\r | |
1927 | movdqu [esi*1+edi-48],xmm5\r | |
1928 | movdqu [esi*1+edi-32],xmm6\r | |
1929 | movdqu [esi*1+edi-16],xmm7\r | |
1930 | cmp esi,eax\r | |
1931 | jb NEAR L$077grandloop\r | |
1932 | L$076short:\r | |
1933 | add eax,96\r | |
1934 | sub eax,esi\r | |
1935 | jz NEAR L$078done\r | |
1936 | cmp eax,32\r | |
1937 | jb NEAR L$079one\r | |
1938 | je NEAR L$080two\r | |
1939 | cmp eax,64\r | |
1940 | jb NEAR L$081three\r | |
1941 | je NEAR L$082four\r | |
1942 | lea ecx,[1+ebp]\r | |
1943 | lea eax,[3+ebp]\r | |
1944 | bsf ecx,ecx\r | |
1945 | bsf eax,eax\r | |
1946 | shl ecx,4\r | |
1947 | shl eax,4\r | |
1948 | movdqu xmm2,[ebx]\r | |
1949 | movdqu xmm3,[ecx*1+ebx]\r | |
1950 | mov ecx,DWORD [116+esp]\r | |
1951 | movdqa xmm4,xmm2\r | |
1952 | movdqu xmm5,[eax*1+ebx]\r | |
1953 | movdqa xmm6,xmm2\r | |
1954 | pxor xmm2,xmm0\r | |
1955 | pxor xmm3,xmm2\r | |
1956 | movdqa [esp],xmm2\r | |
1957 | pxor xmm4,xmm3\r | |
1958 | movdqa [16+esp],xmm3\r | |
1959 | pxor xmm5,xmm4\r | |
1960 | movdqa [32+esp],xmm4\r | |
1961 | pxor xmm6,xmm5\r | |
1962 | movdqa [48+esp],xmm5\r | |
1963 | pxor xmm7,xmm6\r | |
1964 | movdqa [64+esp],xmm6\r | |
1965 | movups xmm0,[ecx*1+edx-48]\r | |
1966 | movdqu xmm2,[esi]\r | |
1967 | movdqu xmm3,[16+esi]\r | |
1968 | movdqu xmm4,[32+esi]\r | |
1969 | movdqu xmm5,[48+esi]\r | |
1970 | movdqu xmm6,[64+esi]\r | |
1971 | pxor xmm7,xmm7\r | |
1972 | pxor xmm1,xmm2\r | |
1973 | pxor xmm2,xmm0\r | |
1974 | pxor xmm1,xmm3\r | |
1975 | pxor xmm3,xmm0\r | |
1976 | pxor xmm1,xmm4\r | |
1977 | pxor xmm4,xmm0\r | |
1978 | pxor xmm1,xmm5\r | |
1979 | pxor xmm5,xmm0\r | |
1980 | pxor xmm1,xmm6\r | |
1981 | pxor xmm6,xmm0\r | |
1982 | movdqa [96+esp],xmm1\r | |
1983 | movups xmm1,[ecx*1+edx-32]\r | |
1984 | pxor xmm2,[esp]\r | |
1985 | pxor xmm3,[16+esp]\r | |
1986 | pxor xmm4,[32+esp]\r | |
1987 | pxor xmm5,[48+esp]\r | |
1988 | pxor xmm6,[64+esp]\r | |
1989 | movups xmm0,[ecx*1+edx-16]\r | |
1990 | db 102,15,56,220,209\r | |
1991 | db 102,15,56,220,217\r | |
1992 | db 102,15,56,220,225\r | |
1993 | db 102,15,56,220,233\r | |
1994 | db 102,15,56,220,241\r | |
1995 | db 102,15,56,220,249\r | |
1996 | mov edi,DWORD [120+esp]\r | |
1997 | call L$_aesni_encrypt6_enter\r | |
1998 | movdqa xmm0,[64+esp]\r | |
1999 | pxor xmm2,[esp]\r | |
2000 | pxor xmm3,[16+esp]\r | |
2001 | pxor xmm4,[32+esp]\r | |
2002 | pxor xmm5,[48+esp]\r | |
2003 | pxor xmm6,xmm0\r | |
2004 | movdqa xmm1,[96+esp]\r | |
2005 | movdqu [esi*1+edi],xmm2\r | |
2006 | movdqu [16+esi*1+edi],xmm3\r | |
2007 | movdqu [32+esi*1+edi],xmm4\r | |
2008 | movdqu [48+esi*1+edi],xmm5\r | |
2009 | movdqu [64+esi*1+edi],xmm6\r | |
2010 | jmp NEAR L$078done\r | |
2011 | align 16\r | |
2012 | L$079one:\r | |
2013 | movdqu xmm7,[ebx]\r | |
2014 | mov edx,DWORD [112+esp]\r | |
2015 | movdqu xmm2,[esi]\r | |
2016 | mov ecx,DWORD [240+edx]\r | |
2017 | pxor xmm7,xmm0\r | |
2018 | pxor xmm1,xmm2\r | |
2019 | pxor xmm2,xmm7\r | |
2020 | movdqa xmm6,xmm1\r | |
2021 | mov edi,DWORD [120+esp]\r | |
2022 | movups xmm0,[edx]\r | |
2023 | movups xmm1,[16+edx]\r | |
2024 | lea edx,[32+edx]\r | |
2025 | xorps xmm2,xmm0\r | |
2026 | L$083enc1_loop_16:\r | |
2027 | db 102,15,56,220,209\r | |
2028 | dec ecx\r | |
2029 | movups xmm1,[edx]\r | |
2030 | lea edx,[16+edx]\r | |
2031 | jnz NEAR L$083enc1_loop_16\r | |
2032 | db 102,15,56,221,209\r | |
2033 | xorps xmm2,xmm7\r | |
2034 | movdqa xmm0,xmm7\r | |
2035 | movdqa xmm1,xmm6\r | |
2036 | movups [esi*1+edi],xmm2\r | |
2037 | jmp NEAR L$078done\r | |
2038 | align 16\r | |
2039 | L$080two:\r | |
2040 | lea ecx,[1+ebp]\r | |
2041 | mov edx,DWORD [112+esp]\r | |
2042 | bsf ecx,ecx\r | |
2043 | shl ecx,4\r | |
2044 | movdqu xmm6,[ebx]\r | |
2045 | movdqu xmm7,[ecx*1+ebx]\r | |
2046 | movdqu xmm2,[esi]\r | |
2047 | movdqu xmm3,[16+esi]\r | |
2048 | mov ecx,DWORD [240+edx]\r | |
2049 | pxor xmm6,xmm0\r | |
2050 | pxor xmm7,xmm6\r | |
2051 | pxor xmm1,xmm2\r | |
2052 | pxor xmm2,xmm6\r | |
2053 | pxor xmm1,xmm3\r | |
2054 | pxor xmm3,xmm7\r | |
2055 | movdqa xmm5,xmm1\r | |
2056 | mov edi,DWORD [120+esp]\r | |
2057 | call __aesni_encrypt2\r | |
2058 | xorps xmm2,xmm6\r | |
2059 | xorps xmm3,xmm7\r | |
2060 | movdqa xmm0,xmm7\r | |
2061 | movdqa xmm1,xmm5\r | |
2062 | movups [esi*1+edi],xmm2\r | |
2063 | movups [16+esi*1+edi],xmm3\r | |
2064 | jmp NEAR L$078done\r | |
2065 | align 16\r | |
2066 | L$081three:\r | |
2067 | lea ecx,[1+ebp]\r | |
2068 | mov edx,DWORD [112+esp]\r | |
2069 | bsf ecx,ecx\r | |
2070 | shl ecx,4\r | |
2071 | movdqu xmm5,[ebx]\r | |
2072 | movdqu xmm6,[ecx*1+ebx]\r | |
2073 | movdqa xmm7,xmm5\r | |
2074 | movdqu xmm2,[esi]\r | |
2075 | movdqu xmm3,[16+esi]\r | |
2076 | movdqu xmm4,[32+esi]\r | |
2077 | mov ecx,DWORD [240+edx]\r | |
2078 | pxor xmm5,xmm0\r | |
2079 | pxor xmm6,xmm5\r | |
2080 | pxor xmm7,xmm6\r | |
2081 | pxor xmm1,xmm2\r | |
2082 | pxor xmm2,xmm5\r | |
2083 | pxor xmm1,xmm3\r | |
2084 | pxor xmm3,xmm6\r | |
2085 | pxor xmm1,xmm4\r | |
2086 | pxor xmm4,xmm7\r | |
2087 | movdqa [96+esp],xmm1\r | |
2088 | mov edi,DWORD [120+esp]\r | |
2089 | call __aesni_encrypt3\r | |
2090 | xorps xmm2,xmm5\r | |
2091 | xorps xmm3,xmm6\r | |
2092 | xorps xmm4,xmm7\r | |
2093 | movdqa xmm0,xmm7\r | |
2094 | movdqa xmm1,[96+esp]\r | |
2095 | movups [esi*1+edi],xmm2\r | |
2096 | movups [16+esi*1+edi],xmm3\r | |
2097 | movups [32+esi*1+edi],xmm4\r | |
2098 | jmp NEAR L$078done\r | |
2099 | align 16\r | |
2100 | L$082four:\r | |
2101 | lea ecx,[1+ebp]\r | |
2102 | lea eax,[3+ebp]\r | |
2103 | bsf ecx,ecx\r | |
2104 | bsf eax,eax\r | |
2105 | mov edx,DWORD [112+esp]\r | |
2106 | shl ecx,4\r | |
2107 | shl eax,4\r | |
2108 | movdqu xmm4,[ebx]\r | |
2109 | movdqu xmm5,[ecx*1+ebx]\r | |
2110 | movdqa xmm6,xmm4\r | |
2111 | movdqu xmm7,[eax*1+ebx]\r | |
2112 | pxor xmm4,xmm0\r | |
2113 | movdqu xmm2,[esi]\r | |
2114 | pxor xmm5,xmm4\r | |
2115 | movdqu xmm3,[16+esi]\r | |
2116 | pxor xmm6,xmm5\r | |
2117 | movdqa [esp],xmm4\r | |
2118 | pxor xmm7,xmm6\r | |
2119 | movdqa [16+esp],xmm5\r | |
2120 | movdqu xmm4,[32+esi]\r | |
2121 | movdqu xmm5,[48+esi]\r | |
2122 | mov ecx,DWORD [240+edx]\r | |
2123 | pxor xmm1,xmm2\r | |
2124 | pxor xmm2,[esp]\r | |
2125 | pxor xmm1,xmm3\r | |
2126 | pxor xmm3,[16+esp]\r | |
2127 | pxor xmm1,xmm4\r | |
2128 | pxor xmm4,xmm6\r | |
2129 | pxor xmm1,xmm5\r | |
2130 | pxor xmm5,xmm7\r | |
2131 | movdqa [96+esp],xmm1\r | |
2132 | mov edi,DWORD [120+esp]\r | |
2133 | call __aesni_encrypt4\r | |
2134 | xorps xmm2,[esp]\r | |
2135 | xorps xmm3,[16+esp]\r | |
2136 | xorps xmm4,xmm6\r | |
2137 | movups [esi*1+edi],xmm2\r | |
2138 | xorps xmm5,xmm7\r | |
2139 | movups [16+esi*1+edi],xmm3\r | |
2140 | movdqa xmm0,xmm7\r | |
2141 | movups [32+esi*1+edi],xmm4\r | |
2142 | movdqa xmm1,[96+esp]\r | |
2143 | movups [48+esi*1+edi],xmm5\r | |
2144 | L$078done:\r | |
2145 | mov edx,DWORD [128+esp]\r | |
2146 | pxor xmm2,xmm2\r | |
2147 | pxor xmm3,xmm3\r | |
2148 | movdqa [esp],xmm2\r | |
2149 | pxor xmm4,xmm4\r | |
2150 | movdqa [16+esp],xmm2\r | |
2151 | pxor xmm5,xmm5\r | |
2152 | movdqa [32+esp],xmm2\r | |
2153 | pxor xmm6,xmm6\r | |
2154 | movdqa [48+esp],xmm2\r | |
2155 | pxor xmm7,xmm7\r | |
2156 | movdqa [64+esp],xmm2\r | |
2157 | movdqa [80+esp],xmm2\r | |
2158 | movdqa [96+esp],xmm2\r | |
2159 | lea esp,[edx]\r | |
2160 | mov ecx,DWORD [40+esp]\r | |
2161 | mov ebx,DWORD [48+esp]\r | |
2162 | movdqu [ecx],xmm0\r | |
2163 | pxor xmm0,xmm0\r | |
2164 | movdqu [ebx],xmm1\r | |
2165 | pxor xmm1,xmm1\r | |
2166 | pop edi\r | |
2167 | pop esi\r | |
2168 | pop ebx\r | |
2169 | pop ebp\r | |
2170 | ret\r | |
2171 | global _aesni_ocb_decrypt\r | |
2172 | align 16\r | |
2173 | _aesni_ocb_decrypt:\r | |
2174 | L$_aesni_ocb_decrypt_begin:\r | |
2175 | push ebp\r | |
2176 | push ebx\r | |
2177 | push esi\r | |
2178 | push edi\r | |
2179 | mov ecx,DWORD [40+esp]\r | |
2180 | mov ebx,DWORD [48+esp]\r | |
2181 | mov esi,DWORD [20+esp]\r | |
2182 | mov edi,DWORD [24+esp]\r | |
2183 | mov eax,DWORD [28+esp]\r | |
2184 | mov edx,DWORD [32+esp]\r | |
2185 | movdqu xmm0,[ecx]\r | |
2186 | mov ebp,DWORD [36+esp]\r | |
2187 | movdqu xmm1,[ebx]\r | |
2188 | mov ebx,DWORD [44+esp]\r | |
2189 | mov ecx,esp\r | |
2190 | sub esp,132\r | |
2191 | and esp,-16\r | |
2192 | sub edi,esi\r | |
2193 | shl eax,4\r | |
2194 | lea eax,[eax*1+esi-96]\r | |
2195 | mov DWORD [120+esp],edi\r | |
2196 | mov DWORD [124+esp],eax\r | |
2197 | mov DWORD [128+esp],ecx\r | |
2198 | mov ecx,DWORD [240+edx]\r | |
2199 | test ebp,1\r | |
2200 | jnz NEAR L$084odd\r | |
2201 | bsf eax,ebp\r | |
2202 | add ebp,1\r | |
2203 | shl eax,4\r | |
2204 | movdqu xmm7,[eax*1+ebx]\r | |
2205 | mov eax,edx\r | |
2206 | movdqu xmm2,[esi]\r | |
2207 | lea esi,[16+esi]\r | |
2208 | pxor xmm7,xmm0\r | |
2209 | pxor xmm2,xmm7\r | |
2210 | movdqa xmm6,xmm1\r | |
2211 | movups xmm0,[edx]\r | |
2212 | movups xmm1,[16+edx]\r | |
2213 | lea edx,[32+edx]\r | |
2214 | xorps xmm2,xmm0\r | |
2215 | L$085dec1_loop_17:\r | |
2216 | db 102,15,56,222,209\r | |
2217 | dec ecx\r | |
2218 | movups xmm1,[edx]\r | |
2219 | lea edx,[16+edx]\r | |
2220 | jnz NEAR L$085dec1_loop_17\r | |
2221 | db 102,15,56,223,209\r | |
2222 | xorps xmm2,xmm7\r | |
2223 | movaps xmm1,xmm6\r | |
2224 | movdqa xmm0,xmm7\r | |
2225 | xorps xmm1,xmm2\r | |
2226 | movups [esi*1+edi-16],xmm2\r | |
2227 | mov ecx,DWORD [240+eax]\r | |
2228 | mov edx,eax\r | |
2229 | mov eax,DWORD [124+esp]\r | |
2230 | L$084odd:\r | |
2231 | shl ecx,4\r | |
2232 | mov edi,16\r | |
2233 | sub edi,ecx\r | |
2234 | mov DWORD [112+esp],edx\r | |
2235 | lea edx,[32+ecx*1+edx]\r | |
2236 | mov DWORD [116+esp],edi\r | |
2237 | cmp esi,eax\r | |
2238 | ja NEAR L$086short\r | |
2239 | jmp NEAR L$087grandloop\r | |
2240 | align 32\r | |
2241 | L$087grandloop:\r | |
2242 | lea ecx,[1+ebp]\r | |
2243 | lea eax,[3+ebp]\r | |
2244 | lea edi,[5+ebp]\r | |
2245 | add ebp,6\r | |
2246 | bsf ecx,ecx\r | |
2247 | bsf eax,eax\r | |
2248 | bsf edi,edi\r | |
2249 | shl ecx,4\r | |
2250 | shl eax,4\r | |
2251 | shl edi,4\r | |
2252 | movdqu xmm2,[ebx]\r | |
2253 | movdqu xmm3,[ecx*1+ebx]\r | |
2254 | mov ecx,DWORD [116+esp]\r | |
2255 | movdqa xmm4,xmm2\r | |
2256 | movdqu xmm5,[eax*1+ebx]\r | |
2257 | movdqa xmm6,xmm2\r | |
2258 | movdqu xmm7,[edi*1+ebx]\r | |
2259 | pxor xmm2,xmm0\r | |
2260 | pxor xmm3,xmm2\r | |
2261 | movdqa [esp],xmm2\r | |
2262 | pxor xmm4,xmm3\r | |
2263 | movdqa [16+esp],xmm3\r | |
2264 | pxor xmm5,xmm4\r | |
2265 | movdqa [32+esp],xmm4\r | |
2266 | pxor xmm6,xmm5\r | |
2267 | movdqa [48+esp],xmm5\r | |
2268 | pxor xmm7,xmm6\r | |
2269 | movdqa [64+esp],xmm6\r | |
2270 | movdqa [80+esp],xmm7\r | |
2271 | movups xmm0,[ecx*1+edx-48]\r | |
2272 | movdqu xmm2,[esi]\r | |
2273 | movdqu xmm3,[16+esi]\r | |
2274 | movdqu xmm4,[32+esi]\r | |
2275 | movdqu xmm5,[48+esi]\r | |
2276 | movdqu xmm6,[64+esi]\r | |
2277 | movdqu xmm7,[80+esi]\r | |
2278 | lea esi,[96+esi]\r | |
2279 | movdqa [96+esp],xmm1\r | |
2280 | pxor xmm2,xmm0\r | |
2281 | pxor xmm3,xmm0\r | |
2282 | pxor xmm4,xmm0\r | |
2283 | pxor xmm5,xmm0\r | |
2284 | pxor xmm6,xmm0\r | |
2285 | pxor xmm7,xmm0\r | |
2286 | movups xmm1,[ecx*1+edx-32]\r | |
2287 | pxor xmm2,[esp]\r | |
2288 | pxor xmm3,[16+esp]\r | |
2289 | pxor xmm4,[32+esp]\r | |
2290 | pxor xmm5,[48+esp]\r | |
2291 | pxor xmm6,[64+esp]\r | |
2292 | pxor xmm7,[80+esp]\r | |
2293 | movups xmm0,[ecx*1+edx-16]\r | |
2294 | db 102,15,56,222,209\r | |
2295 | db 102,15,56,222,217\r | |
2296 | db 102,15,56,222,225\r | |
2297 | db 102,15,56,222,233\r | |
2298 | db 102,15,56,222,241\r | |
2299 | db 102,15,56,222,249\r | |
2300 | mov edi,DWORD [120+esp]\r | |
2301 | mov eax,DWORD [124+esp]\r | |
2302 | call L$_aesni_decrypt6_enter\r | |
2303 | movdqa xmm0,[80+esp]\r | |
2304 | pxor xmm2,[esp]\r | |
2305 | movdqa xmm1,[96+esp]\r | |
2306 | pxor xmm3,[16+esp]\r | |
2307 | pxor xmm4,[32+esp]\r | |
2308 | pxor xmm5,[48+esp]\r | |
2309 | pxor xmm6,[64+esp]\r | |
2310 | pxor xmm7,xmm0\r | |
2311 | pxor xmm1,xmm2\r | |
2312 | movdqu [esi*1+edi-96],xmm2\r | |
2313 | pxor xmm1,xmm3\r | |
2314 | movdqu [esi*1+edi-80],xmm3\r | |
2315 | pxor xmm1,xmm4\r | |
2316 | movdqu [esi*1+edi-64],xmm4\r | |
2317 | pxor xmm1,xmm5\r | |
2318 | movdqu [esi*1+edi-48],xmm5\r | |
2319 | pxor xmm1,xmm6\r | |
2320 | movdqu [esi*1+edi-32],xmm6\r | |
2321 | pxor xmm1,xmm7\r | |
2322 | movdqu [esi*1+edi-16],xmm7\r | |
2323 | cmp esi,eax\r | |
2324 | jb NEAR L$087grandloop\r | |
2325 | L$086short:\r | |
2326 | add eax,96\r | |
2327 | sub eax,esi\r | |
2328 | jz NEAR L$088done\r | |
2329 | cmp eax,32\r | |
2330 | jb NEAR L$089one\r | |
2331 | je NEAR L$090two\r | |
2332 | cmp eax,64\r | |
2333 | jb NEAR L$091three\r | |
2334 | je NEAR L$092four\r | |
2335 | lea ecx,[1+ebp]\r | |
2336 | lea eax,[3+ebp]\r | |
2337 | bsf ecx,ecx\r | |
2338 | bsf eax,eax\r | |
2339 | shl ecx,4\r | |
2340 | shl eax,4\r | |
2341 | movdqu xmm2,[ebx]\r | |
2342 | movdqu xmm3,[ecx*1+ebx]\r | |
2343 | mov ecx,DWORD [116+esp]\r | |
2344 | movdqa xmm4,xmm2\r | |
2345 | movdqu xmm5,[eax*1+ebx]\r | |
2346 | movdqa xmm6,xmm2\r | |
2347 | pxor xmm2,xmm0\r | |
2348 | pxor xmm3,xmm2\r | |
2349 | movdqa [esp],xmm2\r | |
2350 | pxor xmm4,xmm3\r | |
2351 | movdqa [16+esp],xmm3\r | |
2352 | pxor xmm5,xmm4\r | |
2353 | movdqa [32+esp],xmm4\r | |
2354 | pxor xmm6,xmm5\r | |
2355 | movdqa [48+esp],xmm5\r | |
2356 | pxor xmm7,xmm6\r | |
2357 | movdqa [64+esp],xmm6\r | |
2358 | movups xmm0,[ecx*1+edx-48]\r | |
2359 | movdqu xmm2,[esi]\r | |
2360 | movdqu xmm3,[16+esi]\r | |
2361 | movdqu xmm4,[32+esi]\r | |
2362 | movdqu xmm5,[48+esi]\r | |
2363 | movdqu xmm6,[64+esi]\r | |
2364 | pxor xmm7,xmm7\r | |
2365 | movdqa [96+esp],xmm1\r | |
2366 | pxor xmm2,xmm0\r | |
2367 | pxor xmm3,xmm0\r | |
2368 | pxor xmm4,xmm0\r | |
2369 | pxor xmm5,xmm0\r | |
2370 | pxor xmm6,xmm0\r | |
2371 | movups xmm1,[ecx*1+edx-32]\r | |
2372 | pxor xmm2,[esp]\r | |
2373 | pxor xmm3,[16+esp]\r | |
2374 | pxor xmm4,[32+esp]\r | |
2375 | pxor xmm5,[48+esp]\r | |
2376 | pxor xmm6,[64+esp]\r | |
2377 | movups xmm0,[ecx*1+edx-16]\r | |
2378 | db 102,15,56,222,209\r | |
2379 | db 102,15,56,222,217\r | |
2380 | db 102,15,56,222,225\r | |
2381 | db 102,15,56,222,233\r | |
2382 | db 102,15,56,222,241\r | |
2383 | db 102,15,56,222,249\r | |
2384 | mov edi,DWORD [120+esp]\r | |
2385 | call L$_aesni_decrypt6_enter\r | |
2386 | movdqa xmm0,[64+esp]\r | |
2387 | pxor xmm2,[esp]\r | |
2388 | movdqa xmm1,[96+esp]\r | |
2389 | pxor xmm3,[16+esp]\r | |
2390 | pxor xmm4,[32+esp]\r | |
2391 | pxor xmm5,[48+esp]\r | |
2392 | pxor xmm6,xmm0\r | |
2393 | pxor xmm1,xmm2\r | |
2394 | movdqu [esi*1+edi],xmm2\r | |
2395 | pxor xmm1,xmm3\r | |
2396 | movdqu [16+esi*1+edi],xmm3\r | |
2397 | pxor xmm1,xmm4\r | |
2398 | movdqu [32+esi*1+edi],xmm4\r | |
2399 | pxor xmm1,xmm5\r | |
2400 | movdqu [48+esi*1+edi],xmm5\r | |
2401 | pxor xmm1,xmm6\r | |
2402 | movdqu [64+esi*1+edi],xmm6\r | |
2403 | jmp NEAR L$088done\r | |
2404 | align 16\r | |
2405 | L$089one:\r | |
2406 | movdqu xmm7,[ebx]\r | |
2407 | mov edx,DWORD [112+esp]\r | |
2408 | movdqu xmm2,[esi]\r | |
2409 | mov ecx,DWORD [240+edx]\r | |
2410 | pxor xmm7,xmm0\r | |
2411 | pxor xmm2,xmm7\r | |
2412 | movdqa xmm6,xmm1\r | |
2413 | mov edi,DWORD [120+esp]\r | |
2414 | movups xmm0,[edx]\r | |
2415 | movups xmm1,[16+edx]\r | |
2416 | lea edx,[32+edx]\r | |
2417 | xorps xmm2,xmm0\r | |
2418 | L$093dec1_loop_18:\r | |
2419 | db 102,15,56,222,209\r | |
2420 | dec ecx\r | |
2421 | movups xmm1,[edx]\r | |
2422 | lea edx,[16+edx]\r | |
2423 | jnz NEAR L$093dec1_loop_18\r | |
2424 | db 102,15,56,223,209\r | |
2425 | xorps xmm2,xmm7\r | |
2426 | movaps xmm1,xmm6\r | |
2427 | movdqa xmm0,xmm7\r | |
2428 | xorps xmm1,xmm2\r | |
2429 | movups [esi*1+edi],xmm2\r | |
2430 | jmp NEAR L$088done\r | |
2431 | align 16\r | |
2432 | L$090two:\r | |
2433 | lea ecx,[1+ebp]\r | |
2434 | mov edx,DWORD [112+esp]\r | |
2435 | bsf ecx,ecx\r | |
2436 | shl ecx,4\r | |
2437 | movdqu xmm6,[ebx]\r | |
2438 | movdqu xmm7,[ecx*1+ebx]\r | |
2439 | movdqu xmm2,[esi]\r | |
2440 | movdqu xmm3,[16+esi]\r | |
2441 | mov ecx,DWORD [240+edx]\r | |
2442 | movdqa xmm5,xmm1\r | |
2443 | pxor xmm6,xmm0\r | |
2444 | pxor xmm7,xmm6\r | |
2445 | pxor xmm2,xmm6\r | |
2446 | pxor xmm3,xmm7\r | |
2447 | mov edi,DWORD [120+esp]\r | |
2448 | call __aesni_decrypt2\r | |
2449 | xorps xmm2,xmm6\r | |
2450 | xorps xmm3,xmm7\r | |
2451 | movdqa xmm0,xmm7\r | |
2452 | xorps xmm5,xmm2\r | |
2453 | movups [esi*1+edi],xmm2\r | |
2454 | xorps xmm5,xmm3\r | |
2455 | movups [16+esi*1+edi],xmm3\r | |
2456 | movaps xmm1,xmm5\r | |
2457 | jmp NEAR L$088done\r | |
2458 | align 16\r | |
2459 | L$091three:\r | |
2460 | lea ecx,[1+ebp]\r | |
2461 | mov edx,DWORD [112+esp]\r | |
2462 | bsf ecx,ecx\r | |
2463 | shl ecx,4\r | |
2464 | movdqu xmm5,[ebx]\r | |
2465 | movdqu xmm6,[ecx*1+ebx]\r | |
2466 | movdqa xmm7,xmm5\r | |
2467 | movdqu xmm2,[esi]\r | |
2468 | movdqu xmm3,[16+esi]\r | |
2469 | movdqu xmm4,[32+esi]\r | |
2470 | mov ecx,DWORD [240+edx]\r | |
2471 | movdqa [96+esp],xmm1\r | |
2472 | pxor xmm5,xmm0\r | |
2473 | pxor xmm6,xmm5\r | |
2474 | pxor xmm7,xmm6\r | |
2475 | pxor xmm2,xmm5\r | |
2476 | pxor xmm3,xmm6\r | |
2477 | pxor xmm4,xmm7\r | |
2478 | mov edi,DWORD [120+esp]\r | |
2479 | call __aesni_decrypt3\r | |
2480 | movdqa xmm1,[96+esp]\r | |
2481 | xorps xmm2,xmm5\r | |
2482 | xorps xmm3,xmm6\r | |
2483 | xorps xmm4,xmm7\r | |
2484 | movups [esi*1+edi],xmm2\r | |
2485 | pxor xmm1,xmm2\r | |
2486 | movdqa xmm0,xmm7\r | |
2487 | movups [16+esi*1+edi],xmm3\r | |
2488 | pxor xmm1,xmm3\r | |
2489 | movups [32+esi*1+edi],xmm4\r | |
2490 | pxor xmm1,xmm4\r | |
2491 | jmp NEAR L$088done\r | |
2492 | align 16\r | |
2493 | L$092four:\r | |
2494 | lea ecx,[1+ebp]\r | |
2495 | lea eax,[3+ebp]\r | |
2496 | bsf ecx,ecx\r | |
2497 | bsf eax,eax\r | |
2498 | mov edx,DWORD [112+esp]\r | |
2499 | shl ecx,4\r | |
2500 | shl eax,4\r | |
2501 | movdqu xmm4,[ebx]\r | |
2502 | movdqu xmm5,[ecx*1+ebx]\r | |
2503 | movdqa xmm6,xmm4\r | |
2504 | movdqu xmm7,[eax*1+ebx]\r | |
2505 | pxor xmm4,xmm0\r | |
2506 | movdqu xmm2,[esi]\r | |
2507 | pxor xmm5,xmm4\r | |
2508 | movdqu xmm3,[16+esi]\r | |
2509 | pxor xmm6,xmm5\r | |
2510 | movdqa [esp],xmm4\r | |
2511 | pxor xmm7,xmm6\r | |
2512 | movdqa [16+esp],xmm5\r | |
2513 | movdqu xmm4,[32+esi]\r | |
2514 | movdqu xmm5,[48+esi]\r | |
2515 | mov ecx,DWORD [240+edx]\r | |
2516 | movdqa [96+esp],xmm1\r | |
2517 | pxor xmm2,[esp]\r | |
2518 | pxor xmm3,[16+esp]\r | |
2519 | pxor xmm4,xmm6\r | |
2520 | pxor xmm5,xmm7\r | |
2521 | mov edi,DWORD [120+esp]\r | |
2522 | call __aesni_decrypt4\r | |
2523 | movdqa xmm1,[96+esp]\r | |
2524 | xorps xmm2,[esp]\r | |
2525 | xorps xmm3,[16+esp]\r | |
2526 | xorps xmm4,xmm6\r | |
2527 | movups [esi*1+edi],xmm2\r | |
2528 | pxor xmm1,xmm2\r | |
2529 | xorps xmm5,xmm7\r | |
2530 | movups [16+esi*1+edi],xmm3\r | |
2531 | pxor xmm1,xmm3\r | |
2532 | movdqa xmm0,xmm7\r | |
2533 | movups [32+esi*1+edi],xmm4\r | |
2534 | pxor xmm1,xmm4\r | |
2535 | movups [48+esi*1+edi],xmm5\r | |
2536 | pxor xmm1,xmm5\r | |
2537 | L$088done:\r | |
2538 | mov edx,DWORD [128+esp]\r | |
2539 | pxor xmm2,xmm2\r | |
2540 | pxor xmm3,xmm3\r | |
2541 | movdqa [esp],xmm2\r | |
2542 | pxor xmm4,xmm4\r | |
2543 | movdqa [16+esp],xmm2\r | |
2544 | pxor xmm5,xmm5\r | |
2545 | movdqa [32+esp],xmm2\r | |
2546 | pxor xmm6,xmm6\r | |
2547 | movdqa [48+esp],xmm2\r | |
2548 | pxor xmm7,xmm7\r | |
2549 | movdqa [64+esp],xmm2\r | |
2550 | movdqa [80+esp],xmm2\r | |
2551 | movdqa [96+esp],xmm2\r | |
2552 | lea esp,[edx]\r | |
2553 | mov ecx,DWORD [40+esp]\r | |
2554 | mov ebx,DWORD [48+esp]\r | |
2555 | movdqu [ecx],xmm0\r | |
2556 | pxor xmm0,xmm0\r | |
2557 | movdqu [ebx],xmm1\r | |
2558 | pxor xmm1,xmm1\r | |
2559 | pop edi\r | |
2560 | pop esi\r | |
2561 | pop ebx\r | |
2562 | pop ebp\r | |
2563 | ret\r | |
2564 | global _aesni_cbc_encrypt\r | |
2565 | align 16\r | |
2566 | _aesni_cbc_encrypt:\r | |
2567 | L$_aesni_cbc_encrypt_begin:\r | |
2568 | push ebp\r | |
2569 | push ebx\r | |
2570 | push esi\r | |
2571 | push edi\r | |
2572 | mov esi,DWORD [20+esp]\r | |
2573 | mov ebx,esp\r | |
2574 | mov edi,DWORD [24+esp]\r | |
2575 | sub ebx,24\r | |
2576 | mov eax,DWORD [28+esp]\r | |
2577 | and ebx,-16\r | |
2578 | mov edx,DWORD [32+esp]\r | |
2579 | mov ebp,DWORD [36+esp]\r | |
2580 | test eax,eax\r | |
2581 | jz NEAR L$094cbc_abort\r | |
2582 | cmp DWORD [40+esp],0\r | |
2583 | xchg ebx,esp\r | |
2584 | movups xmm7,[ebp]\r | |
2585 | mov ecx,DWORD [240+edx]\r | |
2586 | mov ebp,edx\r | |
2587 | mov DWORD [16+esp],ebx\r | |
2588 | mov ebx,ecx\r | |
2589 | je NEAR L$095cbc_decrypt\r | |
2590 | movaps xmm2,xmm7\r | |
2591 | cmp eax,16\r | |
2592 | jb NEAR L$096cbc_enc_tail\r | |
2593 | sub eax,16\r | |
2594 | jmp NEAR L$097cbc_enc_loop\r | |
2595 | align 16\r | |
2596 | L$097cbc_enc_loop:\r | |
2597 | movups xmm7,[esi]\r | |
2598 | lea esi,[16+esi]\r | |
2599 | movups xmm0,[edx]\r | |
2600 | movups xmm1,[16+edx]\r | |
2601 | xorps xmm7,xmm0\r | |
2602 | lea edx,[32+edx]\r | |
2603 | xorps xmm2,xmm7\r | |
2604 | L$098enc1_loop_19:\r | |
2605 | db 102,15,56,220,209\r | |
2606 | dec ecx\r | |
2607 | movups xmm1,[edx]\r | |
2608 | lea edx,[16+edx]\r | |
2609 | jnz NEAR L$098enc1_loop_19\r | |
2610 | db 102,15,56,221,209\r | |
2611 | mov ecx,ebx\r | |
2612 | mov edx,ebp\r | |
2613 | movups [edi],xmm2\r | |
2614 | lea edi,[16+edi]\r | |
2615 | sub eax,16\r | |
2616 | jnc NEAR L$097cbc_enc_loop\r | |
2617 | add eax,16\r | |
2618 | jnz NEAR L$096cbc_enc_tail\r | |
2619 | movaps xmm7,xmm2\r | |
2620 | pxor xmm2,xmm2\r | |
2621 | jmp NEAR L$099cbc_ret\r | |
2622 | L$096cbc_enc_tail:\r | |
2623 | mov ecx,eax\r | |
2624 | dd 2767451785\r | |
2625 | mov ecx,16\r | |
2626 | sub ecx,eax\r | |
2627 | xor eax,eax\r | |
2628 | dd 2868115081\r | |
2629 | lea edi,[edi-16]\r | |
2630 | mov ecx,ebx\r | |
2631 | mov esi,edi\r | |
2632 | mov edx,ebp\r | |
2633 | jmp NEAR L$097cbc_enc_loop\r | |
2634 | align 16\r | |
2635 | L$095cbc_decrypt:\r | |
2636 | cmp eax,80\r | |
2637 | jbe NEAR L$100cbc_dec_tail\r | |
2638 | movaps [esp],xmm7\r | |
2639 | sub eax,80\r | |
2640 | jmp NEAR L$101cbc_dec_loop6_enter\r | |
2641 | align 16\r | |
2642 | L$102cbc_dec_loop6:\r | |
2643 | movaps [esp],xmm0\r | |
2644 | movups [edi],xmm7\r | |
2645 | lea edi,[16+edi]\r | |
2646 | L$101cbc_dec_loop6_enter:\r | |
2647 | movdqu xmm2,[esi]\r | |
2648 | movdqu xmm3,[16+esi]\r | |
2649 | movdqu xmm4,[32+esi]\r | |
2650 | movdqu xmm5,[48+esi]\r | |
2651 | movdqu xmm6,[64+esi]\r | |
2652 | movdqu xmm7,[80+esi]\r | |
2653 | call __aesni_decrypt6\r | |
2654 | movups xmm1,[esi]\r | |
2655 | movups xmm0,[16+esi]\r | |
2656 | xorps xmm2,[esp]\r | |
2657 | xorps xmm3,xmm1\r | |
2658 | movups xmm1,[32+esi]\r | |
2659 | xorps xmm4,xmm0\r | |
2660 | movups xmm0,[48+esi]\r | |
2661 | xorps xmm5,xmm1\r | |
2662 | movups xmm1,[64+esi]\r | |
2663 | xorps xmm6,xmm0\r | |
2664 | movups xmm0,[80+esi]\r | |
2665 | xorps xmm7,xmm1\r | |
2666 | movups [edi],xmm2\r | |
2667 | movups [16+edi],xmm3\r | |
2668 | lea esi,[96+esi]\r | |
2669 | movups [32+edi],xmm4\r | |
2670 | mov ecx,ebx\r | |
2671 | movups [48+edi],xmm5\r | |
2672 | mov edx,ebp\r | |
2673 | movups [64+edi],xmm6\r | |
2674 | lea edi,[80+edi]\r | |
2675 | sub eax,96\r | |
2676 | ja NEAR L$102cbc_dec_loop6\r | |
2677 | movaps xmm2,xmm7\r | |
2678 | movaps xmm7,xmm0\r | |
2679 | add eax,80\r | |
2680 | jle NEAR L$103cbc_dec_clear_tail_collected\r | |
2681 | movups [edi],xmm2\r | |
2682 | lea edi,[16+edi]\r | |
2683 | L$100cbc_dec_tail:\r | |
2684 | movups xmm2,[esi]\r | |
2685 | movaps xmm6,xmm2\r | |
2686 | cmp eax,16\r | |
2687 | jbe NEAR L$104cbc_dec_one\r | |
2688 | movups xmm3,[16+esi]\r | |
2689 | movaps xmm5,xmm3\r | |
2690 | cmp eax,32\r | |
2691 | jbe NEAR L$105cbc_dec_two\r | |
2692 | movups xmm4,[32+esi]\r | |
2693 | cmp eax,48\r | |
2694 | jbe NEAR L$106cbc_dec_three\r | |
2695 | movups xmm5,[48+esi]\r | |
2696 | cmp eax,64\r | |
2697 | jbe NEAR L$107cbc_dec_four\r | |
2698 | movups xmm6,[64+esi]\r | |
2699 | movaps [esp],xmm7\r | |
2700 | movups xmm2,[esi]\r | |
2701 | xorps xmm7,xmm7\r | |
2702 | call __aesni_decrypt6\r | |
2703 | movups xmm1,[esi]\r | |
2704 | movups xmm0,[16+esi]\r | |
2705 | xorps xmm2,[esp]\r | |
2706 | xorps xmm3,xmm1\r | |
2707 | movups xmm1,[32+esi]\r | |
2708 | xorps xmm4,xmm0\r | |
2709 | movups xmm0,[48+esi]\r | |
2710 | xorps xmm5,xmm1\r | |
2711 | movups xmm7,[64+esi]\r | |
2712 | xorps xmm6,xmm0\r | |
2713 | movups [edi],xmm2\r | |
2714 | movups [16+edi],xmm3\r | |
2715 | pxor xmm3,xmm3\r | |
2716 | movups [32+edi],xmm4\r | |
2717 | pxor xmm4,xmm4\r | |
2718 | movups [48+edi],xmm5\r | |
2719 | pxor xmm5,xmm5\r | |
2720 | lea edi,[64+edi]\r | |
2721 | movaps xmm2,xmm6\r | |
2722 | pxor xmm6,xmm6\r | |
2723 | sub eax,80\r | |
2724 | jmp NEAR L$108cbc_dec_tail_collected\r | |
2725 | align 16\r | |
2726 | L$104cbc_dec_one:\r | |
2727 | movups xmm0,[edx]\r | |
2728 | movups xmm1,[16+edx]\r | |
2729 | lea edx,[32+edx]\r | |
2730 | xorps xmm2,xmm0\r | |
2731 | L$109dec1_loop_20:\r | |
2732 | db 102,15,56,222,209\r | |
2733 | dec ecx\r | |
2734 | movups xmm1,[edx]\r | |
2735 | lea edx,[16+edx]\r | |
2736 | jnz NEAR L$109dec1_loop_20\r | |
2737 | db 102,15,56,223,209\r | |
2738 | xorps xmm2,xmm7\r | |
2739 | movaps xmm7,xmm6\r | |
2740 | sub eax,16\r | |
2741 | jmp NEAR L$108cbc_dec_tail_collected\r | |
2742 | align 16\r | |
2743 | L$105cbc_dec_two:\r | |
2744 | call __aesni_decrypt2\r | |
2745 | xorps xmm2,xmm7\r | |
2746 | xorps xmm3,xmm6\r | |
2747 | movups [edi],xmm2\r | |
2748 | movaps xmm2,xmm3\r | |
2749 | pxor xmm3,xmm3\r | |
2750 | lea edi,[16+edi]\r | |
2751 | movaps xmm7,xmm5\r | |
2752 | sub eax,32\r | |
2753 | jmp NEAR L$108cbc_dec_tail_collected\r | |
2754 | align 16\r | |
2755 | L$106cbc_dec_three:\r | |
2756 | call __aesni_decrypt3\r | |
2757 | xorps xmm2,xmm7\r | |
2758 | xorps xmm3,xmm6\r | |
2759 | xorps xmm4,xmm5\r | |
2760 | movups [edi],xmm2\r | |
2761 | movaps xmm2,xmm4\r | |
2762 | pxor xmm4,xmm4\r | |
2763 | movups [16+edi],xmm3\r | |
2764 | pxor xmm3,xmm3\r | |
2765 | lea edi,[32+edi]\r | |
2766 | movups xmm7,[32+esi]\r | |
2767 | sub eax,48\r | |
2768 | jmp NEAR L$108cbc_dec_tail_collected\r | |
2769 | align 16\r | |
2770 | L$107cbc_dec_four:\r | |
2771 | call __aesni_decrypt4\r | |
2772 | movups xmm1,[16+esi]\r | |
2773 | movups xmm0,[32+esi]\r | |
2774 | xorps xmm2,xmm7\r | |
2775 | movups xmm7,[48+esi]\r | |
2776 | xorps xmm3,xmm6\r | |
2777 | movups [edi],xmm2\r | |
2778 | xorps xmm4,xmm1\r | |
2779 | movups [16+edi],xmm3\r | |
2780 | pxor xmm3,xmm3\r | |
2781 | xorps xmm5,xmm0\r | |
2782 | movups [32+edi],xmm4\r | |
2783 | pxor xmm4,xmm4\r | |
2784 | lea edi,[48+edi]\r | |
2785 | movaps xmm2,xmm5\r | |
2786 | pxor xmm5,xmm5\r | |
2787 | sub eax,64\r | |
2788 | jmp NEAR L$108cbc_dec_tail_collected\r | |
2789 | align 16\r | |
2790 | L$103cbc_dec_clear_tail_collected:\r | |
2791 | pxor xmm3,xmm3\r | |
2792 | pxor xmm4,xmm4\r | |
2793 | pxor xmm5,xmm5\r | |
2794 | pxor xmm6,xmm6\r | |
2795 | L$108cbc_dec_tail_collected:\r | |
2796 | and eax,15\r | |
2797 | jnz NEAR L$110cbc_dec_tail_partial\r | |
2798 | movups [edi],xmm2\r | |
2799 | pxor xmm0,xmm0\r | |
2800 | jmp NEAR L$099cbc_ret\r | |
2801 | align 16\r | |
2802 | L$110cbc_dec_tail_partial:\r | |
2803 | movaps [esp],xmm2\r | |
2804 | pxor xmm0,xmm0\r | |
2805 | mov ecx,16\r | |
2806 | mov esi,esp\r | |
2807 | sub ecx,eax\r | |
2808 | dd 2767451785\r | |
2809 | movdqa [esp],xmm2\r | |
2810 | L$099cbc_ret:\r | |
2811 | mov esp,DWORD [16+esp]\r | |
2812 | mov ebp,DWORD [36+esp]\r | |
2813 | pxor xmm2,xmm2\r | |
2814 | pxor xmm1,xmm1\r | |
2815 | movups [ebp],xmm7\r | |
2816 | pxor xmm7,xmm7\r | |
2817 | L$094cbc_abort:\r | |
2818 | pop edi\r | |
2819 | pop esi\r | |
2820 | pop ebx\r | |
2821 | pop ebp\r | |
2822 | ret\r | |
2823 | align 16\r | |
2824 | __aesni_set_encrypt_key:\r | |
2825 | push ebp\r | |
2826 | push ebx\r | |
2827 | test eax,eax\r | |
2828 | jz NEAR L$111bad_pointer\r | |
2829 | test edx,edx\r | |
2830 | jz NEAR L$111bad_pointer\r | |
2831 | call L$112pic\r | |
2832 | L$112pic:\r | |
2833 | pop ebx\r | |
2834 | lea ebx,[(L$key_const-L$112pic)+ebx]\r | |
2835 | lea ebp,[_OPENSSL_ia32cap_P]\r | |
2836 | movups xmm0,[eax]\r | |
2837 | xorps xmm4,xmm4\r | |
2838 | mov ebp,DWORD [4+ebp]\r | |
2839 | lea edx,[16+edx]\r | |
2840 | and ebp,268437504\r | |
2841 | cmp ecx,256\r | |
2842 | je NEAR L$11314rounds\r | |
2843 | cmp ecx,192\r | |
2844 | je NEAR L$11412rounds\r | |
2845 | cmp ecx,128\r | |
2846 | jne NEAR L$115bad_keybits\r | |
2847 | align 16\r | |
2848 | L$11610rounds:\r | |
2849 | cmp ebp,268435456\r | |
2850 | je NEAR L$11710rounds_alt\r | |
2851 | mov ecx,9\r | |
2852 | movups [edx-16],xmm0\r | |
2853 | db 102,15,58,223,200,1\r | |
2854 | call L$118key_128_cold\r | |
2855 | db 102,15,58,223,200,2\r | |
2856 | call L$119key_128\r | |
2857 | db 102,15,58,223,200,4\r | |
2858 | call L$119key_128\r | |
2859 | db 102,15,58,223,200,8\r | |
2860 | call L$119key_128\r | |
2861 | db 102,15,58,223,200,16\r | |
2862 | call L$119key_128\r | |
2863 | db 102,15,58,223,200,32\r | |
2864 | call L$119key_128\r | |
2865 | db 102,15,58,223,200,64\r | |
2866 | call L$119key_128\r | |
2867 | db 102,15,58,223,200,128\r | |
2868 | call L$119key_128\r | |
2869 | db 102,15,58,223,200,27\r | |
2870 | call L$119key_128\r | |
2871 | db 102,15,58,223,200,54\r | |
2872 | call L$119key_128\r | |
2873 | movups [edx],xmm0\r | |
2874 | mov DWORD [80+edx],ecx\r | |
2875 | jmp NEAR L$120good_key\r | |
2876 | align 16\r | |
2877 | L$119key_128:\r | |
2878 | movups [edx],xmm0\r | |
2879 | lea edx,[16+edx]\r | |
2880 | L$118key_128_cold:\r | |
2881 | shufps xmm4,xmm0,16\r | |
2882 | xorps xmm0,xmm4\r | |
2883 | shufps xmm4,xmm0,140\r | |
2884 | xorps xmm0,xmm4\r | |
2885 | shufps xmm1,xmm1,255\r | |
2886 | xorps xmm0,xmm1\r | |
2887 | ret\r | |
2888 | align 16\r | |
2889 | L$11710rounds_alt:\r | |
2890 | movdqa xmm5,[ebx]\r | |
2891 | mov ecx,8\r | |
2892 | movdqa xmm4,[32+ebx]\r | |
2893 | movdqa xmm2,xmm0\r | |
2894 | movdqu [edx-16],xmm0\r | |
2895 | L$121loop_key128:\r | |
2896 | db 102,15,56,0,197\r | |
2897 | db 102,15,56,221,196\r | |
2898 | pslld xmm4,1\r | |
2899 | lea edx,[16+edx]\r | |
2900 | movdqa xmm3,xmm2\r | |
2901 | pslldq xmm2,4\r | |
2902 | pxor xmm3,xmm2\r | |
2903 | pslldq xmm2,4\r | |
2904 | pxor xmm3,xmm2\r | |
2905 | pslldq xmm2,4\r | |
2906 | pxor xmm2,xmm3\r | |
2907 | pxor xmm0,xmm2\r | |
2908 | movdqu [edx-16],xmm0\r | |
2909 | movdqa xmm2,xmm0\r | |
2910 | dec ecx\r | |
2911 | jnz NEAR L$121loop_key128\r | |
2912 | movdqa xmm4,[48+ebx]\r | |
2913 | db 102,15,56,0,197\r | |
2914 | db 102,15,56,221,196\r | |
2915 | pslld xmm4,1\r | |
2916 | movdqa xmm3,xmm2\r | |
2917 | pslldq xmm2,4\r | |
2918 | pxor xmm3,xmm2\r | |
2919 | pslldq xmm2,4\r | |
2920 | pxor xmm3,xmm2\r | |
2921 | pslldq xmm2,4\r | |
2922 | pxor xmm2,xmm3\r | |
2923 | pxor xmm0,xmm2\r | |
2924 | movdqu [edx],xmm0\r | |
2925 | movdqa xmm2,xmm0\r | |
2926 | db 102,15,56,0,197\r | |
2927 | db 102,15,56,221,196\r | |
2928 | movdqa xmm3,xmm2\r | |
2929 | pslldq xmm2,4\r | |
2930 | pxor xmm3,xmm2\r | |
2931 | pslldq xmm2,4\r | |
2932 | pxor xmm3,xmm2\r | |
2933 | pslldq xmm2,4\r | |
2934 | pxor xmm2,xmm3\r | |
2935 | pxor xmm0,xmm2\r | |
2936 | movdqu [16+edx],xmm0\r | |
2937 | mov ecx,9\r | |
2938 | mov DWORD [96+edx],ecx\r | |
2939 | jmp NEAR L$120good_key\r | |
2940 | align 16\r | |
2941 | L$11412rounds:\r | |
2942 | movq xmm2,[16+eax]\r | |
2943 | cmp ebp,268435456\r | |
2944 | je NEAR L$12212rounds_alt\r | |
2945 | mov ecx,11\r | |
2946 | movups [edx-16],xmm0\r | |
2947 | db 102,15,58,223,202,1\r | |
2948 | call L$123key_192a_cold\r | |
2949 | db 102,15,58,223,202,2\r | |
2950 | call L$124key_192b\r | |
2951 | db 102,15,58,223,202,4\r | |
2952 | call L$125key_192a\r | |
2953 | db 102,15,58,223,202,8\r | |
2954 | call L$124key_192b\r | |
2955 | db 102,15,58,223,202,16\r | |
2956 | call L$125key_192a\r | |
2957 | db 102,15,58,223,202,32\r | |
2958 | call L$124key_192b\r | |
2959 | db 102,15,58,223,202,64\r | |
2960 | call L$125key_192a\r | |
2961 | db 102,15,58,223,202,128\r | |
2962 | call L$124key_192b\r | |
2963 | movups [edx],xmm0\r | |
2964 | mov DWORD [48+edx],ecx\r | |
2965 | jmp NEAR L$120good_key\r | |
2966 | align 16\r | |
2967 | L$125key_192a:\r | |
2968 | movups [edx],xmm0\r | |
2969 | lea edx,[16+edx]\r | |
2970 | align 16\r | |
2971 | L$123key_192a_cold:\r | |
2972 | movaps xmm5,xmm2\r | |
2973 | L$126key_192b_warm:\r | |
2974 | shufps xmm4,xmm0,16\r | |
2975 | movdqa xmm3,xmm2\r | |
2976 | xorps xmm0,xmm4\r | |
2977 | shufps xmm4,xmm0,140\r | |
2978 | pslldq xmm3,4\r | |
2979 | xorps xmm0,xmm4\r | |
2980 | pshufd xmm1,xmm1,85\r | |
2981 | pxor xmm2,xmm3\r | |
2982 | pxor xmm0,xmm1\r | |
2983 | pshufd xmm3,xmm0,255\r | |
2984 | pxor xmm2,xmm3\r | |
2985 | ret\r | |
2986 | align 16\r | |
2987 | L$124key_192b:\r | |
2988 | movaps xmm3,xmm0\r | |
2989 | shufps xmm5,xmm0,68\r | |
2990 | movups [edx],xmm5\r | |
2991 | shufps xmm3,xmm2,78\r | |
2992 | movups [16+edx],xmm3\r | |
2993 | lea edx,[32+edx]\r | |
2994 | jmp NEAR L$126key_192b_warm\r | |
2995 | align 16\r | |
2996 | L$12212rounds_alt:\r | |
2997 | movdqa xmm5,[16+ebx]\r | |
2998 | movdqa xmm4,[32+ebx]\r | |
2999 | mov ecx,8\r | |
3000 | movdqu [edx-16],xmm0\r | |
3001 | L$127loop_key192:\r | |
3002 | movq [edx],xmm2\r | |
3003 | movdqa xmm1,xmm2\r | |
3004 | db 102,15,56,0,213\r | |
3005 | db 102,15,56,221,212\r | |
3006 | pslld xmm4,1\r | |
3007 | lea edx,[24+edx]\r | |
3008 | movdqa xmm3,xmm0\r | |
3009 | pslldq xmm0,4\r | |
3010 | pxor xmm3,xmm0\r | |
3011 | pslldq xmm0,4\r | |
3012 | pxor xmm3,xmm0\r | |
3013 | pslldq xmm0,4\r | |
3014 | pxor xmm0,xmm3\r | |
3015 | pshufd xmm3,xmm0,255\r | |
3016 | pxor xmm3,xmm1\r | |
3017 | pslldq xmm1,4\r | |
3018 | pxor xmm3,xmm1\r | |
3019 | pxor xmm0,xmm2\r | |
3020 | pxor xmm2,xmm3\r | |
3021 | movdqu [edx-16],xmm0\r | |
3022 | dec ecx\r | |
3023 | jnz NEAR L$127loop_key192\r | |
3024 | mov ecx,11\r | |
3025 | mov DWORD [32+edx],ecx\r | |
3026 | jmp NEAR L$120good_key\r | |
3027 | align 16\r | |
3028 | L$11314rounds:\r | |
3029 | movups xmm2,[16+eax]\r | |
3030 | lea edx,[16+edx]\r | |
3031 | cmp ebp,268435456\r | |
3032 | je NEAR L$12814rounds_alt\r | |
3033 | mov ecx,13\r | |
3034 | movups [edx-32],xmm0\r | |
3035 | movups [edx-16],xmm2\r | |
3036 | db 102,15,58,223,202,1\r | |
3037 | call L$129key_256a_cold\r | |
3038 | db 102,15,58,223,200,1\r | |
3039 | call L$130key_256b\r | |
3040 | db 102,15,58,223,202,2\r | |
3041 | call L$131key_256a\r | |
3042 | db 102,15,58,223,200,2\r | |
3043 | call L$130key_256b\r | |
3044 | db 102,15,58,223,202,4\r | |
3045 | call L$131key_256a\r | |
3046 | db 102,15,58,223,200,4\r | |
3047 | call L$130key_256b\r | |
3048 | db 102,15,58,223,202,8\r | |
3049 | call L$131key_256a\r | |
3050 | db 102,15,58,223,200,8\r | |
3051 | call L$130key_256b\r | |
3052 | db 102,15,58,223,202,16\r | |
3053 | call L$131key_256a\r | |
3054 | db 102,15,58,223,200,16\r | |
3055 | call L$130key_256b\r | |
3056 | db 102,15,58,223,202,32\r | |
3057 | call L$131key_256a\r | |
3058 | db 102,15,58,223,200,32\r | |
3059 | call L$130key_256b\r | |
3060 | db 102,15,58,223,202,64\r | |
3061 | call L$131key_256a\r | |
3062 | movups [edx],xmm0\r | |
3063 | mov DWORD [16+edx],ecx\r | |
3064 | xor eax,eax\r | |
3065 | jmp NEAR L$120good_key\r | |
3066 | align 16\r | |
3067 | L$131key_256a:\r | |
3068 | movups [edx],xmm2\r | |
3069 | lea edx,[16+edx]\r | |
3070 | L$129key_256a_cold:\r | |
3071 | shufps xmm4,xmm0,16\r | |
3072 | xorps xmm0,xmm4\r | |
3073 | shufps xmm4,xmm0,140\r | |
3074 | xorps xmm0,xmm4\r | |
3075 | shufps xmm1,xmm1,255\r | |
3076 | xorps xmm0,xmm1\r | |
3077 | ret\r | |
3078 | align 16\r | |
3079 | L$130key_256b:\r | |
3080 | movups [edx],xmm0\r | |
3081 | lea edx,[16+edx]\r | |
3082 | shufps xmm4,xmm2,16\r | |
3083 | xorps xmm2,xmm4\r | |
3084 | shufps xmm4,xmm2,140\r | |
3085 | xorps xmm2,xmm4\r | |
3086 | shufps xmm1,xmm1,170\r | |
3087 | xorps xmm2,xmm1\r | |
3088 | ret\r | |
3089 | align 16\r | |
3090 | L$12814rounds_alt:\r | |
3091 | movdqa xmm5,[ebx]\r | |
3092 | movdqa xmm4,[32+ebx]\r | |
3093 | mov ecx,7\r | |
3094 | movdqu [edx-32],xmm0\r | |
3095 | movdqa xmm1,xmm2\r | |
3096 | movdqu [edx-16],xmm2\r | |
3097 | L$132loop_key256:\r | |
3098 | db 102,15,56,0,213\r | |
3099 | db 102,15,56,221,212\r | |
3100 | movdqa xmm3,xmm0\r | |
3101 | pslldq xmm0,4\r | |
3102 | pxor xmm3,xmm0\r | |
3103 | pslldq xmm0,4\r | |
3104 | pxor xmm3,xmm0\r | |
3105 | pslldq xmm0,4\r | |
3106 | pxor xmm0,xmm3\r | |
3107 | pslld xmm4,1\r | |
3108 | pxor xmm0,xmm2\r | |
3109 | movdqu [edx],xmm0\r | |
3110 | dec ecx\r | |
3111 | jz NEAR L$133done_key256\r | |
3112 | pshufd xmm2,xmm0,255\r | |
3113 | pxor xmm3,xmm3\r | |
3114 | db 102,15,56,221,211\r | |
3115 | movdqa xmm3,xmm1\r | |
3116 | pslldq xmm1,4\r | |
3117 | pxor xmm3,xmm1\r | |
3118 | pslldq xmm1,4\r | |
3119 | pxor xmm3,xmm1\r | |
3120 | pslldq xmm1,4\r | |
3121 | pxor xmm1,xmm3\r | |
3122 | pxor xmm2,xmm1\r | |
3123 | movdqu [16+edx],xmm2\r | |
3124 | lea edx,[32+edx]\r | |
3125 | movdqa xmm1,xmm2\r | |
3126 | jmp NEAR L$132loop_key256\r | |
3127 | L$133done_key256:\r | |
3128 | mov ecx,13\r | |
3129 | mov DWORD [16+edx],ecx\r | |
3130 | L$120good_key:\r | |
3131 | pxor xmm0,xmm0\r | |
3132 | pxor xmm1,xmm1\r | |
3133 | pxor xmm2,xmm2\r | |
3134 | pxor xmm3,xmm3\r | |
3135 | pxor xmm4,xmm4\r | |
3136 | pxor xmm5,xmm5\r | |
3137 | xor eax,eax\r | |
3138 | pop ebx\r | |
3139 | pop ebp\r | |
3140 | ret\r | |
3141 | align 4\r | |
3142 | L$111bad_pointer:\r | |
3143 | mov eax,-1\r | |
3144 | pop ebx\r | |
3145 | pop ebp\r | |
3146 | ret\r | |
3147 | align 4\r | |
3148 | L$115bad_keybits:\r | |
3149 | pxor xmm0,xmm0\r | |
3150 | mov eax,-2\r | |
3151 | pop ebx\r | |
3152 | pop ebp\r | |
3153 | ret\r | |
3154 | global _aesni_set_encrypt_key\r | |
3155 | align 16\r | |
3156 | _aesni_set_encrypt_key:\r | |
3157 | L$_aesni_set_encrypt_key_begin:\r | |
3158 | mov eax,DWORD [4+esp]\r | |
3159 | mov ecx,DWORD [8+esp]\r | |
3160 | mov edx,DWORD [12+esp]\r | |
3161 | call __aesni_set_encrypt_key\r | |
3162 | ret\r | |
3163 | global _aesni_set_decrypt_key\r | |
3164 | align 16\r | |
3165 | _aesni_set_decrypt_key:\r | |
3166 | L$_aesni_set_decrypt_key_begin:\r | |
3167 | mov eax,DWORD [4+esp]\r | |
3168 | mov ecx,DWORD [8+esp]\r | |
3169 | mov edx,DWORD [12+esp]\r | |
3170 | call __aesni_set_encrypt_key\r | |
3171 | mov edx,DWORD [12+esp]\r | |
3172 | shl ecx,4\r | |
3173 | test eax,eax\r | |
3174 | jnz NEAR L$134dec_key_ret\r | |
3175 | lea eax,[16+ecx*1+edx]\r | |
3176 | movups xmm0,[edx]\r | |
3177 | movups xmm1,[eax]\r | |
3178 | movups [eax],xmm0\r | |
3179 | movups [edx],xmm1\r | |
3180 | lea edx,[16+edx]\r | |
3181 | lea eax,[eax-16]\r | |
3182 | L$135dec_key_inverse:\r | |
3183 | movups xmm0,[edx]\r | |
3184 | movups xmm1,[eax]\r | |
3185 | db 102,15,56,219,192\r | |
3186 | db 102,15,56,219,201\r | |
3187 | lea edx,[16+edx]\r | |
3188 | lea eax,[eax-16]\r | |
3189 | movups [16+eax],xmm0\r | |
3190 | movups [edx-16],xmm1\r | |
3191 | cmp eax,edx\r | |
3192 | ja NEAR L$135dec_key_inverse\r | |
3193 | movups xmm0,[edx]\r | |
3194 | db 102,15,56,219,192\r | |
3195 | movups [edx],xmm0\r | |
3196 | pxor xmm0,xmm0\r | |
3197 | pxor xmm1,xmm1\r | |
3198 | xor eax,eax\r | |
3199 | L$134dec_key_ret:\r | |
3200 | ret\r | |
3201 | align 64\r | |
3202 | L$key_const:\r | |
3203 | dd 202313229,202313229,202313229,202313229\r | |
3204 | dd 67569157,67569157,67569157,67569157\r | |
3205 | dd 1,1,1,1\r | |
3206 | dd 27,27,27,27\r | |
3207 | db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69\r | |
3208 | db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83\r | |
3209 | db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115\r | |
3210 | db 115,108,46,111,114,103,62,0\r | |
3211 | segment .bss\r | |
3212 | common _OPENSSL_ia32cap_P 16\r |