OLD | NEW |
| (Empty) |
1 default rel | |
2 %define XMMWORD | |
3 %define YMMWORD | |
4 %define ZMMWORD | |
5 section .text code align=64 | |
6 | |
7 EXTERN OPENSSL_ia32cap_P | |
8 global aesni_encrypt | |
9 | |
10 ALIGN 16 | |
11 aesni_encrypt: | |
12 movups xmm2,XMMWORD[rcx] | |
13 mov eax,DWORD[240+r8] | |
14 movups xmm0,XMMWORD[r8] | |
15 movups xmm1,XMMWORD[16+r8] | |
16 lea r8,[32+r8] | |
17 xorps xmm2,xmm0 | |
18 $L$oop_enc1_1: | |
19 DB 102,15,56,220,209 | |
20 dec eax | |
21 movups xmm1,XMMWORD[r8] | |
22 lea r8,[16+r8] | |
23 jnz NEAR $L$oop_enc1_1 | |
24 DB 102,15,56,221,209 | |
25 pxor xmm0,xmm0 | |
26 pxor xmm1,xmm1 | |
27 movups XMMWORD[rdx],xmm2 | |
28 pxor xmm2,xmm2 | |
29 DB 0F3h,0C3h ;repret | |
30 | |
31 | |
32 global aesni_decrypt | |
33 | |
34 ALIGN 16 | |
35 aesni_decrypt: | |
36 movups xmm2,XMMWORD[rcx] | |
37 mov eax,DWORD[240+r8] | |
38 movups xmm0,XMMWORD[r8] | |
39 movups xmm1,XMMWORD[16+r8] | |
40 lea r8,[32+r8] | |
41 xorps xmm2,xmm0 | |
42 $L$oop_dec1_2: | |
43 DB 102,15,56,222,209 | |
44 dec eax | |
45 movups xmm1,XMMWORD[r8] | |
46 lea r8,[16+r8] | |
47 jnz NEAR $L$oop_dec1_2 | |
48 DB 102,15,56,223,209 | |
49 pxor xmm0,xmm0 | |
50 pxor xmm1,xmm1 | |
51 movups XMMWORD[rdx],xmm2 | |
52 pxor xmm2,xmm2 | |
53 DB 0F3h,0C3h ;repret | |
54 | |
55 | |
56 ALIGN 16 | |
57 _aesni_encrypt2: | |
58 movups xmm0,XMMWORD[rcx] | |
59 shl eax,4 | |
60 movups xmm1,XMMWORD[16+rcx] | |
61 xorps xmm2,xmm0 | |
62 xorps xmm3,xmm0 | |
63 movups xmm0,XMMWORD[32+rcx] | |
64 lea rcx,[32+rax*1+rcx] | |
65 neg rax | |
66 add rax,16 | |
67 | |
68 $L$enc_loop2: | |
69 DB 102,15,56,220,209 | |
70 DB 102,15,56,220,217 | |
71 movups xmm1,XMMWORD[rax*1+rcx] | |
72 add rax,32 | |
73 DB 102,15,56,220,208 | |
74 DB 102,15,56,220,216 | |
75 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
76 jnz NEAR $L$enc_loop2 | |
77 | |
78 DB 102,15,56,220,209 | |
79 DB 102,15,56,220,217 | |
80 DB 102,15,56,221,208 | |
81 DB 102,15,56,221,216 | |
82 DB 0F3h,0C3h ;repret | |
83 | |
84 | |
85 ALIGN 16 | |
86 _aesni_decrypt2: | |
87 movups xmm0,XMMWORD[rcx] | |
88 shl eax,4 | |
89 movups xmm1,XMMWORD[16+rcx] | |
90 xorps xmm2,xmm0 | |
91 xorps xmm3,xmm0 | |
92 movups xmm0,XMMWORD[32+rcx] | |
93 lea rcx,[32+rax*1+rcx] | |
94 neg rax | |
95 add rax,16 | |
96 | |
97 $L$dec_loop2: | |
98 DB 102,15,56,222,209 | |
99 DB 102,15,56,222,217 | |
100 movups xmm1,XMMWORD[rax*1+rcx] | |
101 add rax,32 | |
102 DB 102,15,56,222,208 | |
103 DB 102,15,56,222,216 | |
104 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
105 jnz NEAR $L$dec_loop2 | |
106 | |
107 DB 102,15,56,222,209 | |
108 DB 102,15,56,222,217 | |
109 DB 102,15,56,223,208 | |
110 DB 102,15,56,223,216 | |
111 DB 0F3h,0C3h ;repret | |
112 | |
113 | |
114 ALIGN 16 | |
115 _aesni_encrypt3: | |
116 movups xmm0,XMMWORD[rcx] | |
117 shl eax,4 | |
118 movups xmm1,XMMWORD[16+rcx] | |
119 xorps xmm2,xmm0 | |
120 xorps xmm3,xmm0 | |
121 xorps xmm4,xmm0 | |
122 movups xmm0,XMMWORD[32+rcx] | |
123 lea rcx,[32+rax*1+rcx] | |
124 neg rax | |
125 add rax,16 | |
126 | |
127 $L$enc_loop3: | |
128 DB 102,15,56,220,209 | |
129 DB 102,15,56,220,217 | |
130 DB 102,15,56,220,225 | |
131 movups xmm1,XMMWORD[rax*1+rcx] | |
132 add rax,32 | |
133 DB 102,15,56,220,208 | |
134 DB 102,15,56,220,216 | |
135 DB 102,15,56,220,224 | |
136 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
137 jnz NEAR $L$enc_loop3 | |
138 | |
139 DB 102,15,56,220,209 | |
140 DB 102,15,56,220,217 | |
141 DB 102,15,56,220,225 | |
142 DB 102,15,56,221,208 | |
143 DB 102,15,56,221,216 | |
144 DB 102,15,56,221,224 | |
145 DB 0F3h,0C3h ;repret | |
146 | |
147 | |
148 ALIGN 16 | |
149 _aesni_decrypt3: | |
150 movups xmm0,XMMWORD[rcx] | |
151 shl eax,4 | |
152 movups xmm1,XMMWORD[16+rcx] | |
153 xorps xmm2,xmm0 | |
154 xorps xmm3,xmm0 | |
155 xorps xmm4,xmm0 | |
156 movups xmm0,XMMWORD[32+rcx] | |
157 lea rcx,[32+rax*1+rcx] | |
158 neg rax | |
159 add rax,16 | |
160 | |
161 $L$dec_loop3: | |
162 DB 102,15,56,222,209 | |
163 DB 102,15,56,222,217 | |
164 DB 102,15,56,222,225 | |
165 movups xmm1,XMMWORD[rax*1+rcx] | |
166 add rax,32 | |
167 DB 102,15,56,222,208 | |
168 DB 102,15,56,222,216 | |
169 DB 102,15,56,222,224 | |
170 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
171 jnz NEAR $L$dec_loop3 | |
172 | |
173 DB 102,15,56,222,209 | |
174 DB 102,15,56,222,217 | |
175 DB 102,15,56,222,225 | |
176 DB 102,15,56,223,208 | |
177 DB 102,15,56,223,216 | |
178 DB 102,15,56,223,224 | |
179 DB 0F3h,0C3h ;repret | |
180 | |
181 | |
182 ALIGN 16 | |
183 _aesni_encrypt4: | |
184 movups xmm0,XMMWORD[rcx] | |
185 shl eax,4 | |
186 movups xmm1,XMMWORD[16+rcx] | |
187 xorps xmm2,xmm0 | |
188 xorps xmm3,xmm0 | |
189 xorps xmm4,xmm0 | |
190 xorps xmm5,xmm0 | |
191 movups xmm0,XMMWORD[32+rcx] | |
192 lea rcx,[32+rax*1+rcx] | |
193 neg rax | |
194 DB 0x0f,0x1f,0x00 | |
195 add rax,16 | |
196 | |
197 $L$enc_loop4: | |
198 DB 102,15,56,220,209 | |
199 DB 102,15,56,220,217 | |
200 DB 102,15,56,220,225 | |
201 DB 102,15,56,220,233 | |
202 movups xmm1,XMMWORD[rax*1+rcx] | |
203 add rax,32 | |
204 DB 102,15,56,220,208 | |
205 DB 102,15,56,220,216 | |
206 DB 102,15,56,220,224 | |
207 DB 102,15,56,220,232 | |
208 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
209 jnz NEAR $L$enc_loop4 | |
210 | |
211 DB 102,15,56,220,209 | |
212 DB 102,15,56,220,217 | |
213 DB 102,15,56,220,225 | |
214 DB 102,15,56,220,233 | |
215 DB 102,15,56,221,208 | |
216 DB 102,15,56,221,216 | |
217 DB 102,15,56,221,224 | |
218 DB 102,15,56,221,232 | |
219 DB 0F3h,0C3h ;repret | |
220 | |
221 | |
222 ALIGN 16 | |
223 _aesni_decrypt4: | |
224 movups xmm0,XMMWORD[rcx] | |
225 shl eax,4 | |
226 movups xmm1,XMMWORD[16+rcx] | |
227 xorps xmm2,xmm0 | |
228 xorps xmm3,xmm0 | |
229 xorps xmm4,xmm0 | |
230 xorps xmm5,xmm0 | |
231 movups xmm0,XMMWORD[32+rcx] | |
232 lea rcx,[32+rax*1+rcx] | |
233 neg rax | |
234 DB 0x0f,0x1f,0x00 | |
235 add rax,16 | |
236 | |
237 $L$dec_loop4: | |
238 DB 102,15,56,222,209 | |
239 DB 102,15,56,222,217 | |
240 DB 102,15,56,222,225 | |
241 DB 102,15,56,222,233 | |
242 movups xmm1,XMMWORD[rax*1+rcx] | |
243 add rax,32 | |
244 DB 102,15,56,222,208 | |
245 DB 102,15,56,222,216 | |
246 DB 102,15,56,222,224 | |
247 DB 102,15,56,222,232 | |
248 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
249 jnz NEAR $L$dec_loop4 | |
250 | |
251 DB 102,15,56,222,209 | |
252 DB 102,15,56,222,217 | |
253 DB 102,15,56,222,225 | |
254 DB 102,15,56,222,233 | |
255 DB 102,15,56,223,208 | |
256 DB 102,15,56,223,216 | |
257 DB 102,15,56,223,224 | |
258 DB 102,15,56,223,232 | |
259 DB 0F3h,0C3h ;repret | |
260 | |
261 | |
262 ALIGN 16 | |
263 _aesni_encrypt6: | |
264 movups xmm0,XMMWORD[rcx] | |
265 shl eax,4 | |
266 movups xmm1,XMMWORD[16+rcx] | |
267 xorps xmm2,xmm0 | |
268 pxor xmm3,xmm0 | |
269 pxor xmm4,xmm0 | |
270 DB 102,15,56,220,209 | |
271 lea rcx,[32+rax*1+rcx] | |
272 neg rax | |
273 DB 102,15,56,220,217 | |
274 pxor xmm5,xmm0 | |
275 pxor xmm6,xmm0 | |
276 DB 102,15,56,220,225 | |
277 pxor xmm7,xmm0 | |
278 movups xmm0,XMMWORD[rax*1+rcx] | |
279 add rax,16 | |
280 jmp NEAR $L$enc_loop6_enter | |
281 ALIGN 16 | |
282 $L$enc_loop6: | |
283 DB 102,15,56,220,209 | |
284 DB 102,15,56,220,217 | |
285 DB 102,15,56,220,225 | |
286 $L$enc_loop6_enter: | |
287 DB 102,15,56,220,233 | |
288 DB 102,15,56,220,241 | |
289 DB 102,15,56,220,249 | |
290 movups xmm1,XMMWORD[rax*1+rcx] | |
291 add rax,32 | |
292 DB 102,15,56,220,208 | |
293 DB 102,15,56,220,216 | |
294 DB 102,15,56,220,224 | |
295 DB 102,15,56,220,232 | |
296 DB 102,15,56,220,240 | |
297 DB 102,15,56,220,248 | |
298 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
299 jnz NEAR $L$enc_loop6 | |
300 | |
301 DB 102,15,56,220,209 | |
302 DB 102,15,56,220,217 | |
303 DB 102,15,56,220,225 | |
304 DB 102,15,56,220,233 | |
305 DB 102,15,56,220,241 | |
306 DB 102,15,56,220,249 | |
307 DB 102,15,56,221,208 | |
308 DB 102,15,56,221,216 | |
309 DB 102,15,56,221,224 | |
310 DB 102,15,56,221,232 | |
311 DB 102,15,56,221,240 | |
312 DB 102,15,56,221,248 | |
313 DB 0F3h,0C3h ;repret | |
314 | |
315 | |
316 ALIGN 16 | |
317 _aesni_decrypt6: | |
318 movups xmm0,XMMWORD[rcx] | |
319 shl eax,4 | |
320 movups xmm1,XMMWORD[16+rcx] | |
321 xorps xmm2,xmm0 | |
322 pxor xmm3,xmm0 | |
323 pxor xmm4,xmm0 | |
324 DB 102,15,56,222,209 | |
325 lea rcx,[32+rax*1+rcx] | |
326 neg rax | |
327 DB 102,15,56,222,217 | |
328 pxor xmm5,xmm0 | |
329 pxor xmm6,xmm0 | |
330 DB 102,15,56,222,225 | |
331 pxor xmm7,xmm0 | |
332 movups xmm0,XMMWORD[rax*1+rcx] | |
333 add rax,16 | |
334 jmp NEAR $L$dec_loop6_enter | |
335 ALIGN 16 | |
336 $L$dec_loop6: | |
337 DB 102,15,56,222,209 | |
338 DB 102,15,56,222,217 | |
339 DB 102,15,56,222,225 | |
340 $L$dec_loop6_enter: | |
341 DB 102,15,56,222,233 | |
342 DB 102,15,56,222,241 | |
343 DB 102,15,56,222,249 | |
344 movups xmm1,XMMWORD[rax*1+rcx] | |
345 add rax,32 | |
346 DB 102,15,56,222,208 | |
347 DB 102,15,56,222,216 | |
348 DB 102,15,56,222,224 | |
349 DB 102,15,56,222,232 | |
350 DB 102,15,56,222,240 | |
351 DB 102,15,56,222,248 | |
352 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
353 jnz NEAR $L$dec_loop6 | |
354 | |
355 DB 102,15,56,222,209 | |
356 DB 102,15,56,222,217 | |
357 DB 102,15,56,222,225 | |
358 DB 102,15,56,222,233 | |
359 DB 102,15,56,222,241 | |
360 DB 102,15,56,222,249 | |
361 DB 102,15,56,223,208 | |
362 DB 102,15,56,223,216 | |
363 DB 102,15,56,223,224 | |
364 DB 102,15,56,223,232 | |
365 DB 102,15,56,223,240 | |
366 DB 102,15,56,223,248 | |
367 DB 0F3h,0C3h ;repret | |
368 | |
369 | |
370 ALIGN 16 | |
371 _aesni_encrypt8: | |
372 movups xmm0,XMMWORD[rcx] | |
373 shl eax,4 | |
374 movups xmm1,XMMWORD[16+rcx] | |
375 xorps xmm2,xmm0 | |
376 xorps xmm3,xmm0 | |
377 pxor xmm4,xmm0 | |
378 pxor xmm5,xmm0 | |
379 pxor xmm6,xmm0 | |
380 lea rcx,[32+rax*1+rcx] | |
381 neg rax | |
382 DB 102,15,56,220,209 | |
383 pxor xmm7,xmm0 | |
384 pxor xmm8,xmm0 | |
385 DB 102,15,56,220,217 | |
386 pxor xmm9,xmm0 | |
387 movups xmm0,XMMWORD[rax*1+rcx] | |
388 add rax,16 | |
389 jmp NEAR $L$enc_loop8_inner | |
390 ALIGN 16 | |
391 $L$enc_loop8: | |
392 DB 102,15,56,220,209 | |
393 DB 102,15,56,220,217 | |
394 $L$enc_loop8_inner: | |
395 DB 102,15,56,220,225 | |
396 DB 102,15,56,220,233 | |
397 DB 102,15,56,220,241 | |
398 DB 102,15,56,220,249 | |
399 DB 102,68,15,56,220,193 | |
400 DB 102,68,15,56,220,201 | |
401 $L$enc_loop8_enter: | |
402 movups xmm1,XMMWORD[rax*1+rcx] | |
403 add rax,32 | |
404 DB 102,15,56,220,208 | |
405 DB 102,15,56,220,216 | |
406 DB 102,15,56,220,224 | |
407 DB 102,15,56,220,232 | |
408 DB 102,15,56,220,240 | |
409 DB 102,15,56,220,248 | |
410 DB 102,68,15,56,220,192 | |
411 DB 102,68,15,56,220,200 | |
412 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
413 jnz NEAR $L$enc_loop8 | |
414 | |
415 DB 102,15,56,220,209 | |
416 DB 102,15,56,220,217 | |
417 DB 102,15,56,220,225 | |
418 DB 102,15,56,220,233 | |
419 DB 102,15,56,220,241 | |
420 DB 102,15,56,220,249 | |
421 DB 102,68,15,56,220,193 | |
422 DB 102,68,15,56,220,201 | |
423 DB 102,15,56,221,208 | |
424 DB 102,15,56,221,216 | |
425 DB 102,15,56,221,224 | |
426 DB 102,15,56,221,232 | |
427 DB 102,15,56,221,240 | |
428 DB 102,15,56,221,248 | |
429 DB 102,68,15,56,221,192 | |
430 DB 102,68,15,56,221,200 | |
431 DB 0F3h,0C3h ;repret | |
432 | |
433 | |
434 ALIGN 16 | |
435 _aesni_decrypt8: | |
436 movups xmm0,XMMWORD[rcx] | |
437 shl eax,4 | |
438 movups xmm1,XMMWORD[16+rcx] | |
439 xorps xmm2,xmm0 | |
440 xorps xmm3,xmm0 | |
441 pxor xmm4,xmm0 | |
442 pxor xmm5,xmm0 | |
443 pxor xmm6,xmm0 | |
444 lea rcx,[32+rax*1+rcx] | |
445 neg rax | |
446 DB 102,15,56,222,209 | |
447 pxor xmm7,xmm0 | |
448 pxor xmm8,xmm0 | |
449 DB 102,15,56,222,217 | |
450 pxor xmm9,xmm0 | |
451 movups xmm0,XMMWORD[rax*1+rcx] | |
452 add rax,16 | |
453 jmp NEAR $L$dec_loop8_inner | |
454 ALIGN 16 | |
455 $L$dec_loop8: | |
456 DB 102,15,56,222,209 | |
457 DB 102,15,56,222,217 | |
458 $L$dec_loop8_inner: | |
459 DB 102,15,56,222,225 | |
460 DB 102,15,56,222,233 | |
461 DB 102,15,56,222,241 | |
462 DB 102,15,56,222,249 | |
463 DB 102,68,15,56,222,193 | |
464 DB 102,68,15,56,222,201 | |
465 $L$dec_loop8_enter: | |
466 movups xmm1,XMMWORD[rax*1+rcx] | |
467 add rax,32 | |
468 DB 102,15,56,222,208 | |
469 DB 102,15,56,222,216 | |
470 DB 102,15,56,222,224 | |
471 DB 102,15,56,222,232 | |
472 DB 102,15,56,222,240 | |
473 DB 102,15,56,222,248 | |
474 DB 102,68,15,56,222,192 | |
475 DB 102,68,15,56,222,200 | |
476 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
477 jnz NEAR $L$dec_loop8 | |
478 | |
479 DB 102,15,56,222,209 | |
480 DB 102,15,56,222,217 | |
481 DB 102,15,56,222,225 | |
482 DB 102,15,56,222,233 | |
483 DB 102,15,56,222,241 | |
484 DB 102,15,56,222,249 | |
485 DB 102,68,15,56,222,193 | |
486 DB 102,68,15,56,222,201 | |
487 DB 102,15,56,223,208 | |
488 DB 102,15,56,223,216 | |
489 DB 102,15,56,223,224 | |
490 DB 102,15,56,223,232 | |
491 DB 102,15,56,223,240 | |
492 DB 102,15,56,223,248 | |
493 DB 102,68,15,56,223,192 | |
494 DB 102,68,15,56,223,200 | |
495 DB 0F3h,0C3h ;repret | |
496 | |
497 global aesni_ecb_encrypt | |
498 | |
499 ALIGN 16 | |
500 aesni_ecb_encrypt: | |
501 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
502 mov QWORD[16+rsp],rsi | |
503 mov rax,rsp | |
504 $L$SEH_begin_aesni_ecb_encrypt: | |
505 mov rdi,rcx | |
506 mov rsi,rdx | |
507 mov rdx,r8 | |
508 mov rcx,r9 | |
509 mov r8,QWORD[40+rsp] | |
510 | |
511 | |
512 lea rsp,[((-88))+rsp] | |
513 movaps XMMWORD[rsp],xmm6 | |
514 movaps XMMWORD[16+rsp],xmm7 | |
515 movaps XMMWORD[32+rsp],xmm8 | |
516 movaps XMMWORD[48+rsp],xmm9 | |
517 $L$ecb_enc_body: | |
518 and rdx,-16 | |
519 jz NEAR $L$ecb_ret | |
520 | |
521 mov eax,DWORD[240+rcx] | |
522 movups xmm0,XMMWORD[rcx] | |
523 mov r11,rcx | |
524 mov r10d,eax | |
525 test r8d,r8d | |
526 jz NEAR $L$ecb_decrypt | |
527 | |
528 cmp rdx,0x80 | |
529 jb NEAR $L$ecb_enc_tail | |
530 | |
531 movdqu xmm2,XMMWORD[rdi] | |
532 movdqu xmm3,XMMWORD[16+rdi] | |
533 movdqu xmm4,XMMWORD[32+rdi] | |
534 movdqu xmm5,XMMWORD[48+rdi] | |
535 movdqu xmm6,XMMWORD[64+rdi] | |
536 movdqu xmm7,XMMWORD[80+rdi] | |
537 movdqu xmm8,XMMWORD[96+rdi] | |
538 movdqu xmm9,XMMWORD[112+rdi] | |
539 lea rdi,[128+rdi] | |
540 sub rdx,0x80 | |
541 jmp NEAR $L$ecb_enc_loop8_enter | |
542 ALIGN 16 | |
543 $L$ecb_enc_loop8: | |
544 movups XMMWORD[rsi],xmm2 | |
545 mov rcx,r11 | |
546 movdqu xmm2,XMMWORD[rdi] | |
547 mov eax,r10d | |
548 movups XMMWORD[16+rsi],xmm3 | |
549 movdqu xmm3,XMMWORD[16+rdi] | |
550 movups XMMWORD[32+rsi],xmm4 | |
551 movdqu xmm4,XMMWORD[32+rdi] | |
552 movups XMMWORD[48+rsi],xmm5 | |
553 movdqu xmm5,XMMWORD[48+rdi] | |
554 movups XMMWORD[64+rsi],xmm6 | |
555 movdqu xmm6,XMMWORD[64+rdi] | |
556 movups XMMWORD[80+rsi],xmm7 | |
557 movdqu xmm7,XMMWORD[80+rdi] | |
558 movups XMMWORD[96+rsi],xmm8 | |
559 movdqu xmm8,XMMWORD[96+rdi] | |
560 movups XMMWORD[112+rsi],xmm9 | |
561 lea rsi,[128+rsi] | |
562 movdqu xmm9,XMMWORD[112+rdi] | |
563 lea rdi,[128+rdi] | |
564 $L$ecb_enc_loop8_enter: | |
565 | |
566 call _aesni_encrypt8 | |
567 | |
568 sub rdx,0x80 | |
569 jnc NEAR $L$ecb_enc_loop8 | |
570 | |
571 movups XMMWORD[rsi],xmm2 | |
572 mov rcx,r11 | |
573 movups XMMWORD[16+rsi],xmm3 | |
574 mov eax,r10d | |
575 movups XMMWORD[32+rsi],xmm4 | |
576 movups XMMWORD[48+rsi],xmm5 | |
577 movups XMMWORD[64+rsi],xmm6 | |
578 movups XMMWORD[80+rsi],xmm7 | |
579 movups XMMWORD[96+rsi],xmm8 | |
580 movups XMMWORD[112+rsi],xmm9 | |
581 lea rsi,[128+rsi] | |
582 add rdx,0x80 | |
583 jz NEAR $L$ecb_ret | |
584 | |
585 $L$ecb_enc_tail: | |
586 movups xmm2,XMMWORD[rdi] | |
587 cmp rdx,0x20 | |
588 jb NEAR $L$ecb_enc_one | |
589 movups xmm3,XMMWORD[16+rdi] | |
590 je NEAR $L$ecb_enc_two | |
591 movups xmm4,XMMWORD[32+rdi] | |
592 cmp rdx,0x40 | |
593 jb NEAR $L$ecb_enc_three | |
594 movups xmm5,XMMWORD[48+rdi] | |
595 je NEAR $L$ecb_enc_four | |
596 movups xmm6,XMMWORD[64+rdi] | |
597 cmp rdx,0x60 | |
598 jb NEAR $L$ecb_enc_five | |
599 movups xmm7,XMMWORD[80+rdi] | |
600 je NEAR $L$ecb_enc_six | |
601 movdqu xmm8,XMMWORD[96+rdi] | |
602 xorps xmm9,xmm9 | |
603 call _aesni_encrypt8 | |
604 movups XMMWORD[rsi],xmm2 | |
605 movups XMMWORD[16+rsi],xmm3 | |
606 movups XMMWORD[32+rsi],xmm4 | |
607 movups XMMWORD[48+rsi],xmm5 | |
608 movups XMMWORD[64+rsi],xmm6 | |
609 movups XMMWORD[80+rsi],xmm7 | |
610 movups XMMWORD[96+rsi],xmm8 | |
611 jmp NEAR $L$ecb_ret | |
612 ALIGN 16 | |
613 $L$ecb_enc_one: | |
614 movups xmm0,XMMWORD[rcx] | |
615 movups xmm1,XMMWORD[16+rcx] | |
616 lea rcx,[32+rcx] | |
617 xorps xmm2,xmm0 | |
618 $L$oop_enc1_3: | |
619 DB 102,15,56,220,209 | |
620 dec eax | |
621 movups xmm1,XMMWORD[rcx] | |
622 lea rcx,[16+rcx] | |
623 jnz NEAR $L$oop_enc1_3 | |
624 DB 102,15,56,221,209 | |
625 movups XMMWORD[rsi],xmm2 | |
626 jmp NEAR $L$ecb_ret | |
627 ALIGN 16 | |
628 $L$ecb_enc_two: | |
629 call _aesni_encrypt2 | |
630 movups XMMWORD[rsi],xmm2 | |
631 movups XMMWORD[16+rsi],xmm3 | |
632 jmp NEAR $L$ecb_ret | |
633 ALIGN 16 | |
634 $L$ecb_enc_three: | |
635 call _aesni_encrypt3 | |
636 movups XMMWORD[rsi],xmm2 | |
637 movups XMMWORD[16+rsi],xmm3 | |
638 movups XMMWORD[32+rsi],xmm4 | |
639 jmp NEAR $L$ecb_ret | |
640 ALIGN 16 | |
641 $L$ecb_enc_four: | |
642 call _aesni_encrypt4 | |
643 movups XMMWORD[rsi],xmm2 | |
644 movups XMMWORD[16+rsi],xmm3 | |
645 movups XMMWORD[32+rsi],xmm4 | |
646 movups XMMWORD[48+rsi],xmm5 | |
647 jmp NEAR $L$ecb_ret | |
648 ALIGN 16 | |
649 $L$ecb_enc_five: | |
650 xorps xmm7,xmm7 | |
651 call _aesni_encrypt6 | |
652 movups XMMWORD[rsi],xmm2 | |
653 movups XMMWORD[16+rsi],xmm3 | |
654 movups XMMWORD[32+rsi],xmm4 | |
655 movups XMMWORD[48+rsi],xmm5 | |
656 movups XMMWORD[64+rsi],xmm6 | |
657 jmp NEAR $L$ecb_ret | |
658 ALIGN 16 | |
659 $L$ecb_enc_six: | |
660 call _aesni_encrypt6 | |
661 movups XMMWORD[rsi],xmm2 | |
662 movups XMMWORD[16+rsi],xmm3 | |
663 movups XMMWORD[32+rsi],xmm4 | |
664 movups XMMWORD[48+rsi],xmm5 | |
665 movups XMMWORD[64+rsi],xmm6 | |
666 movups XMMWORD[80+rsi],xmm7 | |
667 jmp NEAR $L$ecb_ret | |
668 | |
669 ALIGN 16 | |
670 $L$ecb_decrypt: | |
671 cmp rdx,0x80 | |
672 jb NEAR $L$ecb_dec_tail | |
673 | |
674 movdqu xmm2,XMMWORD[rdi] | |
675 movdqu xmm3,XMMWORD[16+rdi] | |
676 movdqu xmm4,XMMWORD[32+rdi] | |
677 movdqu xmm5,XMMWORD[48+rdi] | |
678 movdqu xmm6,XMMWORD[64+rdi] | |
679 movdqu xmm7,XMMWORD[80+rdi] | |
680 movdqu xmm8,XMMWORD[96+rdi] | |
681 movdqu xmm9,XMMWORD[112+rdi] | |
682 lea rdi,[128+rdi] | |
683 sub rdx,0x80 | |
684 jmp NEAR $L$ecb_dec_loop8_enter | |
685 ALIGN 16 | |
686 $L$ecb_dec_loop8: | |
687 movups XMMWORD[rsi],xmm2 | |
688 mov rcx,r11 | |
689 movdqu xmm2,XMMWORD[rdi] | |
690 mov eax,r10d | |
691 movups XMMWORD[16+rsi],xmm3 | |
692 movdqu xmm3,XMMWORD[16+rdi] | |
693 movups XMMWORD[32+rsi],xmm4 | |
694 movdqu xmm4,XMMWORD[32+rdi] | |
695 movups XMMWORD[48+rsi],xmm5 | |
696 movdqu xmm5,XMMWORD[48+rdi] | |
697 movups XMMWORD[64+rsi],xmm6 | |
698 movdqu xmm6,XMMWORD[64+rdi] | |
699 movups XMMWORD[80+rsi],xmm7 | |
700 movdqu xmm7,XMMWORD[80+rdi] | |
701 movups XMMWORD[96+rsi],xmm8 | |
702 movdqu xmm8,XMMWORD[96+rdi] | |
703 movups XMMWORD[112+rsi],xmm9 | |
704 lea rsi,[128+rsi] | |
705 movdqu xmm9,XMMWORD[112+rdi] | |
706 lea rdi,[128+rdi] | |
707 $L$ecb_dec_loop8_enter: | |
708 | |
709 call _aesni_decrypt8 | |
710 | |
711 movups xmm0,XMMWORD[r11] | |
712 sub rdx,0x80 | |
713 jnc NEAR $L$ecb_dec_loop8 | |
714 | |
715 movups XMMWORD[rsi],xmm2 | |
716 pxor xmm2,xmm2 | |
717 mov rcx,r11 | |
718 movups XMMWORD[16+rsi],xmm3 | |
719 pxor xmm3,xmm3 | |
720 mov eax,r10d | |
721 movups XMMWORD[32+rsi],xmm4 | |
722 pxor xmm4,xmm4 | |
723 movups XMMWORD[48+rsi],xmm5 | |
724 pxor xmm5,xmm5 | |
725 movups XMMWORD[64+rsi],xmm6 | |
726 pxor xmm6,xmm6 | |
727 movups XMMWORD[80+rsi],xmm7 | |
728 pxor xmm7,xmm7 | |
729 movups XMMWORD[96+rsi],xmm8 | |
730 pxor xmm8,xmm8 | |
731 movups XMMWORD[112+rsi],xmm9 | |
732 pxor xmm9,xmm9 | |
733 lea rsi,[128+rsi] | |
734 add rdx,0x80 | |
735 jz NEAR $L$ecb_ret | |
736 | |
737 $L$ecb_dec_tail: | |
738 movups xmm2,XMMWORD[rdi] | |
739 cmp rdx,0x20 | |
740 jb NEAR $L$ecb_dec_one | |
741 movups xmm3,XMMWORD[16+rdi] | |
742 je NEAR $L$ecb_dec_two | |
743 movups xmm4,XMMWORD[32+rdi] | |
744 cmp rdx,0x40 | |
745 jb NEAR $L$ecb_dec_three | |
746 movups xmm5,XMMWORD[48+rdi] | |
747 je NEAR $L$ecb_dec_four | |
748 movups xmm6,XMMWORD[64+rdi] | |
749 cmp rdx,0x60 | |
750 jb NEAR $L$ecb_dec_five | |
751 movups xmm7,XMMWORD[80+rdi] | |
752 je NEAR $L$ecb_dec_six | |
753 movups xmm8,XMMWORD[96+rdi] | |
754 movups xmm0,XMMWORD[rcx] | |
755 xorps xmm9,xmm9 | |
756 call _aesni_decrypt8 | |
757 movups XMMWORD[rsi],xmm2 | |
758 pxor xmm2,xmm2 | |
759 movups XMMWORD[16+rsi],xmm3 | |
760 pxor xmm3,xmm3 | |
761 movups XMMWORD[32+rsi],xmm4 | |
762 pxor xmm4,xmm4 | |
763 movups XMMWORD[48+rsi],xmm5 | |
764 pxor xmm5,xmm5 | |
765 movups XMMWORD[64+rsi],xmm6 | |
766 pxor xmm6,xmm6 | |
767 movups XMMWORD[80+rsi],xmm7 | |
768 pxor xmm7,xmm7 | |
769 movups XMMWORD[96+rsi],xmm8 | |
770 pxor xmm8,xmm8 | |
771 pxor xmm9,xmm9 | |
772 jmp NEAR $L$ecb_ret | |
773 ALIGN 16 | |
774 $L$ecb_dec_one: | |
775 movups xmm0,XMMWORD[rcx] | |
776 movups xmm1,XMMWORD[16+rcx] | |
777 lea rcx,[32+rcx] | |
778 xorps xmm2,xmm0 | |
779 $L$oop_dec1_4: | |
780 DB 102,15,56,222,209 | |
781 dec eax | |
782 movups xmm1,XMMWORD[rcx] | |
783 lea rcx,[16+rcx] | |
784 jnz NEAR $L$oop_dec1_4 | |
785 DB 102,15,56,223,209 | |
786 movups XMMWORD[rsi],xmm2 | |
787 pxor xmm2,xmm2 | |
788 jmp NEAR $L$ecb_ret | |
789 ALIGN 16 | |
790 $L$ecb_dec_two: | |
791 call _aesni_decrypt2 | |
792 movups XMMWORD[rsi],xmm2 | |
793 pxor xmm2,xmm2 | |
794 movups XMMWORD[16+rsi],xmm3 | |
795 pxor xmm3,xmm3 | |
796 jmp NEAR $L$ecb_ret | |
797 ALIGN 16 | |
798 $L$ecb_dec_three: | |
799 call _aesni_decrypt3 | |
800 movups XMMWORD[rsi],xmm2 | |
801 pxor xmm2,xmm2 | |
802 movups XMMWORD[16+rsi],xmm3 | |
803 pxor xmm3,xmm3 | |
804 movups XMMWORD[32+rsi],xmm4 | |
805 pxor xmm4,xmm4 | |
806 jmp NEAR $L$ecb_ret | |
807 ALIGN 16 | |
808 $L$ecb_dec_four: | |
809 call _aesni_decrypt4 | |
810 movups XMMWORD[rsi],xmm2 | |
811 pxor xmm2,xmm2 | |
812 movups XMMWORD[16+rsi],xmm3 | |
813 pxor xmm3,xmm3 | |
814 movups XMMWORD[32+rsi],xmm4 | |
815 pxor xmm4,xmm4 | |
816 movups XMMWORD[48+rsi],xmm5 | |
817 pxor xmm5,xmm5 | |
818 jmp NEAR $L$ecb_ret | |
819 ALIGN 16 | |
820 $L$ecb_dec_five: | |
821 xorps xmm7,xmm7 | |
822 call _aesni_decrypt6 | |
823 movups XMMWORD[rsi],xmm2 | |
824 pxor xmm2,xmm2 | |
825 movups XMMWORD[16+rsi],xmm3 | |
826 pxor xmm3,xmm3 | |
827 movups XMMWORD[32+rsi],xmm4 | |
828 pxor xmm4,xmm4 | |
829 movups XMMWORD[48+rsi],xmm5 | |
830 pxor xmm5,xmm5 | |
831 movups XMMWORD[64+rsi],xmm6 | |
832 pxor xmm6,xmm6 | |
833 pxor xmm7,xmm7 | |
834 jmp NEAR $L$ecb_ret | |
835 ALIGN 16 | |
836 $L$ecb_dec_six: | |
837 call _aesni_decrypt6 | |
838 movups XMMWORD[rsi],xmm2 | |
839 pxor xmm2,xmm2 | |
840 movups XMMWORD[16+rsi],xmm3 | |
841 pxor xmm3,xmm3 | |
842 movups XMMWORD[32+rsi],xmm4 | |
843 pxor xmm4,xmm4 | |
844 movups XMMWORD[48+rsi],xmm5 | |
845 pxor xmm5,xmm5 | |
846 movups XMMWORD[64+rsi],xmm6 | |
847 pxor xmm6,xmm6 | |
848 movups XMMWORD[80+rsi],xmm7 | |
849 pxor xmm7,xmm7 | |
850 | |
851 $L$ecb_ret: | |
852 xorps xmm0,xmm0 | |
853 pxor xmm1,xmm1 | |
854 movaps xmm6,XMMWORD[rsp] | |
855 movaps XMMWORD[rsp],xmm0 | |
856 movaps xmm7,XMMWORD[16+rsp] | |
857 movaps XMMWORD[16+rsp],xmm0 | |
858 movaps xmm8,XMMWORD[32+rsp] | |
859 movaps XMMWORD[32+rsp],xmm0 | |
860 movaps xmm9,XMMWORD[48+rsp] | |
861 movaps XMMWORD[48+rsp],xmm0 | |
862 lea rsp,[88+rsp] | |
863 $L$ecb_enc_ret: | |
864 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
865 mov rsi,QWORD[16+rsp] | |
866 DB 0F3h,0C3h ;repret | |
867 $L$SEH_end_aesni_ecb_encrypt: | |
868 global aesni_ccm64_encrypt_blocks | |
869 | |
870 ALIGN 16 | |
871 aesni_ccm64_encrypt_blocks: | |
872 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
873 mov QWORD[16+rsp],rsi | |
874 mov rax,rsp | |
875 $L$SEH_begin_aesni_ccm64_encrypt_blocks: | |
876 mov rdi,rcx | |
877 mov rsi,rdx | |
878 mov rdx,r8 | |
879 mov rcx,r9 | |
880 mov r8,QWORD[40+rsp] | |
881 mov r9,QWORD[48+rsp] | |
882 | |
883 | |
884 lea rsp,[((-88))+rsp] | |
885 movaps XMMWORD[rsp],xmm6 | |
886 movaps XMMWORD[16+rsp],xmm7 | |
887 movaps XMMWORD[32+rsp],xmm8 | |
888 movaps XMMWORD[48+rsp],xmm9 | |
889 $L$ccm64_enc_body: | |
890 mov eax,DWORD[240+rcx] | |
891 movdqu xmm6,XMMWORD[r8] | |
892 movdqa xmm9,XMMWORD[$L$increment64] | |
893 movdqa xmm7,XMMWORD[$L$bswap_mask] | |
894 | |
895 shl eax,4 | |
896 mov r10d,16 | |
897 lea r11,[rcx] | |
898 movdqu xmm3,XMMWORD[r9] | |
899 movdqa xmm2,xmm6 | |
900 lea rcx,[32+rax*1+rcx] | |
901 DB 102,15,56,0,247 | |
902 sub r10,rax | |
903 jmp NEAR $L$ccm64_enc_outer | |
904 ALIGN 16 | |
905 $L$ccm64_enc_outer: | |
906 movups xmm0,XMMWORD[r11] | |
907 mov rax,r10 | |
908 movups xmm8,XMMWORD[rdi] | |
909 | |
910 xorps xmm2,xmm0 | |
911 movups xmm1,XMMWORD[16+r11] | |
912 xorps xmm0,xmm8 | |
913 xorps xmm3,xmm0 | |
914 movups xmm0,XMMWORD[32+r11] | |
915 | |
916 $L$ccm64_enc2_loop: | |
917 DB 102,15,56,220,209 | |
918 DB 102,15,56,220,217 | |
919 movups xmm1,XMMWORD[rax*1+rcx] | |
920 add rax,32 | |
921 DB 102,15,56,220,208 | |
922 DB 102,15,56,220,216 | |
923 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
924 jnz NEAR $L$ccm64_enc2_loop | |
925 DB 102,15,56,220,209 | |
926 DB 102,15,56,220,217 | |
927 paddq xmm6,xmm9 | |
928 dec rdx | |
929 DB 102,15,56,221,208 | |
930 DB 102,15,56,221,216 | |
931 | |
932 lea rdi,[16+rdi] | |
933 xorps xmm8,xmm2 | |
934 movdqa xmm2,xmm6 | |
935 movups XMMWORD[rsi],xmm8 | |
936 DB 102,15,56,0,215 | |
937 lea rsi,[16+rsi] | |
938 jnz NEAR $L$ccm64_enc_outer | |
939 | |
940 pxor xmm0,xmm0 | |
941 pxor xmm1,xmm1 | |
942 pxor xmm2,xmm2 | |
943 movups XMMWORD[r9],xmm3 | |
944 pxor xmm3,xmm3 | |
945 pxor xmm8,xmm8 | |
946 pxor xmm6,xmm6 | |
947 movaps xmm6,XMMWORD[rsp] | |
948 movaps XMMWORD[rsp],xmm0 | |
949 movaps xmm7,XMMWORD[16+rsp] | |
950 movaps XMMWORD[16+rsp],xmm0 | |
951 movaps xmm8,XMMWORD[32+rsp] | |
952 movaps XMMWORD[32+rsp],xmm0 | |
953 movaps xmm9,XMMWORD[48+rsp] | |
954 movaps XMMWORD[48+rsp],xmm0 | |
955 lea rsp,[88+rsp] | |
956 $L$ccm64_enc_ret: | |
957 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
958 mov rsi,QWORD[16+rsp] | |
959 DB 0F3h,0C3h ;repret | |
960 $L$SEH_end_aesni_ccm64_encrypt_blocks: | |
961 global aesni_ccm64_decrypt_blocks | |
962 | |
963 ALIGN 16 | |
964 aesni_ccm64_decrypt_blocks: | |
965 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
966 mov QWORD[16+rsp],rsi | |
967 mov rax,rsp | |
968 $L$SEH_begin_aesni_ccm64_decrypt_blocks: | |
969 mov rdi,rcx | |
970 mov rsi,rdx | |
971 mov rdx,r8 | |
972 mov rcx,r9 | |
973 mov r8,QWORD[40+rsp] | |
974 mov r9,QWORD[48+rsp] | |
975 | |
976 | |
977 lea rsp,[((-88))+rsp] | |
978 movaps XMMWORD[rsp],xmm6 | |
979 movaps XMMWORD[16+rsp],xmm7 | |
980 movaps XMMWORD[32+rsp],xmm8 | |
981 movaps XMMWORD[48+rsp],xmm9 | |
982 $L$ccm64_dec_body: | |
983 mov eax,DWORD[240+rcx] | |
984 movups xmm6,XMMWORD[r8] | |
985 movdqu xmm3,XMMWORD[r9] | |
986 movdqa xmm9,XMMWORD[$L$increment64] | |
987 movdqa xmm7,XMMWORD[$L$bswap_mask] | |
988 | |
989 movaps xmm2,xmm6 | |
990 mov r10d,eax | |
991 mov r11,rcx | |
992 DB 102,15,56,0,247 | |
993 movups xmm0,XMMWORD[rcx] | |
994 movups xmm1,XMMWORD[16+rcx] | |
995 lea rcx,[32+rcx] | |
996 xorps xmm2,xmm0 | |
997 $L$oop_enc1_5: | |
998 DB 102,15,56,220,209 | |
999 dec eax | |
1000 movups xmm1,XMMWORD[rcx] | |
1001 lea rcx,[16+rcx] | |
1002 jnz NEAR $L$oop_enc1_5 | |
1003 DB 102,15,56,221,209 | |
1004 shl r10d,4 | |
1005 mov eax,16 | |
1006 movups xmm8,XMMWORD[rdi] | |
1007 paddq xmm6,xmm9 | |
1008 lea rdi,[16+rdi] | |
1009 sub rax,r10 | |
1010 lea rcx,[32+r10*1+r11] | |
1011 mov r10,rax | |
1012 jmp NEAR $L$ccm64_dec_outer | |
1013 ALIGN 16 | |
1014 $L$ccm64_dec_outer: | |
1015 xorps xmm8,xmm2 | |
1016 movdqa xmm2,xmm6 | |
1017 movups XMMWORD[rsi],xmm8 | |
1018 lea rsi,[16+rsi] | |
1019 DB 102,15,56,0,215 | |
1020 | |
1021 sub rdx,1 | |
1022 jz NEAR $L$ccm64_dec_break | |
1023 | |
1024 movups xmm0,XMMWORD[r11] | |
1025 mov rax,r10 | |
1026 movups xmm1,XMMWORD[16+r11] | |
1027 xorps xmm8,xmm0 | |
1028 xorps xmm2,xmm0 | |
1029 xorps xmm3,xmm8 | |
1030 movups xmm0,XMMWORD[32+r11] | |
1031 jmp NEAR $L$ccm64_dec2_loop | |
1032 ALIGN 16 | |
1033 $L$ccm64_dec2_loop: | |
1034 DB 102,15,56,220,209 | |
1035 DB 102,15,56,220,217 | |
1036 movups xmm1,XMMWORD[rax*1+rcx] | |
1037 add rax,32 | |
1038 DB 102,15,56,220,208 | |
1039 DB 102,15,56,220,216 | |
1040 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
1041 jnz NEAR $L$ccm64_dec2_loop | |
1042 movups xmm8,XMMWORD[rdi] | |
1043 paddq xmm6,xmm9 | |
1044 DB 102,15,56,220,209 | |
1045 DB 102,15,56,220,217 | |
1046 DB 102,15,56,221,208 | |
1047 DB 102,15,56,221,216 | |
1048 lea rdi,[16+rdi] | |
1049 jmp NEAR $L$ccm64_dec_outer | |
1050 | |
1051 ALIGN 16 | |
1052 $L$ccm64_dec_break: | |
1053 | |
1054 mov eax,DWORD[240+r11] | |
1055 movups xmm0,XMMWORD[r11] | |
1056 movups xmm1,XMMWORD[16+r11] | |
1057 xorps xmm8,xmm0 | |
1058 lea r11,[32+r11] | |
1059 xorps xmm3,xmm8 | |
1060 $L$oop_enc1_6: | |
1061 DB 102,15,56,220,217 | |
1062 dec eax | |
1063 movups xmm1,XMMWORD[r11] | |
1064 lea r11,[16+r11] | |
1065 jnz NEAR $L$oop_enc1_6 | |
1066 DB 102,15,56,221,217 | |
1067 pxor xmm0,xmm0 | |
1068 pxor xmm1,xmm1 | |
1069 pxor xmm2,xmm2 | |
1070 movups XMMWORD[r9],xmm3 | |
1071 pxor xmm3,xmm3 | |
1072 pxor xmm8,xmm8 | |
1073 pxor xmm6,xmm6 | |
1074 movaps xmm6,XMMWORD[rsp] | |
1075 movaps XMMWORD[rsp],xmm0 | |
1076 movaps xmm7,XMMWORD[16+rsp] | |
1077 movaps XMMWORD[16+rsp],xmm0 | |
1078 movaps xmm8,XMMWORD[32+rsp] | |
1079 movaps XMMWORD[32+rsp],xmm0 | |
1080 movaps xmm9,XMMWORD[48+rsp] | |
1081 movaps XMMWORD[48+rsp],xmm0 | |
1082 lea rsp,[88+rsp] | |
1083 $L$ccm64_dec_ret: | |
1084 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
1085 mov rsi,QWORD[16+rsp] | |
1086 DB 0F3h,0C3h ;repret | |
1087 $L$SEH_end_aesni_ccm64_decrypt_blocks: | |
1088 global aesni_ctr32_encrypt_blocks | |
1089 | |
1090 ALIGN 16 | |
1091 aesni_ctr32_encrypt_blocks: | |
1092 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
1093 mov QWORD[16+rsp],rsi | |
1094 mov rax,rsp | |
1095 $L$SEH_begin_aesni_ctr32_encrypt_blocks: | |
1096 mov rdi,rcx | |
1097 mov rsi,rdx | |
1098 mov rdx,r8 | |
1099 mov rcx,r9 | |
1100 mov r8,QWORD[40+rsp] | |
1101 | |
1102 | |
1103 cmp rdx,1 | |
1104 jne NEAR $L$ctr32_bulk | |
1105 | |
1106 | |
1107 | |
1108 movups xmm2,XMMWORD[r8] | |
1109 movups xmm3,XMMWORD[rdi] | |
1110 mov edx,DWORD[240+rcx] | |
1111 movups xmm0,XMMWORD[rcx] | |
1112 movups xmm1,XMMWORD[16+rcx] | |
1113 lea rcx,[32+rcx] | |
1114 xorps xmm2,xmm0 | |
1115 $L$oop_enc1_7: | |
1116 DB 102,15,56,220,209 | |
1117 dec edx | |
1118 movups xmm1,XMMWORD[rcx] | |
1119 lea rcx,[16+rcx] | |
1120 jnz NEAR $L$oop_enc1_7 | |
1121 DB 102,15,56,221,209 | |
1122 pxor xmm0,xmm0 | |
1123 pxor xmm1,xmm1 | |
1124 xorps xmm2,xmm3 | |
1125 pxor xmm3,xmm3 | |
1126 movups XMMWORD[rsi],xmm2 | |
1127 xorps xmm2,xmm2 | |
1128 jmp NEAR $L$ctr32_epilogue | |
1129 | |
1130 ALIGN 16 | |
1131 $L$ctr32_bulk: | |
1132 lea r11,[rsp] | |
1133 push rbp | |
1134 sub rsp,288 | |
1135 and rsp,-16 | |
1136 movaps XMMWORD[(-168)+r11],xmm6 | |
1137 movaps XMMWORD[(-152)+r11],xmm7 | |
1138 movaps XMMWORD[(-136)+r11],xmm8 | |
1139 movaps XMMWORD[(-120)+r11],xmm9 | |
1140 movaps XMMWORD[(-104)+r11],xmm10 | |
1141 movaps XMMWORD[(-88)+r11],xmm11 | |
1142 movaps XMMWORD[(-72)+r11],xmm12 | |
1143 movaps XMMWORD[(-56)+r11],xmm13 | |
1144 movaps XMMWORD[(-40)+r11],xmm14 | |
1145 movaps XMMWORD[(-24)+r11],xmm15 | |
1146 $L$ctr32_body: | |
1147 | |
1148 | |
1149 | |
1150 | |
1151 movdqu xmm2,XMMWORD[r8] | |
1152 movdqu xmm0,XMMWORD[rcx] | |
1153 mov r8d,DWORD[12+r8] | |
1154 pxor xmm2,xmm0 | |
1155 mov ebp,DWORD[12+rcx] | |
1156 movdqa XMMWORD[rsp],xmm2 | |
1157 bswap r8d | |
1158 movdqa xmm3,xmm2 | |
1159 movdqa xmm4,xmm2 | |
1160 movdqa xmm5,xmm2 | |
1161 movdqa XMMWORD[64+rsp],xmm2 | |
1162 movdqa XMMWORD[80+rsp],xmm2 | |
1163 movdqa XMMWORD[96+rsp],xmm2 | |
1164 mov r10,rdx | |
1165 movdqa XMMWORD[112+rsp],xmm2 | |
1166 | |
1167 lea rax,[1+r8] | |
1168 lea rdx,[2+r8] | |
1169 bswap eax | |
1170 bswap edx | |
1171 xor eax,ebp | |
1172 xor edx,ebp | |
1173 DB 102,15,58,34,216,3 | |
1174 lea rax,[3+r8] | |
1175 movdqa XMMWORD[16+rsp],xmm3 | |
1176 DB 102,15,58,34,226,3 | |
1177 bswap eax | |
1178 mov rdx,r10 | |
1179 lea r10,[4+r8] | |
1180 movdqa XMMWORD[32+rsp],xmm4 | |
1181 xor eax,ebp | |
1182 bswap r10d | |
1183 DB 102,15,58,34,232,3 | |
1184 xor r10d,ebp | |
1185 movdqa XMMWORD[48+rsp],xmm5 | |
1186 lea r9,[5+r8] | |
1187 mov DWORD[((64+12))+rsp],r10d | |
1188 bswap r9d | |
1189 lea r10,[6+r8] | |
1190 mov eax,DWORD[240+rcx] | |
1191 xor r9d,ebp | |
1192 bswap r10d | |
1193 mov DWORD[((80+12))+rsp],r9d | |
1194 xor r10d,ebp | |
1195 lea r9,[7+r8] | |
1196 mov DWORD[((96+12))+rsp],r10d | |
1197 bswap r9d | |
1198 mov r10d,DWORD[((OPENSSL_ia32cap_P+4))] | |
1199 xor r9d,ebp | |
1200 and r10d,71303168 | |
1201 mov DWORD[((112+12))+rsp],r9d | |
1202 | |
1203 movups xmm1,XMMWORD[16+rcx] | |
1204 | |
1205 movdqa xmm6,XMMWORD[64+rsp] | |
1206 movdqa xmm7,XMMWORD[80+rsp] | |
1207 | |
1208 cmp rdx,8 | |
1209 jb NEAR $L$ctr32_tail | |
1210 | |
1211 sub rdx,6 | |
1212 cmp r10d,4194304 | |
1213 je NEAR $L$ctr32_6x | |
1214 | |
1215 lea rcx,[128+rcx] | |
1216 sub rdx,2 | |
1217 jmp NEAR $L$ctr32_loop8 | |
1218 | |
1219 ALIGN 16 | |
1220 $L$ctr32_6x: | |
1221 shl eax,4 | |
1222 mov r10d,48 | |
1223 bswap ebp | |
1224 lea rcx,[32+rax*1+rcx] | |
1225 sub r10,rax | |
1226 jmp NEAR $L$ctr32_loop6 | |
1227 | |
1228 ALIGN 16 | |
1229 $L$ctr32_loop6: | |
1230 add r8d,6 | |
1231 movups xmm0,XMMWORD[((-48))+r10*1+rcx] | |
1232 DB 102,15,56,220,209 | |
1233 mov eax,r8d | |
1234 xor eax,ebp | |
1235 DB 102,15,56,220,217 | |
1236 DB 0x0f,0x38,0xf1,0x44,0x24,12 | |
1237 lea eax,[1+r8] | |
1238 DB 102,15,56,220,225 | |
1239 xor eax,ebp | |
1240 DB 0x0f,0x38,0xf1,0x44,0x24,28 | |
1241 DB 102,15,56,220,233 | |
1242 lea eax,[2+r8] | |
1243 xor eax,ebp | |
1244 DB 102,15,56,220,241 | |
1245 DB 0x0f,0x38,0xf1,0x44,0x24,44 | |
1246 lea eax,[3+r8] | |
1247 DB 102,15,56,220,249 | |
1248 movups xmm1,XMMWORD[((-32))+r10*1+rcx] | |
1249 xor eax,ebp | |
1250 | |
1251 DB 102,15,56,220,208 | |
1252 DB 0x0f,0x38,0xf1,0x44,0x24,60 | |
1253 lea eax,[4+r8] | |
1254 DB 102,15,56,220,216 | |
1255 xor eax,ebp | |
1256 DB 0x0f,0x38,0xf1,0x44,0x24,76 | |
1257 DB 102,15,56,220,224 | |
1258 lea eax,[5+r8] | |
1259 xor eax,ebp | |
1260 DB 102,15,56,220,232 | |
1261 DB 0x0f,0x38,0xf1,0x44,0x24,92 | |
1262 mov rax,r10 | |
1263 DB 102,15,56,220,240 | |
1264 DB 102,15,56,220,248 | |
1265 movups xmm0,XMMWORD[((-16))+r10*1+rcx] | |
1266 | |
1267 call $L$enc_loop6 | |
1268 | |
1269 movdqu xmm8,XMMWORD[rdi] | |
1270 movdqu xmm9,XMMWORD[16+rdi] | |
1271 movdqu xmm10,XMMWORD[32+rdi] | |
1272 movdqu xmm11,XMMWORD[48+rdi] | |
1273 movdqu xmm12,XMMWORD[64+rdi] | |
1274 movdqu xmm13,XMMWORD[80+rdi] | |
1275 lea rdi,[96+rdi] | |
1276 movups xmm1,XMMWORD[((-64))+r10*1+rcx] | |
1277 pxor xmm8,xmm2 | |
1278 movaps xmm2,XMMWORD[rsp] | |
1279 pxor xmm9,xmm3 | |
1280 movaps xmm3,XMMWORD[16+rsp] | |
1281 pxor xmm10,xmm4 | |
1282 movaps xmm4,XMMWORD[32+rsp] | |
1283 pxor xmm11,xmm5 | |
1284 movaps xmm5,XMMWORD[48+rsp] | |
1285 pxor xmm12,xmm6 | |
1286 movaps xmm6,XMMWORD[64+rsp] | |
1287 pxor xmm13,xmm7 | |
1288 movaps xmm7,XMMWORD[80+rsp] | |
1289 movdqu XMMWORD[rsi],xmm8 | |
1290 movdqu XMMWORD[16+rsi],xmm9 | |
1291 movdqu XMMWORD[32+rsi],xmm10 | |
1292 movdqu XMMWORD[48+rsi],xmm11 | |
1293 movdqu XMMWORD[64+rsi],xmm12 | |
1294 movdqu XMMWORD[80+rsi],xmm13 | |
1295 lea rsi,[96+rsi] | |
1296 | |
1297 sub rdx,6 | |
1298 jnc NEAR $L$ctr32_loop6 | |
1299 | |
1300 add rdx,6 | |
1301 jz NEAR $L$ctr32_done | |
1302 | |
1303 lea eax,[((-48))+r10] | |
1304 lea rcx,[((-80))+r10*1+rcx] | |
1305 neg eax | |
1306 shr eax,4 | |
1307 jmp NEAR $L$ctr32_tail | |
1308 | |
1309 ALIGN 32 | |
1310 $L$ctr32_loop8: | |
1311 add r8d,8 | |
1312 movdqa xmm8,XMMWORD[96+rsp] | |
1313 DB 102,15,56,220,209 | |
1314 mov r9d,r8d | |
1315 movdqa xmm9,XMMWORD[112+rsp] | |
1316 DB 102,15,56,220,217 | |
1317 bswap r9d | |
1318 movups xmm0,XMMWORD[((32-128))+rcx] | |
1319 DB 102,15,56,220,225 | |
1320 xor r9d,ebp | |
1321 nop | |
1322 DB 102,15,56,220,233 | |
1323 mov DWORD[((0+12))+rsp],r9d | |
1324 lea r9,[1+r8] | |
1325 DB 102,15,56,220,241 | |
1326 DB 102,15,56,220,249 | |
1327 DB 102,68,15,56,220,193 | |
1328 DB 102,68,15,56,220,201 | |
1329 movups xmm1,XMMWORD[((48-128))+rcx] | |
1330 bswap r9d | |
1331 DB 102,15,56,220,208 | |
1332 DB 102,15,56,220,216 | |
1333 xor r9d,ebp | |
1334 DB 0x66,0x90 | |
1335 DB 102,15,56,220,224 | |
1336 DB 102,15,56,220,232 | |
1337 mov DWORD[((16+12))+rsp],r9d | |
1338 lea r9,[2+r8] | |
1339 DB 102,15,56,220,240 | |
1340 DB 102,15,56,220,248 | |
1341 DB 102,68,15,56,220,192 | |
1342 DB 102,68,15,56,220,200 | |
1343 movups xmm0,XMMWORD[((64-128))+rcx] | |
1344 bswap r9d | |
1345 DB 102,15,56,220,209 | |
1346 DB 102,15,56,220,217 | |
1347 xor r9d,ebp | |
1348 DB 0x66,0x90 | |
1349 DB 102,15,56,220,225 | |
1350 DB 102,15,56,220,233 | |
1351 mov DWORD[((32+12))+rsp],r9d | |
1352 lea r9,[3+r8] | |
1353 DB 102,15,56,220,241 | |
1354 DB 102,15,56,220,249 | |
1355 DB 102,68,15,56,220,193 | |
1356 DB 102,68,15,56,220,201 | |
1357 movups xmm1,XMMWORD[((80-128))+rcx] | |
1358 bswap r9d | |
1359 DB 102,15,56,220,208 | |
1360 DB 102,15,56,220,216 | |
1361 xor r9d,ebp | |
1362 DB 0x66,0x90 | |
1363 DB 102,15,56,220,224 | |
1364 DB 102,15,56,220,232 | |
1365 mov DWORD[((48+12))+rsp],r9d | |
1366 lea r9,[4+r8] | |
1367 DB 102,15,56,220,240 | |
1368 DB 102,15,56,220,248 | |
1369 DB 102,68,15,56,220,192 | |
1370 DB 102,68,15,56,220,200 | |
1371 movups xmm0,XMMWORD[((96-128))+rcx] | |
1372 bswap r9d | |
1373 DB 102,15,56,220,209 | |
1374 DB 102,15,56,220,217 | |
1375 xor r9d,ebp | |
1376 DB 0x66,0x90 | |
1377 DB 102,15,56,220,225 | |
1378 DB 102,15,56,220,233 | |
1379 mov DWORD[((64+12))+rsp],r9d | |
1380 lea r9,[5+r8] | |
1381 DB 102,15,56,220,241 | |
1382 DB 102,15,56,220,249 | |
1383 DB 102,68,15,56,220,193 | |
1384 DB 102,68,15,56,220,201 | |
1385 movups xmm1,XMMWORD[((112-128))+rcx] | |
1386 bswap r9d | |
1387 DB 102,15,56,220,208 | |
1388 DB 102,15,56,220,216 | |
1389 xor r9d,ebp | |
1390 DB 0x66,0x90 | |
1391 DB 102,15,56,220,224 | |
1392 DB 102,15,56,220,232 | |
1393 mov DWORD[((80+12))+rsp],r9d | |
1394 lea r9,[6+r8] | |
1395 DB 102,15,56,220,240 | |
1396 DB 102,15,56,220,248 | |
1397 DB 102,68,15,56,220,192 | |
1398 DB 102,68,15,56,220,200 | |
1399 movups xmm0,XMMWORD[((128-128))+rcx] | |
1400 bswap r9d | |
1401 DB 102,15,56,220,209 | |
1402 DB 102,15,56,220,217 | |
1403 xor r9d,ebp | |
1404 DB 0x66,0x90 | |
1405 DB 102,15,56,220,225 | |
1406 DB 102,15,56,220,233 | |
1407 mov DWORD[((96+12))+rsp],r9d | |
1408 lea r9,[7+r8] | |
1409 DB 102,15,56,220,241 | |
1410 DB 102,15,56,220,249 | |
1411 DB 102,68,15,56,220,193 | |
1412 DB 102,68,15,56,220,201 | |
1413 movups xmm1,XMMWORD[((144-128))+rcx] | |
1414 bswap r9d | |
1415 DB 102,15,56,220,208 | |
1416 DB 102,15,56,220,216 | |
1417 DB 102,15,56,220,224 | |
1418 xor r9d,ebp | |
1419 movdqu xmm10,XMMWORD[rdi] | |
1420 DB 102,15,56,220,232 | |
1421 mov DWORD[((112+12))+rsp],r9d | |
1422 cmp eax,11 | |
1423 DB 102,15,56,220,240 | |
1424 DB 102,15,56,220,248 | |
1425 DB 102,68,15,56,220,192 | |
1426 DB 102,68,15,56,220,200 | |
1427 movups xmm0,XMMWORD[((160-128))+rcx] | |
1428 | |
1429 jb NEAR $L$ctr32_enc_done | |
1430 | |
1431 DB 102,15,56,220,209 | |
1432 DB 102,15,56,220,217 | |
1433 DB 102,15,56,220,225 | |
1434 DB 102,15,56,220,233 | |
1435 DB 102,15,56,220,241 | |
1436 DB 102,15,56,220,249 | |
1437 DB 102,68,15,56,220,193 | |
1438 DB 102,68,15,56,220,201 | |
1439 movups xmm1,XMMWORD[((176-128))+rcx] | |
1440 | |
1441 DB 102,15,56,220,208 | |
1442 DB 102,15,56,220,216 | |
1443 DB 102,15,56,220,224 | |
1444 DB 102,15,56,220,232 | |
1445 DB 102,15,56,220,240 | |
1446 DB 102,15,56,220,248 | |
1447 DB 102,68,15,56,220,192 | |
1448 DB 102,68,15,56,220,200 | |
1449 movups xmm0,XMMWORD[((192-128))+rcx] | |
1450 je NEAR $L$ctr32_enc_done | |
1451 | |
1452 DB 102,15,56,220,209 | |
1453 DB 102,15,56,220,217 | |
1454 DB 102,15,56,220,225 | |
1455 DB 102,15,56,220,233 | |
1456 DB 102,15,56,220,241 | |
1457 DB 102,15,56,220,249 | |
1458 DB 102,68,15,56,220,193 | |
1459 DB 102,68,15,56,220,201 | |
1460 movups xmm1,XMMWORD[((208-128))+rcx] | |
1461 | |
1462 DB 102,15,56,220,208 | |
1463 DB 102,15,56,220,216 | |
1464 DB 102,15,56,220,224 | |
1465 DB 102,15,56,220,232 | |
1466 DB 102,15,56,220,240 | |
1467 DB 102,15,56,220,248 | |
1468 DB 102,68,15,56,220,192 | |
1469 DB 102,68,15,56,220,200 | |
1470 movups xmm0,XMMWORD[((224-128))+rcx] | |
1471 jmp NEAR $L$ctr32_enc_done | |
1472 | |
1473 ALIGN 16 | |
1474 $L$ctr32_enc_done: | |
1475 movdqu xmm11,XMMWORD[16+rdi] | |
1476 pxor xmm10,xmm0 | |
1477 movdqu xmm12,XMMWORD[32+rdi] | |
1478 pxor xmm11,xmm0 | |
1479 movdqu xmm13,XMMWORD[48+rdi] | |
1480 pxor xmm12,xmm0 | |
1481 movdqu xmm14,XMMWORD[64+rdi] | |
1482 pxor xmm13,xmm0 | |
1483 movdqu xmm15,XMMWORD[80+rdi] | |
1484 pxor xmm14,xmm0 | |
1485 pxor xmm15,xmm0 | |
1486 DB 102,15,56,220,209 | |
1487 DB 102,15,56,220,217 | |
1488 DB 102,15,56,220,225 | |
1489 DB 102,15,56,220,233 | |
1490 DB 102,15,56,220,241 | |
1491 DB 102,15,56,220,249 | |
1492 DB 102,68,15,56,220,193 | |
1493 DB 102,68,15,56,220,201 | |
1494 movdqu xmm1,XMMWORD[96+rdi] | |
1495 lea rdi,[128+rdi] | |
1496 | |
1497 DB 102,65,15,56,221,210 | |
1498 pxor xmm1,xmm0 | |
1499 movdqu xmm10,XMMWORD[((112-128))+rdi] | |
1500 DB 102,65,15,56,221,219 | |
1501 pxor xmm10,xmm0 | |
1502 movdqa xmm11,XMMWORD[rsp] | |
1503 DB 102,65,15,56,221,228 | |
1504 DB 102,65,15,56,221,237 | |
1505 movdqa xmm12,XMMWORD[16+rsp] | |
1506 movdqa xmm13,XMMWORD[32+rsp] | |
1507 DB 102,65,15,56,221,246 | |
1508 DB 102,65,15,56,221,255 | |
1509 movdqa xmm14,XMMWORD[48+rsp] | |
1510 movdqa xmm15,XMMWORD[64+rsp] | |
1511 DB 102,68,15,56,221,193 | |
1512 movdqa xmm0,XMMWORD[80+rsp] | |
1513 movups xmm1,XMMWORD[((16-128))+rcx] | |
1514 DB 102,69,15,56,221,202 | |
1515 | |
1516 movups XMMWORD[rsi],xmm2 | |
1517 movdqa xmm2,xmm11 | |
1518 movups XMMWORD[16+rsi],xmm3 | |
1519 movdqa xmm3,xmm12 | |
1520 movups XMMWORD[32+rsi],xmm4 | |
1521 movdqa xmm4,xmm13 | |
1522 movups XMMWORD[48+rsi],xmm5 | |
1523 movdqa xmm5,xmm14 | |
1524 movups XMMWORD[64+rsi],xmm6 | |
1525 movdqa xmm6,xmm15 | |
1526 movups XMMWORD[80+rsi],xmm7 | |
1527 movdqa xmm7,xmm0 | |
1528 movups XMMWORD[96+rsi],xmm8 | |
1529 movups XMMWORD[112+rsi],xmm9 | |
1530 lea rsi,[128+rsi] | |
1531 | |
1532 sub rdx,8 | |
1533 jnc NEAR $L$ctr32_loop8 | |
1534 | |
1535 add rdx,8 | |
1536 jz NEAR $L$ctr32_done | |
1537 lea rcx,[((-128))+rcx] | |
1538 | |
1539 $L$ctr32_tail: | |
1540 | |
1541 | |
1542 lea rcx,[16+rcx] | |
1543 cmp rdx,4 | |
1544 jb NEAR $L$ctr32_loop3 | |
1545 je NEAR $L$ctr32_loop4 | |
1546 | |
1547 | |
1548 shl eax,4 | |
1549 movdqa xmm8,XMMWORD[96+rsp] | |
1550 pxor xmm9,xmm9 | |
1551 | |
1552 movups xmm0,XMMWORD[16+rcx] | |
1553 DB 102,15,56,220,209 | |
1554 DB 102,15,56,220,217 | |
1555 lea rcx,[((32-16))+rax*1+rcx] | |
1556 neg rax | |
1557 DB 102,15,56,220,225 | |
1558 add rax,16 | |
1559 movups xmm10,XMMWORD[rdi] | |
1560 DB 102,15,56,220,233 | |
1561 DB 102,15,56,220,241 | |
1562 movups xmm11,XMMWORD[16+rdi] | |
1563 movups xmm12,XMMWORD[32+rdi] | |
1564 DB 102,15,56,220,249 | |
1565 DB 102,68,15,56,220,193 | |
1566 | |
1567 call $L$enc_loop8_enter | |
1568 | |
1569 movdqu xmm13,XMMWORD[48+rdi] | |
1570 pxor xmm2,xmm10 | |
1571 movdqu xmm10,XMMWORD[64+rdi] | |
1572 pxor xmm3,xmm11 | |
1573 movdqu XMMWORD[rsi],xmm2 | |
1574 pxor xmm4,xmm12 | |
1575 movdqu XMMWORD[16+rsi],xmm3 | |
1576 pxor xmm5,xmm13 | |
1577 movdqu XMMWORD[32+rsi],xmm4 | |
1578 pxor xmm6,xmm10 | |
1579 movdqu XMMWORD[48+rsi],xmm5 | |
1580 movdqu XMMWORD[64+rsi],xmm6 | |
1581 cmp rdx,6 | |
1582 jb NEAR $L$ctr32_done | |
1583 | |
1584 movups xmm11,XMMWORD[80+rdi] | |
1585 xorps xmm7,xmm11 | |
1586 movups XMMWORD[80+rsi],xmm7 | |
1587 je NEAR $L$ctr32_done | |
1588 | |
1589 movups xmm12,XMMWORD[96+rdi] | |
1590 xorps xmm8,xmm12 | |
1591 movups XMMWORD[96+rsi],xmm8 | |
1592 jmp NEAR $L$ctr32_done | |
1593 | |
1594 ALIGN 32 | |
1595 $L$ctr32_loop4: | |
1596 DB 102,15,56,220,209 | |
1597 lea rcx,[16+rcx] | |
1598 dec eax | |
1599 DB 102,15,56,220,217 | |
1600 DB 102,15,56,220,225 | |
1601 DB 102,15,56,220,233 | |
1602 movups xmm1,XMMWORD[rcx] | |
1603 jnz NEAR $L$ctr32_loop4 | |
1604 DB 102,15,56,221,209 | |
1605 DB 102,15,56,221,217 | |
1606 movups xmm10,XMMWORD[rdi] | |
1607 movups xmm11,XMMWORD[16+rdi] | |
1608 DB 102,15,56,221,225 | |
1609 DB 102,15,56,221,233 | |
1610 movups xmm12,XMMWORD[32+rdi] | |
1611 movups xmm13,XMMWORD[48+rdi] | |
1612 | |
1613 xorps xmm2,xmm10 | |
1614 movups XMMWORD[rsi],xmm2 | |
1615 xorps xmm3,xmm11 | |
1616 movups XMMWORD[16+rsi],xmm3 | |
1617 pxor xmm4,xmm12 | |
1618 movdqu XMMWORD[32+rsi],xmm4 | |
1619 pxor xmm5,xmm13 | |
1620 movdqu XMMWORD[48+rsi],xmm5 | |
1621 jmp NEAR $L$ctr32_done | |
1622 | |
1623 ALIGN 32 | |
1624 $L$ctr32_loop3: | |
1625 DB 102,15,56,220,209 | |
1626 lea rcx,[16+rcx] | |
1627 dec eax | |
1628 DB 102,15,56,220,217 | |
1629 DB 102,15,56,220,225 | |
1630 movups xmm1,XMMWORD[rcx] | |
1631 jnz NEAR $L$ctr32_loop3 | |
1632 DB 102,15,56,221,209 | |
1633 DB 102,15,56,221,217 | |
1634 DB 102,15,56,221,225 | |
1635 | |
1636 movups xmm10,XMMWORD[rdi] | |
1637 xorps xmm2,xmm10 | |
1638 movups XMMWORD[rsi],xmm2 | |
1639 cmp rdx,2 | |
1640 jb NEAR $L$ctr32_done | |
1641 | |
1642 movups xmm11,XMMWORD[16+rdi] | |
1643 xorps xmm3,xmm11 | |
1644 movups XMMWORD[16+rsi],xmm3 | |
1645 je NEAR $L$ctr32_done | |
1646 | |
1647 movups xmm12,XMMWORD[32+rdi] | |
1648 xorps xmm4,xmm12 | |
1649 movups XMMWORD[32+rsi],xmm4 | |
1650 | |
1651 $L$ctr32_done: | |
1652 xorps xmm0,xmm0 | |
1653 xor ebp,ebp | |
1654 pxor xmm1,xmm1 | |
1655 pxor xmm2,xmm2 | |
1656 pxor xmm3,xmm3 | |
1657 pxor xmm4,xmm4 | |
1658 pxor xmm5,xmm5 | |
1659 movaps xmm6,XMMWORD[((-168))+r11] | |
1660 movaps XMMWORD[(-168)+r11],xmm0 | |
1661 movaps xmm7,XMMWORD[((-152))+r11] | |
1662 movaps XMMWORD[(-152)+r11],xmm0 | |
1663 movaps xmm8,XMMWORD[((-136))+r11] | |
1664 movaps XMMWORD[(-136)+r11],xmm0 | |
1665 movaps xmm9,XMMWORD[((-120))+r11] | |
1666 movaps XMMWORD[(-120)+r11],xmm0 | |
1667 movaps xmm10,XMMWORD[((-104))+r11] | |
1668 movaps XMMWORD[(-104)+r11],xmm0 | |
1669 movaps xmm11,XMMWORD[((-88))+r11] | |
1670 movaps XMMWORD[(-88)+r11],xmm0 | |
1671 movaps xmm12,XMMWORD[((-72))+r11] | |
1672 movaps XMMWORD[(-72)+r11],xmm0 | |
1673 movaps xmm13,XMMWORD[((-56))+r11] | |
1674 movaps XMMWORD[(-56)+r11],xmm0 | |
1675 movaps xmm14,XMMWORD[((-40))+r11] | |
1676 movaps XMMWORD[(-40)+r11],xmm0 | |
1677 movaps xmm15,XMMWORD[((-24))+r11] | |
1678 movaps XMMWORD[(-24)+r11],xmm0 | |
1679 movaps XMMWORD[rsp],xmm0 | |
1680 movaps XMMWORD[16+rsp],xmm0 | |
1681 movaps XMMWORD[32+rsp],xmm0 | |
1682 movaps XMMWORD[48+rsp],xmm0 | |
1683 movaps XMMWORD[64+rsp],xmm0 | |
1684 movaps XMMWORD[80+rsp],xmm0 | |
1685 movaps XMMWORD[96+rsp],xmm0 | |
1686 movaps XMMWORD[112+rsp],xmm0 | |
1687 mov rbp,QWORD[((-8))+r11] | |
1688 lea rsp,[r11] | |
1689 $L$ctr32_epilogue: | |
1690 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
1691 mov rsi,QWORD[16+rsp] | |
1692 DB 0F3h,0C3h ;repret | |
1693 $L$SEH_end_aesni_ctr32_encrypt_blocks: | |
1694 global aesni_xts_encrypt | |
1695 | |
1696 ALIGN 16 | |
1697 aesni_xts_encrypt: | |
1698 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
1699 mov QWORD[16+rsp],rsi | |
1700 mov rax,rsp | |
1701 $L$SEH_begin_aesni_xts_encrypt: | |
1702 mov rdi,rcx | |
1703 mov rsi,rdx | |
1704 mov rdx,r8 | |
1705 mov rcx,r9 | |
1706 mov r8,QWORD[40+rsp] | |
1707 mov r9,QWORD[48+rsp] | |
1708 | |
1709 | |
1710 lea r11,[rsp] | |
1711 push rbp | |
1712 sub rsp,272 | |
1713 and rsp,-16 | |
1714 movaps XMMWORD[(-168)+r11],xmm6 | |
1715 movaps XMMWORD[(-152)+r11],xmm7 | |
1716 movaps XMMWORD[(-136)+r11],xmm8 | |
1717 movaps XMMWORD[(-120)+r11],xmm9 | |
1718 movaps XMMWORD[(-104)+r11],xmm10 | |
1719 movaps XMMWORD[(-88)+r11],xmm11 | |
1720 movaps XMMWORD[(-72)+r11],xmm12 | |
1721 movaps XMMWORD[(-56)+r11],xmm13 | |
1722 movaps XMMWORD[(-40)+r11],xmm14 | |
1723 movaps XMMWORD[(-24)+r11],xmm15 | |
1724 $L$xts_enc_body: | |
1725 movups xmm2,XMMWORD[r9] | |
1726 mov eax,DWORD[240+r8] | |
1727 mov r10d,DWORD[240+rcx] | |
1728 movups xmm0,XMMWORD[r8] | |
1729 movups xmm1,XMMWORD[16+r8] | |
1730 lea r8,[32+r8] | |
1731 xorps xmm2,xmm0 | |
1732 $L$oop_enc1_8: | |
1733 DB 102,15,56,220,209 | |
1734 dec eax | |
1735 movups xmm1,XMMWORD[r8] | |
1736 lea r8,[16+r8] | |
1737 jnz NEAR $L$oop_enc1_8 | |
1738 DB 102,15,56,221,209 | |
1739 movups xmm0,XMMWORD[rcx] | |
1740 mov rbp,rcx | |
1741 mov eax,r10d | |
1742 shl r10d,4 | |
1743 mov r9,rdx | |
1744 and rdx,-16 | |
1745 | |
1746 movups xmm1,XMMWORD[16+r10*1+rcx] | |
1747 | |
1748 movdqa xmm8,XMMWORD[$L$xts_magic] | |
1749 movdqa xmm15,xmm2 | |
1750 pshufd xmm9,xmm2,0x5f | |
1751 pxor xmm1,xmm0 | |
1752 movdqa xmm14,xmm9 | |
1753 paddd xmm9,xmm9 | |
1754 movdqa xmm10,xmm15 | |
1755 psrad xmm14,31 | |
1756 paddq xmm15,xmm15 | |
1757 pand xmm14,xmm8 | |
1758 pxor xmm10,xmm0 | |
1759 pxor xmm15,xmm14 | |
1760 movdqa xmm14,xmm9 | |
1761 paddd xmm9,xmm9 | |
1762 movdqa xmm11,xmm15 | |
1763 psrad xmm14,31 | |
1764 paddq xmm15,xmm15 | |
1765 pand xmm14,xmm8 | |
1766 pxor xmm11,xmm0 | |
1767 pxor xmm15,xmm14 | |
1768 movdqa xmm14,xmm9 | |
1769 paddd xmm9,xmm9 | |
1770 movdqa xmm12,xmm15 | |
1771 psrad xmm14,31 | |
1772 paddq xmm15,xmm15 | |
1773 pand xmm14,xmm8 | |
1774 pxor xmm12,xmm0 | |
1775 pxor xmm15,xmm14 | |
1776 movdqa xmm14,xmm9 | |
1777 paddd xmm9,xmm9 | |
1778 movdqa xmm13,xmm15 | |
1779 psrad xmm14,31 | |
1780 paddq xmm15,xmm15 | |
1781 pand xmm14,xmm8 | |
1782 pxor xmm13,xmm0 | |
1783 pxor xmm15,xmm14 | |
1784 movdqa xmm14,xmm15 | |
1785 psrad xmm9,31 | |
1786 paddq xmm15,xmm15 | |
1787 pand xmm9,xmm8 | |
1788 pxor xmm14,xmm0 | |
1789 pxor xmm15,xmm9 | |
1790 movaps XMMWORD[96+rsp],xmm1 | |
1791 | |
1792 sub rdx,16*6 | |
1793 jc NEAR $L$xts_enc_short | |
1794 | |
1795 mov eax,16+96 | |
1796 lea rcx,[32+r10*1+rbp] | |
1797 sub rax,r10 | |
1798 movups xmm1,XMMWORD[16+rbp] | |
1799 mov r10,rax | |
1800 lea r8,[$L$xts_magic] | |
1801 jmp NEAR $L$xts_enc_grandloop | |
1802 | |
1803 ALIGN 32 | |
1804 $L$xts_enc_grandloop: | |
1805 movdqu xmm2,XMMWORD[rdi] | |
1806 movdqa xmm8,xmm0 | |
1807 movdqu xmm3,XMMWORD[16+rdi] | |
1808 pxor xmm2,xmm10 | |
1809 movdqu xmm4,XMMWORD[32+rdi] | |
1810 pxor xmm3,xmm11 | |
1811 DB 102,15,56,220,209 | |
1812 movdqu xmm5,XMMWORD[48+rdi] | |
1813 pxor xmm4,xmm12 | |
1814 DB 102,15,56,220,217 | |
1815 movdqu xmm6,XMMWORD[64+rdi] | |
1816 pxor xmm5,xmm13 | |
1817 DB 102,15,56,220,225 | |
1818 movdqu xmm7,XMMWORD[80+rdi] | |
1819 pxor xmm8,xmm15 | |
1820 movdqa xmm9,XMMWORD[96+rsp] | |
1821 pxor xmm6,xmm14 | |
1822 DB 102,15,56,220,233 | |
1823 movups xmm0,XMMWORD[32+rbp] | |
1824 lea rdi,[96+rdi] | |
1825 pxor xmm7,xmm8 | |
1826 | |
1827 pxor xmm10,xmm9 | |
1828 DB 102,15,56,220,241 | |
1829 pxor xmm11,xmm9 | |
1830 movdqa XMMWORD[rsp],xmm10 | |
1831 DB 102,15,56,220,249 | |
1832 movups xmm1,XMMWORD[48+rbp] | |
1833 pxor xmm12,xmm9 | |
1834 | |
1835 DB 102,15,56,220,208 | |
1836 pxor xmm13,xmm9 | |
1837 movdqa XMMWORD[16+rsp],xmm11 | |
1838 DB 102,15,56,220,216 | |
1839 pxor xmm14,xmm9 | |
1840 movdqa XMMWORD[32+rsp],xmm12 | |
1841 DB 102,15,56,220,224 | |
1842 DB 102,15,56,220,232 | |
1843 pxor xmm8,xmm9 | |
1844 movdqa XMMWORD[64+rsp],xmm14 | |
1845 DB 102,15,56,220,240 | |
1846 DB 102,15,56,220,248 | |
1847 movups xmm0,XMMWORD[64+rbp] | |
1848 movdqa XMMWORD[80+rsp],xmm8 | |
1849 pshufd xmm9,xmm15,0x5f | |
1850 jmp NEAR $L$xts_enc_loop6 | |
1851 ALIGN 32 | |
1852 $L$xts_enc_loop6: | |
1853 DB 102,15,56,220,209 | |
1854 DB 102,15,56,220,217 | |
1855 DB 102,15,56,220,225 | |
1856 DB 102,15,56,220,233 | |
1857 DB 102,15,56,220,241 | |
1858 DB 102,15,56,220,249 | |
1859 movups xmm1,XMMWORD[((-64))+rax*1+rcx] | |
1860 add rax,32 | |
1861 | |
1862 DB 102,15,56,220,208 | |
1863 DB 102,15,56,220,216 | |
1864 DB 102,15,56,220,224 | |
1865 DB 102,15,56,220,232 | |
1866 DB 102,15,56,220,240 | |
1867 DB 102,15,56,220,248 | |
1868 movups xmm0,XMMWORD[((-80))+rax*1+rcx] | |
1869 jnz NEAR $L$xts_enc_loop6 | |
1870 | |
1871 movdqa xmm8,XMMWORD[r8] | |
1872 movdqa xmm14,xmm9 | |
1873 paddd xmm9,xmm9 | |
1874 DB 102,15,56,220,209 | |
1875 paddq xmm15,xmm15 | |
1876 psrad xmm14,31 | |
1877 DB 102,15,56,220,217 | |
1878 pand xmm14,xmm8 | |
1879 movups xmm10,XMMWORD[rbp] | |
1880 DB 102,15,56,220,225 | |
1881 DB 102,15,56,220,233 | |
1882 DB 102,15,56,220,241 | |
1883 pxor xmm15,xmm14 | |
1884 movaps xmm11,xmm10 | |
1885 DB 102,15,56,220,249 | |
1886 movups xmm1,XMMWORD[((-64))+rcx] | |
1887 | |
1888 movdqa xmm14,xmm9 | |
1889 DB 102,15,56,220,208 | |
1890 paddd xmm9,xmm9 | |
1891 pxor xmm10,xmm15 | |
1892 DB 102,15,56,220,216 | |
1893 psrad xmm14,31 | |
1894 paddq xmm15,xmm15 | |
1895 DB 102,15,56,220,224 | |
1896 DB 102,15,56,220,232 | |
1897 pand xmm14,xmm8 | |
1898 movaps xmm12,xmm11 | |
1899 DB 102,15,56,220,240 | |
1900 pxor xmm15,xmm14 | |
1901 movdqa xmm14,xmm9 | |
1902 DB 102,15,56,220,248 | |
1903 movups xmm0,XMMWORD[((-48))+rcx] | |
1904 | |
1905 paddd xmm9,xmm9 | |
1906 DB 102,15,56,220,209 | |
1907 pxor xmm11,xmm15 | |
1908 psrad xmm14,31 | |
1909 DB 102,15,56,220,217 | |
1910 paddq xmm15,xmm15 | |
1911 pand xmm14,xmm8 | |
1912 DB 102,15,56,220,225 | |
1913 DB 102,15,56,220,233 | |
1914 movdqa XMMWORD[48+rsp],xmm13 | |
1915 pxor xmm15,xmm14 | |
1916 DB 102,15,56,220,241 | |
1917 movaps xmm13,xmm12 | |
1918 movdqa xmm14,xmm9 | |
1919 DB 102,15,56,220,249 | |
1920 movups xmm1,XMMWORD[((-32))+rcx] | |
1921 | |
1922 paddd xmm9,xmm9 | |
1923 DB 102,15,56,220,208 | |
1924 pxor xmm12,xmm15 | |
1925 psrad xmm14,31 | |
1926 DB 102,15,56,220,216 | |
1927 paddq xmm15,xmm15 | |
1928 pand xmm14,xmm8 | |
1929 DB 102,15,56,220,224 | |
1930 DB 102,15,56,220,232 | |
1931 DB 102,15,56,220,240 | |
1932 pxor xmm15,xmm14 | |
1933 movaps xmm14,xmm13 | |
1934 DB 102,15,56,220,248 | |
1935 | |
1936 movdqa xmm0,xmm9 | |
1937 paddd xmm9,xmm9 | |
1938 DB 102,15,56,220,209 | |
1939 pxor xmm13,xmm15 | |
1940 psrad xmm0,31 | |
1941 DB 102,15,56,220,217 | |
1942 paddq xmm15,xmm15 | |
1943 pand xmm0,xmm8 | |
1944 DB 102,15,56,220,225 | |
1945 DB 102,15,56,220,233 | |
1946 pxor xmm15,xmm0 | |
1947 movups xmm0,XMMWORD[rbp] | |
1948 DB 102,15,56,220,241 | |
1949 DB 102,15,56,220,249 | |
1950 movups xmm1,XMMWORD[16+rbp] | |
1951 | |
1952 pxor xmm14,xmm15 | |
1953 DB 102,15,56,221,84,36,0 | |
1954 psrad xmm9,31 | |
1955 paddq xmm15,xmm15 | |
1956 DB 102,15,56,221,92,36,16 | |
1957 DB 102,15,56,221,100,36,32 | |
1958 pand xmm9,xmm8 | |
1959 mov rax,r10 | |
1960 DB 102,15,56,221,108,36,48 | |
1961 DB 102,15,56,221,116,36,64 | |
1962 DB 102,15,56,221,124,36,80 | |
1963 pxor xmm15,xmm9 | |
1964 | |
1965 lea rsi,[96+rsi] | |
1966 movups XMMWORD[(-96)+rsi],xmm2 | |
1967 movups XMMWORD[(-80)+rsi],xmm3 | |
1968 movups XMMWORD[(-64)+rsi],xmm4 | |
1969 movups XMMWORD[(-48)+rsi],xmm5 | |
1970 movups XMMWORD[(-32)+rsi],xmm6 | |
1971 movups XMMWORD[(-16)+rsi],xmm7 | |
1972 sub rdx,16*6 | |
1973 jnc NEAR $L$xts_enc_grandloop | |
1974 | |
1975 mov eax,16+96 | |
1976 sub eax,r10d | |
1977 mov rcx,rbp | |
1978 shr eax,4 | |
1979 | |
1980 $L$xts_enc_short: | |
1981 | |
1982 mov r10d,eax | |
1983 pxor xmm10,xmm0 | |
1984 add rdx,16*6 | |
1985 jz NEAR $L$xts_enc_done | |
1986 | |
1987 pxor xmm11,xmm0 | |
1988 cmp rdx,0x20 | |
1989 jb NEAR $L$xts_enc_one | |
1990 pxor xmm12,xmm0 | |
1991 je NEAR $L$xts_enc_two | |
1992 | |
1993 pxor xmm13,xmm0 | |
1994 cmp rdx,0x40 | |
1995 jb NEAR $L$xts_enc_three | |
1996 pxor xmm14,xmm0 | |
1997 je NEAR $L$xts_enc_four | |
1998 | |
1999 movdqu xmm2,XMMWORD[rdi] | |
2000 movdqu xmm3,XMMWORD[16+rdi] | |
2001 movdqu xmm4,XMMWORD[32+rdi] | |
2002 pxor xmm2,xmm10 | |
2003 movdqu xmm5,XMMWORD[48+rdi] | |
2004 pxor xmm3,xmm11 | |
2005 movdqu xmm6,XMMWORD[64+rdi] | |
2006 lea rdi,[80+rdi] | |
2007 pxor xmm4,xmm12 | |
2008 pxor xmm5,xmm13 | |
2009 pxor xmm6,xmm14 | |
2010 pxor xmm7,xmm7 | |
2011 | |
2012 call _aesni_encrypt6 | |
2013 | |
2014 xorps xmm2,xmm10 | |
2015 movdqa xmm10,xmm15 | |
2016 xorps xmm3,xmm11 | |
2017 xorps xmm4,xmm12 | |
2018 movdqu XMMWORD[rsi],xmm2 | |
2019 xorps xmm5,xmm13 | |
2020 movdqu XMMWORD[16+rsi],xmm3 | |
2021 xorps xmm6,xmm14 | |
2022 movdqu XMMWORD[32+rsi],xmm4 | |
2023 movdqu XMMWORD[48+rsi],xmm5 | |
2024 movdqu XMMWORD[64+rsi],xmm6 | |
2025 lea rsi,[80+rsi] | |
2026 jmp NEAR $L$xts_enc_done | |
2027 | |
2028 ALIGN 16 | |
2029 $L$xts_enc_one: | |
2030 movups xmm2,XMMWORD[rdi] | |
2031 lea rdi,[16+rdi] | |
2032 xorps xmm2,xmm10 | |
2033 movups xmm0,XMMWORD[rcx] | |
2034 movups xmm1,XMMWORD[16+rcx] | |
2035 lea rcx,[32+rcx] | |
2036 xorps xmm2,xmm0 | |
2037 $L$oop_enc1_9: | |
2038 DB 102,15,56,220,209 | |
2039 dec eax | |
2040 movups xmm1,XMMWORD[rcx] | |
2041 lea rcx,[16+rcx] | |
2042 jnz NEAR $L$oop_enc1_9 | |
2043 DB 102,15,56,221,209 | |
2044 xorps xmm2,xmm10 | |
2045 movdqa xmm10,xmm11 | |
2046 movups XMMWORD[rsi],xmm2 | |
2047 lea rsi,[16+rsi] | |
2048 jmp NEAR $L$xts_enc_done | |
2049 | |
2050 ALIGN 16 | |
2051 $L$xts_enc_two: | |
2052 movups xmm2,XMMWORD[rdi] | |
2053 movups xmm3,XMMWORD[16+rdi] | |
2054 lea rdi,[32+rdi] | |
2055 xorps xmm2,xmm10 | |
2056 xorps xmm3,xmm11 | |
2057 | |
2058 call _aesni_encrypt2 | |
2059 | |
2060 xorps xmm2,xmm10 | |
2061 movdqa xmm10,xmm12 | |
2062 xorps xmm3,xmm11 | |
2063 movups XMMWORD[rsi],xmm2 | |
2064 movups XMMWORD[16+rsi],xmm3 | |
2065 lea rsi,[32+rsi] | |
2066 jmp NEAR $L$xts_enc_done | |
2067 | |
2068 ALIGN 16 | |
2069 $L$xts_enc_three: | |
2070 movups xmm2,XMMWORD[rdi] | |
2071 movups xmm3,XMMWORD[16+rdi] | |
2072 movups xmm4,XMMWORD[32+rdi] | |
2073 lea rdi,[48+rdi] | |
2074 xorps xmm2,xmm10 | |
2075 xorps xmm3,xmm11 | |
2076 xorps xmm4,xmm12 | |
2077 | |
2078 call _aesni_encrypt3 | |
2079 | |
2080 xorps xmm2,xmm10 | |
2081 movdqa xmm10,xmm13 | |
2082 xorps xmm3,xmm11 | |
2083 xorps xmm4,xmm12 | |
2084 movups XMMWORD[rsi],xmm2 | |
2085 movups XMMWORD[16+rsi],xmm3 | |
2086 movups XMMWORD[32+rsi],xmm4 | |
2087 lea rsi,[48+rsi] | |
2088 jmp NEAR $L$xts_enc_done | |
2089 | |
2090 ALIGN 16 | |
2091 $L$xts_enc_four: | |
2092 movups xmm2,XMMWORD[rdi] | |
2093 movups xmm3,XMMWORD[16+rdi] | |
2094 movups xmm4,XMMWORD[32+rdi] | |
2095 xorps xmm2,xmm10 | |
2096 movups xmm5,XMMWORD[48+rdi] | |
2097 lea rdi,[64+rdi] | |
2098 xorps xmm3,xmm11 | |
2099 xorps xmm4,xmm12 | |
2100 xorps xmm5,xmm13 | |
2101 | |
2102 call _aesni_encrypt4 | |
2103 | |
2104 pxor xmm2,xmm10 | |
2105 movdqa xmm10,xmm14 | |
2106 pxor xmm3,xmm11 | |
2107 pxor xmm4,xmm12 | |
2108 movdqu XMMWORD[rsi],xmm2 | |
2109 pxor xmm5,xmm13 | |
2110 movdqu XMMWORD[16+rsi],xmm3 | |
2111 movdqu XMMWORD[32+rsi],xmm4 | |
2112 movdqu XMMWORD[48+rsi],xmm5 | |
2113 lea rsi,[64+rsi] | |
2114 jmp NEAR $L$xts_enc_done | |
2115 | |
2116 ALIGN 16 | |
2117 $L$xts_enc_done: | |
2118 and r9,15 | |
2119 jz NEAR $L$xts_enc_ret | |
2120 mov rdx,r9 | |
2121 | |
2122 $L$xts_enc_steal: | |
2123 movzx eax,BYTE[rdi] | |
2124 movzx ecx,BYTE[((-16))+rsi] | |
2125 lea rdi,[1+rdi] | |
2126 mov BYTE[((-16))+rsi],al | |
2127 mov BYTE[rsi],cl | |
2128 lea rsi,[1+rsi] | |
2129 sub rdx,1 | |
2130 jnz NEAR $L$xts_enc_steal | |
2131 | |
2132 sub rsi,r9 | |
2133 mov rcx,rbp | |
2134 mov eax,r10d | |
2135 | |
2136 movups xmm2,XMMWORD[((-16))+rsi] | |
2137 xorps xmm2,xmm10 | |
2138 movups xmm0,XMMWORD[rcx] | |
2139 movups xmm1,XMMWORD[16+rcx] | |
2140 lea rcx,[32+rcx] | |
2141 xorps xmm2,xmm0 | |
2142 $L$oop_enc1_10: | |
2143 DB 102,15,56,220,209 | |
2144 dec eax | |
2145 movups xmm1,XMMWORD[rcx] | |
2146 lea rcx,[16+rcx] | |
2147 jnz NEAR $L$oop_enc1_10 | |
2148 DB 102,15,56,221,209 | |
2149 xorps xmm2,xmm10 | |
2150 movups XMMWORD[(-16)+rsi],xmm2 | |
2151 | |
2152 $L$xts_enc_ret: | |
2153 xorps xmm0,xmm0 | |
2154 pxor xmm1,xmm1 | |
2155 pxor xmm2,xmm2 | |
2156 pxor xmm3,xmm3 | |
2157 pxor xmm4,xmm4 | |
2158 pxor xmm5,xmm5 | |
2159 movaps xmm6,XMMWORD[((-168))+r11] | |
2160 movaps XMMWORD[(-168)+r11],xmm0 | |
2161 movaps xmm7,XMMWORD[((-152))+r11] | |
2162 movaps XMMWORD[(-152)+r11],xmm0 | |
2163 movaps xmm8,XMMWORD[((-136))+r11] | |
2164 movaps XMMWORD[(-136)+r11],xmm0 | |
2165 movaps xmm9,XMMWORD[((-120))+r11] | |
2166 movaps XMMWORD[(-120)+r11],xmm0 | |
2167 movaps xmm10,XMMWORD[((-104))+r11] | |
2168 movaps XMMWORD[(-104)+r11],xmm0 | |
2169 movaps xmm11,XMMWORD[((-88))+r11] | |
2170 movaps XMMWORD[(-88)+r11],xmm0 | |
2171 movaps xmm12,XMMWORD[((-72))+r11] | |
2172 movaps XMMWORD[(-72)+r11],xmm0 | |
2173 movaps xmm13,XMMWORD[((-56))+r11] | |
2174 movaps XMMWORD[(-56)+r11],xmm0 | |
2175 movaps xmm14,XMMWORD[((-40))+r11] | |
2176 movaps XMMWORD[(-40)+r11],xmm0 | |
2177 movaps xmm15,XMMWORD[((-24))+r11] | |
2178 movaps XMMWORD[(-24)+r11],xmm0 | |
2179 movaps XMMWORD[rsp],xmm0 | |
2180 movaps XMMWORD[16+rsp],xmm0 | |
2181 movaps XMMWORD[32+rsp],xmm0 | |
2182 movaps XMMWORD[48+rsp],xmm0 | |
2183 movaps XMMWORD[64+rsp],xmm0 | |
2184 movaps XMMWORD[80+rsp],xmm0 | |
2185 movaps XMMWORD[96+rsp],xmm0 | |
2186 mov rbp,QWORD[((-8))+r11] | |
2187 lea rsp,[r11] | |
2188 $L$xts_enc_epilogue: | |
2189 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
2190 mov rsi,QWORD[16+rsp] | |
2191 DB 0F3h,0C3h ;repret | |
2192 $L$SEH_end_aesni_xts_encrypt: | |
2193 global aesni_xts_decrypt | |
2194 | |
2195 ALIGN 16 | |
2196 aesni_xts_decrypt: | |
2197 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
2198 mov QWORD[16+rsp],rsi | |
2199 mov rax,rsp | |
2200 $L$SEH_begin_aesni_xts_decrypt: | |
2201 mov rdi,rcx | |
2202 mov rsi,rdx | |
2203 mov rdx,r8 | |
2204 mov rcx,r9 | |
2205 mov r8,QWORD[40+rsp] | |
2206 mov r9,QWORD[48+rsp] | |
2207 | |
2208 | |
2209 lea r11,[rsp] | |
2210 push rbp | |
2211 sub rsp,272 | |
2212 and rsp,-16 | |
2213 movaps XMMWORD[(-168)+r11],xmm6 | |
2214 movaps XMMWORD[(-152)+r11],xmm7 | |
2215 movaps XMMWORD[(-136)+r11],xmm8 | |
2216 movaps XMMWORD[(-120)+r11],xmm9 | |
2217 movaps XMMWORD[(-104)+r11],xmm10 | |
2218 movaps XMMWORD[(-88)+r11],xmm11 | |
2219 movaps XMMWORD[(-72)+r11],xmm12 | |
2220 movaps XMMWORD[(-56)+r11],xmm13 | |
2221 movaps XMMWORD[(-40)+r11],xmm14 | |
2222 movaps XMMWORD[(-24)+r11],xmm15 | |
2223 $L$xts_dec_body: | |
2224 movups xmm2,XMMWORD[r9] | |
2225 mov eax,DWORD[240+r8] | |
2226 mov r10d,DWORD[240+rcx] | |
2227 movups xmm0,XMMWORD[r8] | |
2228 movups xmm1,XMMWORD[16+r8] | |
2229 lea r8,[32+r8] | |
2230 xorps xmm2,xmm0 | |
2231 $L$oop_enc1_11: | |
2232 DB 102,15,56,220,209 | |
2233 dec eax | |
2234 movups xmm1,XMMWORD[r8] | |
2235 lea r8,[16+r8] | |
2236 jnz NEAR $L$oop_enc1_11 | |
2237 DB 102,15,56,221,209 | |
2238 xor eax,eax | |
2239 test rdx,15 | |
2240 setnz al | |
2241 shl rax,4 | |
2242 sub rdx,rax | |
2243 | |
2244 movups xmm0,XMMWORD[rcx] | |
2245 mov rbp,rcx | |
2246 mov eax,r10d | |
2247 shl r10d,4 | |
2248 mov r9,rdx | |
2249 and rdx,-16 | |
2250 | |
2251 movups xmm1,XMMWORD[16+r10*1+rcx] | |
2252 | |
2253 movdqa xmm8,XMMWORD[$L$xts_magic] | |
2254 movdqa xmm15,xmm2 | |
2255 pshufd xmm9,xmm2,0x5f | |
2256 pxor xmm1,xmm0 | |
2257 movdqa xmm14,xmm9 | |
2258 paddd xmm9,xmm9 | |
2259 movdqa xmm10,xmm15 | |
2260 psrad xmm14,31 | |
2261 paddq xmm15,xmm15 | |
2262 pand xmm14,xmm8 | |
2263 pxor xmm10,xmm0 | |
2264 pxor xmm15,xmm14 | |
2265 movdqa xmm14,xmm9 | |
2266 paddd xmm9,xmm9 | |
2267 movdqa xmm11,xmm15 | |
2268 psrad xmm14,31 | |
2269 paddq xmm15,xmm15 | |
2270 pand xmm14,xmm8 | |
2271 pxor xmm11,xmm0 | |
2272 pxor xmm15,xmm14 | |
2273 movdqa xmm14,xmm9 | |
2274 paddd xmm9,xmm9 | |
2275 movdqa xmm12,xmm15 | |
2276 psrad xmm14,31 | |
2277 paddq xmm15,xmm15 | |
2278 pand xmm14,xmm8 | |
2279 pxor xmm12,xmm0 | |
2280 pxor xmm15,xmm14 | |
2281 movdqa xmm14,xmm9 | |
2282 paddd xmm9,xmm9 | |
2283 movdqa xmm13,xmm15 | |
2284 psrad xmm14,31 | |
2285 paddq xmm15,xmm15 | |
2286 pand xmm14,xmm8 | |
2287 pxor xmm13,xmm0 | |
2288 pxor xmm15,xmm14 | |
2289 movdqa xmm14,xmm15 | |
2290 psrad xmm9,31 | |
2291 paddq xmm15,xmm15 | |
2292 pand xmm9,xmm8 | |
2293 pxor xmm14,xmm0 | |
2294 pxor xmm15,xmm9 | |
2295 movaps XMMWORD[96+rsp],xmm1 | |
2296 | |
2297 sub rdx,16*6 | |
2298 jc NEAR $L$xts_dec_short | |
2299 | |
2300 mov eax,16+96 | |
2301 lea rcx,[32+r10*1+rbp] | |
2302 sub rax,r10 | |
2303 movups xmm1,XMMWORD[16+rbp] | |
2304 mov r10,rax | |
2305 lea r8,[$L$xts_magic] | |
2306 jmp NEAR $L$xts_dec_grandloop | |
2307 | |
2308 ALIGN 32 | |
2309 $L$xts_dec_grandloop: | |
2310 movdqu xmm2,XMMWORD[rdi] | |
2311 movdqa xmm8,xmm0 | |
2312 movdqu xmm3,XMMWORD[16+rdi] | |
2313 pxor xmm2,xmm10 | |
2314 movdqu xmm4,XMMWORD[32+rdi] | |
2315 pxor xmm3,xmm11 | |
2316 DB 102,15,56,222,209 | |
2317 movdqu xmm5,XMMWORD[48+rdi] | |
2318 pxor xmm4,xmm12 | |
2319 DB 102,15,56,222,217 | |
2320 movdqu xmm6,XMMWORD[64+rdi] | |
2321 pxor xmm5,xmm13 | |
2322 DB 102,15,56,222,225 | |
2323 movdqu xmm7,XMMWORD[80+rdi] | |
2324 pxor xmm8,xmm15 | |
2325 movdqa xmm9,XMMWORD[96+rsp] | |
2326 pxor xmm6,xmm14 | |
2327 DB 102,15,56,222,233 | |
2328 movups xmm0,XMMWORD[32+rbp] | |
2329 lea rdi,[96+rdi] | |
2330 pxor xmm7,xmm8 | |
2331 | |
2332 pxor xmm10,xmm9 | |
2333 DB 102,15,56,222,241 | |
2334 pxor xmm11,xmm9 | |
2335 movdqa XMMWORD[rsp],xmm10 | |
2336 DB 102,15,56,222,249 | |
2337 movups xmm1,XMMWORD[48+rbp] | |
2338 pxor xmm12,xmm9 | |
2339 | |
2340 DB 102,15,56,222,208 | |
2341 pxor xmm13,xmm9 | |
2342 movdqa XMMWORD[16+rsp],xmm11 | |
2343 DB 102,15,56,222,216 | |
2344 pxor xmm14,xmm9 | |
2345 movdqa XMMWORD[32+rsp],xmm12 | |
2346 DB 102,15,56,222,224 | |
2347 DB 102,15,56,222,232 | |
2348 pxor xmm8,xmm9 | |
2349 movdqa XMMWORD[64+rsp],xmm14 | |
2350 DB 102,15,56,222,240 | |
2351 DB 102,15,56,222,248 | |
2352 movups xmm0,XMMWORD[64+rbp] | |
2353 movdqa XMMWORD[80+rsp],xmm8 | |
2354 pshufd xmm9,xmm15,0x5f | |
2355 jmp NEAR $L$xts_dec_loop6 | |
2356 ALIGN 32 | |
2357 $L$xts_dec_loop6: | |
2358 DB 102,15,56,222,209 | |
2359 DB 102,15,56,222,217 | |
2360 DB 102,15,56,222,225 | |
2361 DB 102,15,56,222,233 | |
2362 DB 102,15,56,222,241 | |
2363 DB 102,15,56,222,249 | |
2364 movups xmm1,XMMWORD[((-64))+rax*1+rcx] | |
2365 add rax,32 | |
2366 | |
2367 DB 102,15,56,222,208 | |
2368 DB 102,15,56,222,216 | |
2369 DB 102,15,56,222,224 | |
2370 DB 102,15,56,222,232 | |
2371 DB 102,15,56,222,240 | |
2372 DB 102,15,56,222,248 | |
2373 movups xmm0,XMMWORD[((-80))+rax*1+rcx] | |
2374 jnz NEAR $L$xts_dec_loop6 | |
2375 | |
2376 movdqa xmm8,XMMWORD[r8] | |
2377 movdqa xmm14,xmm9 | |
2378 paddd xmm9,xmm9 | |
2379 DB 102,15,56,222,209 | |
2380 paddq xmm15,xmm15 | |
2381 psrad xmm14,31 | |
2382 DB 102,15,56,222,217 | |
2383 pand xmm14,xmm8 | |
2384 movups xmm10,XMMWORD[rbp] | |
2385 DB 102,15,56,222,225 | |
2386 DB 102,15,56,222,233 | |
2387 DB 102,15,56,222,241 | |
2388 pxor xmm15,xmm14 | |
2389 movaps xmm11,xmm10 | |
2390 DB 102,15,56,222,249 | |
2391 movups xmm1,XMMWORD[((-64))+rcx] | |
2392 | |
2393 movdqa xmm14,xmm9 | |
2394 DB 102,15,56,222,208 | |
2395 paddd xmm9,xmm9 | |
2396 pxor xmm10,xmm15 | |
2397 DB 102,15,56,222,216 | |
2398 psrad xmm14,31 | |
2399 paddq xmm15,xmm15 | |
2400 DB 102,15,56,222,224 | |
2401 DB 102,15,56,222,232 | |
2402 pand xmm14,xmm8 | |
2403 movaps xmm12,xmm11 | |
2404 DB 102,15,56,222,240 | |
2405 pxor xmm15,xmm14 | |
2406 movdqa xmm14,xmm9 | |
2407 DB 102,15,56,222,248 | |
2408 movups xmm0,XMMWORD[((-48))+rcx] | |
2409 | |
2410 paddd xmm9,xmm9 | |
2411 DB 102,15,56,222,209 | |
2412 pxor xmm11,xmm15 | |
2413 psrad xmm14,31 | |
2414 DB 102,15,56,222,217 | |
2415 paddq xmm15,xmm15 | |
2416 pand xmm14,xmm8 | |
2417 DB 102,15,56,222,225 | |
2418 DB 102,15,56,222,233 | |
2419 movdqa XMMWORD[48+rsp],xmm13 | |
2420 pxor xmm15,xmm14 | |
2421 DB 102,15,56,222,241 | |
2422 movaps xmm13,xmm12 | |
2423 movdqa xmm14,xmm9 | |
2424 DB 102,15,56,222,249 | |
2425 movups xmm1,XMMWORD[((-32))+rcx] | |
2426 | |
2427 paddd xmm9,xmm9 | |
2428 DB 102,15,56,222,208 | |
2429 pxor xmm12,xmm15 | |
2430 psrad xmm14,31 | |
2431 DB 102,15,56,222,216 | |
2432 paddq xmm15,xmm15 | |
2433 pand xmm14,xmm8 | |
2434 DB 102,15,56,222,224 | |
2435 DB 102,15,56,222,232 | |
2436 DB 102,15,56,222,240 | |
2437 pxor xmm15,xmm14 | |
2438 movaps xmm14,xmm13 | |
2439 DB 102,15,56,222,248 | |
2440 | |
2441 movdqa xmm0,xmm9 | |
2442 paddd xmm9,xmm9 | |
2443 DB 102,15,56,222,209 | |
2444 pxor xmm13,xmm15 | |
2445 psrad xmm0,31 | |
2446 DB 102,15,56,222,217 | |
2447 paddq xmm15,xmm15 | |
2448 pand xmm0,xmm8 | |
2449 DB 102,15,56,222,225 | |
2450 DB 102,15,56,222,233 | |
2451 pxor xmm15,xmm0 | |
2452 movups xmm0,XMMWORD[rbp] | |
2453 DB 102,15,56,222,241 | |
2454 DB 102,15,56,222,249 | |
2455 movups xmm1,XMMWORD[16+rbp] | |
2456 | |
2457 pxor xmm14,xmm15 | |
2458 DB 102,15,56,223,84,36,0 | |
2459 psrad xmm9,31 | |
2460 paddq xmm15,xmm15 | |
2461 DB 102,15,56,223,92,36,16 | |
2462 DB 102,15,56,223,100,36,32 | |
2463 pand xmm9,xmm8 | |
2464 mov rax,r10 | |
2465 DB 102,15,56,223,108,36,48 | |
2466 DB 102,15,56,223,116,36,64 | |
2467 DB 102,15,56,223,124,36,80 | |
2468 pxor xmm15,xmm9 | |
2469 | |
2470 lea rsi,[96+rsi] | |
2471 movups XMMWORD[(-96)+rsi],xmm2 | |
2472 movups XMMWORD[(-80)+rsi],xmm3 | |
2473 movups XMMWORD[(-64)+rsi],xmm4 | |
2474 movups XMMWORD[(-48)+rsi],xmm5 | |
2475 movups XMMWORD[(-32)+rsi],xmm6 | |
2476 movups XMMWORD[(-16)+rsi],xmm7 | |
2477 sub rdx,16*6 | |
2478 jnc NEAR $L$xts_dec_grandloop | |
2479 | |
2480 mov eax,16+96 | |
2481 sub eax,r10d | |
2482 mov rcx,rbp | |
2483 shr eax,4 | |
2484 | |
2485 $L$xts_dec_short: | |
2486 | |
2487 mov r10d,eax | |
2488 pxor xmm10,xmm0 | |
2489 pxor xmm11,xmm0 | |
2490 add rdx,16*6 | |
2491 jz NEAR $L$xts_dec_done | |
2492 | |
2493 pxor xmm12,xmm0 | |
2494 cmp rdx,0x20 | |
2495 jb NEAR $L$xts_dec_one | |
2496 pxor xmm13,xmm0 | |
2497 je NEAR $L$xts_dec_two | |
2498 | |
2499 pxor xmm14,xmm0 | |
2500 cmp rdx,0x40 | |
2501 jb NEAR $L$xts_dec_three | |
2502 je NEAR $L$xts_dec_four | |
2503 | |
2504 movdqu xmm2,XMMWORD[rdi] | |
2505 movdqu xmm3,XMMWORD[16+rdi] | |
2506 movdqu xmm4,XMMWORD[32+rdi] | |
2507 pxor xmm2,xmm10 | |
2508 movdqu xmm5,XMMWORD[48+rdi] | |
2509 pxor xmm3,xmm11 | |
2510 movdqu xmm6,XMMWORD[64+rdi] | |
2511 lea rdi,[80+rdi] | |
2512 pxor xmm4,xmm12 | |
2513 pxor xmm5,xmm13 | |
2514 pxor xmm6,xmm14 | |
2515 | |
2516 call _aesni_decrypt6 | |
2517 | |
2518 xorps xmm2,xmm10 | |
2519 xorps xmm3,xmm11 | |
2520 xorps xmm4,xmm12 | |
2521 movdqu XMMWORD[rsi],xmm2 | |
2522 xorps xmm5,xmm13 | |
2523 movdqu XMMWORD[16+rsi],xmm3 | |
2524 xorps xmm6,xmm14 | |
2525 movdqu XMMWORD[32+rsi],xmm4 | |
2526 pxor xmm14,xmm14 | |
2527 movdqu XMMWORD[48+rsi],xmm5 | |
2528 pcmpgtd xmm14,xmm15 | |
2529 movdqu XMMWORD[64+rsi],xmm6 | |
2530 lea rsi,[80+rsi] | |
2531 pshufd xmm11,xmm14,0x13 | |
2532 and r9,15 | |
2533 jz NEAR $L$xts_dec_ret | |
2534 | |
2535 movdqa xmm10,xmm15 | |
2536 paddq xmm15,xmm15 | |
2537 pand xmm11,xmm8 | |
2538 pxor xmm11,xmm15 | |
2539 jmp NEAR $L$xts_dec_done2 | |
2540 | |
2541 ALIGN 16 | |
2542 $L$xts_dec_one: | |
2543 movups xmm2,XMMWORD[rdi] | |
2544 lea rdi,[16+rdi] | |
2545 xorps xmm2,xmm10 | |
2546 movups xmm0,XMMWORD[rcx] | |
2547 movups xmm1,XMMWORD[16+rcx] | |
2548 lea rcx,[32+rcx] | |
2549 xorps xmm2,xmm0 | |
2550 $L$oop_dec1_12: | |
2551 DB 102,15,56,222,209 | |
2552 dec eax | |
2553 movups xmm1,XMMWORD[rcx] | |
2554 lea rcx,[16+rcx] | |
2555 jnz NEAR $L$oop_dec1_12 | |
2556 DB 102,15,56,223,209 | |
2557 xorps xmm2,xmm10 | |
2558 movdqa xmm10,xmm11 | |
2559 movups XMMWORD[rsi],xmm2 | |
2560 movdqa xmm11,xmm12 | |
2561 lea rsi,[16+rsi] | |
2562 jmp NEAR $L$xts_dec_done | |
2563 | |
2564 ALIGN 16 | |
2565 $L$xts_dec_two: | |
2566 movups xmm2,XMMWORD[rdi] | |
2567 movups xmm3,XMMWORD[16+rdi] | |
2568 lea rdi,[32+rdi] | |
2569 xorps xmm2,xmm10 | |
2570 xorps xmm3,xmm11 | |
2571 | |
2572 call _aesni_decrypt2 | |
2573 | |
2574 xorps xmm2,xmm10 | |
2575 movdqa xmm10,xmm12 | |
2576 xorps xmm3,xmm11 | |
2577 movdqa xmm11,xmm13 | |
2578 movups XMMWORD[rsi],xmm2 | |
2579 movups XMMWORD[16+rsi],xmm3 | |
2580 lea rsi,[32+rsi] | |
2581 jmp NEAR $L$xts_dec_done | |
2582 | |
2583 ALIGN 16 | |
2584 $L$xts_dec_three: | |
2585 movups xmm2,XMMWORD[rdi] | |
2586 movups xmm3,XMMWORD[16+rdi] | |
2587 movups xmm4,XMMWORD[32+rdi] | |
2588 lea rdi,[48+rdi] | |
2589 xorps xmm2,xmm10 | |
2590 xorps xmm3,xmm11 | |
2591 xorps xmm4,xmm12 | |
2592 | |
2593 call _aesni_decrypt3 | |
2594 | |
2595 xorps xmm2,xmm10 | |
2596 movdqa xmm10,xmm13 | |
2597 xorps xmm3,xmm11 | |
2598 movdqa xmm11,xmm14 | |
2599 xorps xmm4,xmm12 | |
2600 movups XMMWORD[rsi],xmm2 | |
2601 movups XMMWORD[16+rsi],xmm3 | |
2602 movups XMMWORD[32+rsi],xmm4 | |
2603 lea rsi,[48+rsi] | |
2604 jmp NEAR $L$xts_dec_done | |
2605 | |
2606 ALIGN 16 | |
2607 $L$xts_dec_four: | |
2608 movups xmm2,XMMWORD[rdi] | |
2609 movups xmm3,XMMWORD[16+rdi] | |
2610 movups xmm4,XMMWORD[32+rdi] | |
2611 xorps xmm2,xmm10 | |
2612 movups xmm5,XMMWORD[48+rdi] | |
2613 lea rdi,[64+rdi] | |
2614 xorps xmm3,xmm11 | |
2615 xorps xmm4,xmm12 | |
2616 xorps xmm5,xmm13 | |
2617 | |
2618 call _aesni_decrypt4 | |
2619 | |
2620 pxor xmm2,xmm10 | |
2621 movdqa xmm10,xmm14 | |
2622 pxor xmm3,xmm11 | |
2623 movdqa xmm11,xmm15 | |
2624 pxor xmm4,xmm12 | |
2625 movdqu XMMWORD[rsi],xmm2 | |
2626 pxor xmm5,xmm13 | |
2627 movdqu XMMWORD[16+rsi],xmm3 | |
2628 movdqu XMMWORD[32+rsi],xmm4 | |
2629 movdqu XMMWORD[48+rsi],xmm5 | |
2630 lea rsi,[64+rsi] | |
2631 jmp NEAR $L$xts_dec_done | |
2632 | |
2633 ALIGN 16 | |
2634 $L$xts_dec_done: | |
2635 and r9,15 | |
2636 jz NEAR $L$xts_dec_ret | |
2637 $L$xts_dec_done2: | |
2638 mov rdx,r9 | |
2639 mov rcx,rbp | |
2640 mov eax,r10d | |
2641 | |
2642 movups xmm2,XMMWORD[rdi] | |
2643 xorps xmm2,xmm11 | |
2644 movups xmm0,XMMWORD[rcx] | |
2645 movups xmm1,XMMWORD[16+rcx] | |
2646 lea rcx,[32+rcx] | |
2647 xorps xmm2,xmm0 | |
2648 $L$oop_dec1_13: | |
2649 DB 102,15,56,222,209 | |
2650 dec eax | |
2651 movups xmm1,XMMWORD[rcx] | |
2652 lea rcx,[16+rcx] | |
2653 jnz NEAR $L$oop_dec1_13 | |
2654 DB 102,15,56,223,209 | |
2655 xorps xmm2,xmm11 | |
2656 movups XMMWORD[rsi],xmm2 | |
2657 | |
2658 $L$xts_dec_steal: | |
2659 movzx eax,BYTE[16+rdi] | |
2660 movzx ecx,BYTE[rsi] | |
2661 lea rdi,[1+rdi] | |
2662 mov BYTE[rsi],al | |
2663 mov BYTE[16+rsi],cl | |
2664 lea rsi,[1+rsi] | |
2665 sub rdx,1 | |
2666 jnz NEAR $L$xts_dec_steal | |
2667 | |
2668 sub rsi,r9 | |
2669 mov rcx,rbp | |
2670 mov eax,r10d | |
2671 | |
2672 movups xmm2,XMMWORD[rsi] | |
2673 xorps xmm2,xmm10 | |
2674 movups xmm0,XMMWORD[rcx] | |
2675 movups xmm1,XMMWORD[16+rcx] | |
2676 lea rcx,[32+rcx] | |
2677 xorps xmm2,xmm0 | |
2678 $L$oop_dec1_14: | |
2679 DB 102,15,56,222,209 | |
2680 dec eax | |
2681 movups xmm1,XMMWORD[rcx] | |
2682 lea rcx,[16+rcx] | |
2683 jnz NEAR $L$oop_dec1_14 | |
2684 DB 102,15,56,223,209 | |
2685 xorps xmm2,xmm10 | |
2686 movups XMMWORD[rsi],xmm2 | |
2687 | |
2688 $L$xts_dec_ret: | |
2689 xorps xmm0,xmm0 | |
2690 pxor xmm1,xmm1 | |
2691 pxor xmm2,xmm2 | |
2692 pxor xmm3,xmm3 | |
2693 pxor xmm4,xmm4 | |
2694 pxor xmm5,xmm5 | |
2695 movaps xmm6,XMMWORD[((-168))+r11] | |
2696 movaps XMMWORD[(-168)+r11],xmm0 | |
2697 movaps xmm7,XMMWORD[((-152))+r11] | |
2698 movaps XMMWORD[(-152)+r11],xmm0 | |
2699 movaps xmm8,XMMWORD[((-136))+r11] | |
2700 movaps XMMWORD[(-136)+r11],xmm0 | |
2701 movaps xmm9,XMMWORD[((-120))+r11] | |
2702 movaps XMMWORD[(-120)+r11],xmm0 | |
2703 movaps xmm10,XMMWORD[((-104))+r11] | |
2704 movaps XMMWORD[(-104)+r11],xmm0 | |
2705 movaps xmm11,XMMWORD[((-88))+r11] | |
2706 movaps XMMWORD[(-88)+r11],xmm0 | |
2707 movaps xmm12,XMMWORD[((-72))+r11] | |
2708 movaps XMMWORD[(-72)+r11],xmm0 | |
2709 movaps xmm13,XMMWORD[((-56))+r11] | |
2710 movaps XMMWORD[(-56)+r11],xmm0 | |
2711 movaps xmm14,XMMWORD[((-40))+r11] | |
2712 movaps XMMWORD[(-40)+r11],xmm0 | |
2713 movaps xmm15,XMMWORD[((-24))+r11] | |
2714 movaps XMMWORD[(-24)+r11],xmm0 | |
2715 movaps XMMWORD[rsp],xmm0 | |
2716 movaps XMMWORD[16+rsp],xmm0 | |
2717 movaps XMMWORD[32+rsp],xmm0 | |
2718 movaps XMMWORD[48+rsp],xmm0 | |
2719 movaps XMMWORD[64+rsp],xmm0 | |
2720 movaps XMMWORD[80+rsp],xmm0 | |
2721 movaps XMMWORD[96+rsp],xmm0 | |
2722 mov rbp,QWORD[((-8))+r11] | |
2723 lea rsp,[r11] | |
2724 $L$xts_dec_epilogue: | |
2725 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
2726 mov rsi,QWORD[16+rsp] | |
2727 DB 0F3h,0C3h ;repret | |
2728 $L$SEH_end_aesni_xts_decrypt: | |
2729 global aesni_ocb_encrypt | |
2730 | |
2731 ALIGN 32 | |
2732 aesni_ocb_encrypt: | |
2733 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
2734 mov QWORD[16+rsp],rsi | |
2735 mov rax,rsp | |
2736 $L$SEH_begin_aesni_ocb_encrypt: | |
2737 mov rdi,rcx | |
2738 mov rsi,rdx | |
2739 mov rdx,r8 | |
2740 mov rcx,r9 | |
2741 mov r8,QWORD[40+rsp] | |
2742 mov r9,QWORD[48+rsp] | |
2743 | |
2744 | |
2745 lea rax,[rsp] | |
2746 push rbx | |
2747 push rbp | |
2748 push r12 | |
2749 push r13 | |
2750 push r14 | |
2751 lea rsp,[((-160))+rsp] | |
2752 movaps XMMWORD[rsp],xmm6 | |
2753 movaps XMMWORD[16+rsp],xmm7 | |
2754 movaps XMMWORD[32+rsp],xmm8 | |
2755 movaps XMMWORD[48+rsp],xmm9 | |
2756 movaps XMMWORD[64+rsp],xmm10 | |
2757 movaps XMMWORD[80+rsp],xmm11 | |
2758 movaps XMMWORD[96+rsp],xmm12 | |
2759 movaps XMMWORD[112+rsp],xmm13 | |
2760 movaps XMMWORD[128+rsp],xmm14 | |
2761 movaps XMMWORD[144+rsp],xmm15 | |
2762 $L$ocb_enc_body: | |
2763 mov rbx,QWORD[56+rax] | |
2764 mov rbp,QWORD[((56+8))+rax] | |
2765 | |
2766 mov r10d,DWORD[240+rcx] | |
2767 mov r11,rcx | |
2768 shl r10d,4 | |
2769 movups xmm9,XMMWORD[rcx] | |
2770 movups xmm1,XMMWORD[16+r10*1+rcx] | |
2771 | |
2772 movdqu xmm15,XMMWORD[r9] | |
2773 pxor xmm9,xmm1 | |
2774 pxor xmm15,xmm1 | |
2775 | |
2776 mov eax,16+32 | |
2777 lea rcx,[32+r10*1+r11] | |
2778 movups xmm1,XMMWORD[16+r11] | |
2779 sub rax,r10 | |
2780 mov r10,rax | |
2781 | |
2782 movdqu xmm10,XMMWORD[rbx] | |
2783 movdqu xmm8,XMMWORD[rbp] | |
2784 | |
2785 test r8,1 | |
2786 jnz NEAR $L$ocb_enc_odd | |
2787 | |
2788 bsf r12,r8 | |
2789 add r8,1 | |
2790 shl r12,4 | |
2791 movdqu xmm7,XMMWORD[r12*1+rbx] | |
2792 movdqu xmm2,XMMWORD[rdi] | |
2793 lea rdi,[16+rdi] | |
2794 | |
2795 call __ocb_encrypt1 | |
2796 | |
2797 movdqa xmm15,xmm7 | |
2798 movups XMMWORD[rsi],xmm2 | |
2799 lea rsi,[16+rsi] | |
2800 sub rdx,1 | |
2801 jz NEAR $L$ocb_enc_done | |
2802 | |
2803 $L$ocb_enc_odd: | |
2804 lea r12,[1+r8] | |
2805 lea r13,[3+r8] | |
2806 lea r14,[5+r8] | |
2807 lea r8,[6+r8] | |
2808 bsf r12,r12 | |
2809 bsf r13,r13 | |
2810 bsf r14,r14 | |
2811 shl r12,4 | |
2812 shl r13,4 | |
2813 shl r14,4 | |
2814 | |
2815 sub rdx,6 | |
2816 jc NEAR $L$ocb_enc_short | |
2817 jmp NEAR $L$ocb_enc_grandloop | |
2818 | |
2819 ALIGN 32 | |
2820 $L$ocb_enc_grandloop: | |
2821 movdqu xmm2,XMMWORD[rdi] | |
2822 movdqu xmm3,XMMWORD[16+rdi] | |
2823 movdqu xmm4,XMMWORD[32+rdi] | |
2824 movdqu xmm5,XMMWORD[48+rdi] | |
2825 movdqu xmm6,XMMWORD[64+rdi] | |
2826 movdqu xmm7,XMMWORD[80+rdi] | |
2827 lea rdi,[96+rdi] | |
2828 | |
2829 call __ocb_encrypt6 | |
2830 | |
2831 movups XMMWORD[rsi],xmm2 | |
2832 movups XMMWORD[16+rsi],xmm3 | |
2833 movups XMMWORD[32+rsi],xmm4 | |
2834 movups XMMWORD[48+rsi],xmm5 | |
2835 movups XMMWORD[64+rsi],xmm6 | |
2836 movups XMMWORD[80+rsi],xmm7 | |
2837 lea rsi,[96+rsi] | |
2838 sub rdx,6 | |
2839 jnc NEAR $L$ocb_enc_grandloop | |
2840 | |
2841 $L$ocb_enc_short: | |
2842 add rdx,6 | |
2843 jz NEAR $L$ocb_enc_done | |
2844 | |
2845 movdqu xmm2,XMMWORD[rdi] | |
2846 cmp rdx,2 | |
2847 jb NEAR $L$ocb_enc_one | |
2848 movdqu xmm3,XMMWORD[16+rdi] | |
2849 je NEAR $L$ocb_enc_two | |
2850 | |
2851 movdqu xmm4,XMMWORD[32+rdi] | |
2852 cmp rdx,4 | |
2853 jb NEAR $L$ocb_enc_three | |
2854 movdqu xmm5,XMMWORD[48+rdi] | |
2855 je NEAR $L$ocb_enc_four | |
2856 | |
2857 movdqu xmm6,XMMWORD[64+rdi] | |
2858 pxor xmm7,xmm7 | |
2859 | |
2860 call __ocb_encrypt6 | |
2861 | |
2862 movdqa xmm15,xmm14 | |
2863 movups XMMWORD[rsi],xmm2 | |
2864 movups XMMWORD[16+rsi],xmm3 | |
2865 movups XMMWORD[32+rsi],xmm4 | |
2866 movups XMMWORD[48+rsi],xmm5 | |
2867 movups XMMWORD[64+rsi],xmm6 | |
2868 | |
2869 jmp NEAR $L$ocb_enc_done | |
2870 | |
2871 ALIGN 16 | |
2872 $L$ocb_enc_one: | |
2873 movdqa xmm7,xmm10 | |
2874 | |
2875 call __ocb_encrypt1 | |
2876 | |
2877 movdqa xmm15,xmm7 | |
2878 movups XMMWORD[rsi],xmm2 | |
2879 jmp NEAR $L$ocb_enc_done | |
2880 | |
2881 ALIGN 16 | |
2882 $L$ocb_enc_two: | |
2883 pxor xmm4,xmm4 | |
2884 pxor xmm5,xmm5 | |
2885 | |
2886 call __ocb_encrypt4 | |
2887 | |
2888 movdqa xmm15,xmm11 | |
2889 movups XMMWORD[rsi],xmm2 | |
2890 movups XMMWORD[16+rsi],xmm3 | |
2891 | |
2892 jmp NEAR $L$ocb_enc_done | |
2893 | |
2894 ALIGN 16 | |
2895 $L$ocb_enc_three: | |
2896 pxor xmm5,xmm5 | |
2897 | |
2898 call __ocb_encrypt4 | |
2899 | |
2900 movdqa xmm15,xmm12 | |
2901 movups XMMWORD[rsi],xmm2 | |
2902 movups XMMWORD[16+rsi],xmm3 | |
2903 movups XMMWORD[32+rsi],xmm4 | |
2904 | |
2905 jmp NEAR $L$ocb_enc_done | |
2906 | |
2907 ALIGN 16 | |
2908 $L$ocb_enc_four: | |
2909 call __ocb_encrypt4 | |
2910 | |
2911 movdqa xmm15,xmm13 | |
2912 movups XMMWORD[rsi],xmm2 | |
2913 movups XMMWORD[16+rsi],xmm3 | |
2914 movups XMMWORD[32+rsi],xmm4 | |
2915 movups XMMWORD[48+rsi],xmm5 | |
2916 | |
2917 $L$ocb_enc_done: | |
2918 pxor xmm15,xmm0 | |
2919 movdqu XMMWORD[rbp],xmm8 | |
2920 movdqu XMMWORD[r9],xmm15 | |
2921 | |
2922 xorps xmm0,xmm0 | |
2923 pxor xmm1,xmm1 | |
2924 pxor xmm2,xmm2 | |
2925 pxor xmm3,xmm3 | |
2926 pxor xmm4,xmm4 | |
2927 pxor xmm5,xmm5 | |
2928 movaps xmm6,XMMWORD[rsp] | |
2929 movaps XMMWORD[rsp],xmm0 | |
2930 movaps xmm7,XMMWORD[16+rsp] | |
2931 movaps XMMWORD[16+rsp],xmm0 | |
2932 movaps xmm8,XMMWORD[32+rsp] | |
2933 movaps XMMWORD[32+rsp],xmm0 | |
2934 movaps xmm9,XMMWORD[48+rsp] | |
2935 movaps XMMWORD[48+rsp],xmm0 | |
2936 movaps xmm10,XMMWORD[64+rsp] | |
2937 movaps XMMWORD[64+rsp],xmm0 | |
2938 movaps xmm11,XMMWORD[80+rsp] | |
2939 movaps XMMWORD[80+rsp],xmm0 | |
2940 movaps xmm12,XMMWORD[96+rsp] | |
2941 movaps XMMWORD[96+rsp],xmm0 | |
2942 movaps xmm13,XMMWORD[112+rsp] | |
2943 movaps XMMWORD[112+rsp],xmm0 | |
2944 movaps xmm14,XMMWORD[128+rsp] | |
2945 movaps XMMWORD[128+rsp],xmm0 | |
2946 movaps xmm15,XMMWORD[144+rsp] | |
2947 movaps XMMWORD[144+rsp],xmm0 | |
2948 lea rax,[((160+40))+rsp] | |
2949 $L$ocb_enc_pop: | |
2950 mov r14,QWORD[((-40))+rax] | |
2951 mov r13,QWORD[((-32))+rax] | |
2952 mov r12,QWORD[((-24))+rax] | |
2953 mov rbp,QWORD[((-16))+rax] | |
2954 mov rbx,QWORD[((-8))+rax] | |
2955 lea rsp,[rax] | |
2956 $L$ocb_enc_epilogue: | |
2957 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
2958 mov rsi,QWORD[16+rsp] | |
2959 DB 0F3h,0C3h ;repret | |
2960 $L$SEH_end_aesni_ocb_encrypt: | |
2961 | |
2962 | |
2963 ALIGN 32 | |
2964 __ocb_encrypt6: | |
2965 pxor xmm15,xmm9 | |
2966 movdqu xmm11,XMMWORD[r12*1+rbx] | |
2967 movdqa xmm12,xmm10 | |
2968 movdqu xmm13,XMMWORD[r13*1+rbx] | |
2969 movdqa xmm14,xmm10 | |
2970 pxor xmm10,xmm15 | |
2971 movdqu xmm15,XMMWORD[r14*1+rbx] | |
2972 pxor xmm11,xmm10 | |
2973 pxor xmm8,xmm2 | |
2974 pxor xmm2,xmm10 | |
2975 pxor xmm12,xmm11 | |
2976 pxor xmm8,xmm3 | |
2977 pxor xmm3,xmm11 | |
2978 pxor xmm13,xmm12 | |
2979 pxor xmm8,xmm4 | |
2980 pxor xmm4,xmm12 | |
2981 pxor xmm14,xmm13 | |
2982 pxor xmm8,xmm5 | |
2983 pxor xmm5,xmm13 | |
2984 pxor xmm15,xmm14 | |
2985 pxor xmm8,xmm6 | |
2986 pxor xmm6,xmm14 | |
2987 pxor xmm8,xmm7 | |
2988 pxor xmm7,xmm15 | |
2989 movups xmm0,XMMWORD[32+r11] | |
2990 | |
2991 lea r12,[1+r8] | |
2992 lea r13,[3+r8] | |
2993 lea r14,[5+r8] | |
2994 add r8,6 | |
2995 pxor xmm10,xmm9 | |
2996 bsf r12,r12 | |
2997 bsf r13,r13 | |
2998 bsf r14,r14 | |
2999 | |
3000 DB 102,15,56,220,209 | |
3001 DB 102,15,56,220,217 | |
3002 DB 102,15,56,220,225 | |
3003 DB 102,15,56,220,233 | |
3004 pxor xmm11,xmm9 | |
3005 pxor xmm12,xmm9 | |
3006 DB 102,15,56,220,241 | |
3007 pxor xmm13,xmm9 | |
3008 pxor xmm14,xmm9 | |
3009 DB 102,15,56,220,249 | |
3010 movups xmm1,XMMWORD[48+r11] | |
3011 pxor xmm15,xmm9 | |
3012 | |
3013 DB 102,15,56,220,208 | |
3014 DB 102,15,56,220,216 | |
3015 DB 102,15,56,220,224 | |
3016 DB 102,15,56,220,232 | |
3017 DB 102,15,56,220,240 | |
3018 DB 102,15,56,220,248 | |
3019 movups xmm0,XMMWORD[64+r11] | |
3020 shl r12,4 | |
3021 shl r13,4 | |
3022 jmp NEAR $L$ocb_enc_loop6 | |
3023 | |
3024 ALIGN 32 | |
3025 $L$ocb_enc_loop6: | |
3026 DB 102,15,56,220,209 | |
3027 DB 102,15,56,220,217 | |
3028 DB 102,15,56,220,225 | |
3029 DB 102,15,56,220,233 | |
3030 DB 102,15,56,220,241 | |
3031 DB 102,15,56,220,249 | |
3032 movups xmm1,XMMWORD[rax*1+rcx] | |
3033 add rax,32 | |
3034 | |
3035 DB 102,15,56,220,208 | |
3036 DB 102,15,56,220,216 | |
3037 DB 102,15,56,220,224 | |
3038 DB 102,15,56,220,232 | |
3039 DB 102,15,56,220,240 | |
3040 DB 102,15,56,220,248 | |
3041 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3042 jnz NEAR $L$ocb_enc_loop6 | |
3043 | |
3044 DB 102,15,56,220,209 | |
3045 DB 102,15,56,220,217 | |
3046 DB 102,15,56,220,225 | |
3047 DB 102,15,56,220,233 | |
3048 DB 102,15,56,220,241 | |
3049 DB 102,15,56,220,249 | |
3050 movups xmm1,XMMWORD[16+r11] | |
3051 shl r14,4 | |
3052 | |
3053 DB 102,65,15,56,221,210 | |
3054 movdqu xmm10,XMMWORD[rbx] | |
3055 mov rax,r10 | |
3056 DB 102,65,15,56,221,219 | |
3057 DB 102,65,15,56,221,228 | |
3058 DB 102,65,15,56,221,237 | |
3059 DB 102,65,15,56,221,246 | |
3060 DB 102,65,15,56,221,255 | |
3061 DB 0F3h,0C3h ;repret | |
3062 | |
3063 | |
3064 | |
3065 ALIGN 32 | |
3066 __ocb_encrypt4: | |
3067 pxor xmm15,xmm9 | |
3068 movdqu xmm11,XMMWORD[r12*1+rbx] | |
3069 movdqa xmm12,xmm10 | |
3070 movdqu xmm13,XMMWORD[r13*1+rbx] | |
3071 pxor xmm10,xmm15 | |
3072 pxor xmm11,xmm10 | |
3073 pxor xmm8,xmm2 | |
3074 pxor xmm2,xmm10 | |
3075 pxor xmm12,xmm11 | |
3076 pxor xmm8,xmm3 | |
3077 pxor xmm3,xmm11 | |
3078 pxor xmm13,xmm12 | |
3079 pxor xmm8,xmm4 | |
3080 pxor xmm4,xmm12 | |
3081 pxor xmm8,xmm5 | |
3082 pxor xmm5,xmm13 | |
3083 movups xmm0,XMMWORD[32+r11] | |
3084 | |
3085 pxor xmm10,xmm9 | |
3086 pxor xmm11,xmm9 | |
3087 pxor xmm12,xmm9 | |
3088 pxor xmm13,xmm9 | |
3089 | |
3090 DB 102,15,56,220,209 | |
3091 DB 102,15,56,220,217 | |
3092 DB 102,15,56,220,225 | |
3093 DB 102,15,56,220,233 | |
3094 movups xmm1,XMMWORD[48+r11] | |
3095 | |
3096 DB 102,15,56,220,208 | |
3097 DB 102,15,56,220,216 | |
3098 DB 102,15,56,220,224 | |
3099 DB 102,15,56,220,232 | |
3100 movups xmm0,XMMWORD[64+r11] | |
3101 jmp NEAR $L$ocb_enc_loop4 | |
3102 | |
3103 ALIGN 32 | |
3104 $L$ocb_enc_loop4: | |
3105 DB 102,15,56,220,209 | |
3106 DB 102,15,56,220,217 | |
3107 DB 102,15,56,220,225 | |
3108 DB 102,15,56,220,233 | |
3109 movups xmm1,XMMWORD[rax*1+rcx] | |
3110 add rax,32 | |
3111 | |
3112 DB 102,15,56,220,208 | |
3113 DB 102,15,56,220,216 | |
3114 DB 102,15,56,220,224 | |
3115 DB 102,15,56,220,232 | |
3116 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3117 jnz NEAR $L$ocb_enc_loop4 | |
3118 | |
3119 DB 102,15,56,220,209 | |
3120 DB 102,15,56,220,217 | |
3121 DB 102,15,56,220,225 | |
3122 DB 102,15,56,220,233 | |
3123 movups xmm1,XMMWORD[16+r11] | |
3124 mov rax,r10 | |
3125 | |
3126 DB 102,65,15,56,221,210 | |
3127 DB 102,65,15,56,221,219 | |
3128 DB 102,65,15,56,221,228 | |
3129 DB 102,65,15,56,221,237 | |
3130 DB 0F3h,0C3h ;repret | |
3131 | |
3132 | |
3133 | |
3134 ALIGN 32 | |
3135 __ocb_encrypt1: | |
3136 pxor xmm7,xmm15 | |
3137 pxor xmm7,xmm9 | |
3138 pxor xmm8,xmm2 | |
3139 pxor xmm2,xmm7 | |
3140 movups xmm0,XMMWORD[32+r11] | |
3141 | |
3142 DB 102,15,56,220,209 | |
3143 movups xmm1,XMMWORD[48+r11] | |
3144 pxor xmm7,xmm9 | |
3145 | |
3146 DB 102,15,56,220,208 | |
3147 movups xmm0,XMMWORD[64+r11] | |
3148 jmp NEAR $L$ocb_enc_loop1 | |
3149 | |
3150 ALIGN 32 | |
3151 $L$ocb_enc_loop1: | |
3152 DB 102,15,56,220,209 | |
3153 movups xmm1,XMMWORD[rax*1+rcx] | |
3154 add rax,32 | |
3155 | |
3156 DB 102,15,56,220,208 | |
3157 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3158 jnz NEAR $L$ocb_enc_loop1 | |
3159 | |
3160 DB 102,15,56,220,209 | |
3161 movups xmm1,XMMWORD[16+r11] | |
3162 mov rax,r10 | |
3163 | |
3164 DB 102,15,56,221,215 | |
3165 DB 0F3h,0C3h ;repret | |
3166 | |
3167 | |
3168 global aesni_ocb_decrypt | |
3169 | |
3170 ALIGN 32 | |
3171 aesni_ocb_decrypt: | |
3172 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
3173 mov QWORD[16+rsp],rsi | |
3174 mov rax,rsp | |
3175 $L$SEH_begin_aesni_ocb_decrypt: | |
3176 mov rdi,rcx | |
3177 mov rsi,rdx | |
3178 mov rdx,r8 | |
3179 mov rcx,r9 | |
3180 mov r8,QWORD[40+rsp] | |
3181 mov r9,QWORD[48+rsp] | |
3182 | |
3183 | |
3184 lea rax,[rsp] | |
3185 push rbx | |
3186 push rbp | |
3187 push r12 | |
3188 push r13 | |
3189 push r14 | |
3190 lea rsp,[((-160))+rsp] | |
3191 movaps XMMWORD[rsp],xmm6 | |
3192 movaps XMMWORD[16+rsp],xmm7 | |
3193 movaps XMMWORD[32+rsp],xmm8 | |
3194 movaps XMMWORD[48+rsp],xmm9 | |
3195 movaps XMMWORD[64+rsp],xmm10 | |
3196 movaps XMMWORD[80+rsp],xmm11 | |
3197 movaps XMMWORD[96+rsp],xmm12 | |
3198 movaps XMMWORD[112+rsp],xmm13 | |
3199 movaps XMMWORD[128+rsp],xmm14 | |
3200 movaps XMMWORD[144+rsp],xmm15 | |
3201 $L$ocb_dec_body: | |
3202 mov rbx,QWORD[56+rax] | |
3203 mov rbp,QWORD[((56+8))+rax] | |
3204 | |
3205 mov r10d,DWORD[240+rcx] | |
3206 mov r11,rcx | |
3207 shl r10d,4 | |
3208 movups xmm9,XMMWORD[rcx] | |
3209 movups xmm1,XMMWORD[16+r10*1+rcx] | |
3210 | |
3211 movdqu xmm15,XMMWORD[r9] | |
3212 pxor xmm9,xmm1 | |
3213 pxor xmm15,xmm1 | |
3214 | |
3215 mov eax,16+32 | |
3216 lea rcx,[32+r10*1+r11] | |
3217 movups xmm1,XMMWORD[16+r11] | |
3218 sub rax,r10 | |
3219 mov r10,rax | |
3220 | |
3221 movdqu xmm10,XMMWORD[rbx] | |
3222 movdqu xmm8,XMMWORD[rbp] | |
3223 | |
3224 test r8,1 | |
3225 jnz NEAR $L$ocb_dec_odd | |
3226 | |
3227 bsf r12,r8 | |
3228 add r8,1 | |
3229 shl r12,4 | |
3230 movdqu xmm7,XMMWORD[r12*1+rbx] | |
3231 movdqu xmm2,XMMWORD[rdi] | |
3232 lea rdi,[16+rdi] | |
3233 | |
3234 call __ocb_decrypt1 | |
3235 | |
3236 movdqa xmm15,xmm7 | |
3237 movups XMMWORD[rsi],xmm2 | |
3238 xorps xmm8,xmm2 | |
3239 lea rsi,[16+rsi] | |
3240 sub rdx,1 | |
3241 jz NEAR $L$ocb_dec_done | |
3242 | |
3243 $L$ocb_dec_odd: | |
3244 lea r12,[1+r8] | |
3245 lea r13,[3+r8] | |
3246 lea r14,[5+r8] | |
3247 lea r8,[6+r8] | |
3248 bsf r12,r12 | |
3249 bsf r13,r13 | |
3250 bsf r14,r14 | |
3251 shl r12,4 | |
3252 shl r13,4 | |
3253 shl r14,4 | |
3254 | |
3255 sub rdx,6 | |
3256 jc NEAR $L$ocb_dec_short | |
3257 jmp NEAR $L$ocb_dec_grandloop | |
3258 | |
3259 ALIGN 32 | |
3260 $L$ocb_dec_grandloop: | |
3261 movdqu xmm2,XMMWORD[rdi] | |
3262 movdqu xmm3,XMMWORD[16+rdi] | |
3263 movdqu xmm4,XMMWORD[32+rdi] | |
3264 movdqu xmm5,XMMWORD[48+rdi] | |
3265 movdqu xmm6,XMMWORD[64+rdi] | |
3266 movdqu xmm7,XMMWORD[80+rdi] | |
3267 lea rdi,[96+rdi] | |
3268 | |
3269 call __ocb_decrypt6 | |
3270 | |
3271 movups XMMWORD[rsi],xmm2 | |
3272 pxor xmm8,xmm2 | |
3273 movups XMMWORD[16+rsi],xmm3 | |
3274 pxor xmm8,xmm3 | |
3275 movups XMMWORD[32+rsi],xmm4 | |
3276 pxor xmm8,xmm4 | |
3277 movups XMMWORD[48+rsi],xmm5 | |
3278 pxor xmm8,xmm5 | |
3279 movups XMMWORD[64+rsi],xmm6 | |
3280 pxor xmm8,xmm6 | |
3281 movups XMMWORD[80+rsi],xmm7 | |
3282 pxor xmm8,xmm7 | |
3283 lea rsi,[96+rsi] | |
3284 sub rdx,6 | |
3285 jnc NEAR $L$ocb_dec_grandloop | |
3286 | |
3287 $L$ocb_dec_short: | |
3288 add rdx,6 | |
3289 jz NEAR $L$ocb_dec_done | |
3290 | |
3291 movdqu xmm2,XMMWORD[rdi] | |
3292 cmp rdx,2 | |
3293 jb NEAR $L$ocb_dec_one | |
3294 movdqu xmm3,XMMWORD[16+rdi] | |
3295 je NEAR $L$ocb_dec_two | |
3296 | |
3297 movdqu xmm4,XMMWORD[32+rdi] | |
3298 cmp rdx,4 | |
3299 jb NEAR $L$ocb_dec_three | |
3300 movdqu xmm5,XMMWORD[48+rdi] | |
3301 je NEAR $L$ocb_dec_four | |
3302 | |
3303 movdqu xmm6,XMMWORD[64+rdi] | |
3304 pxor xmm7,xmm7 | |
3305 | |
3306 call __ocb_decrypt6 | |
3307 | |
3308 movdqa xmm15,xmm14 | |
3309 movups XMMWORD[rsi],xmm2 | |
3310 pxor xmm8,xmm2 | |
3311 movups XMMWORD[16+rsi],xmm3 | |
3312 pxor xmm8,xmm3 | |
3313 movups XMMWORD[32+rsi],xmm4 | |
3314 pxor xmm8,xmm4 | |
3315 movups XMMWORD[48+rsi],xmm5 | |
3316 pxor xmm8,xmm5 | |
3317 movups XMMWORD[64+rsi],xmm6 | |
3318 pxor xmm8,xmm6 | |
3319 | |
3320 jmp NEAR $L$ocb_dec_done | |
3321 | |
3322 ALIGN 16 | |
3323 $L$ocb_dec_one: | |
3324 movdqa xmm7,xmm10 | |
3325 | |
3326 call __ocb_decrypt1 | |
3327 | |
3328 movdqa xmm15,xmm7 | |
3329 movups XMMWORD[rsi],xmm2 | |
3330 xorps xmm8,xmm2 | |
3331 jmp NEAR $L$ocb_dec_done | |
3332 | |
3333 ALIGN 16 | |
3334 $L$ocb_dec_two: | |
3335 pxor xmm4,xmm4 | |
3336 pxor xmm5,xmm5 | |
3337 | |
3338 call __ocb_decrypt4 | |
3339 | |
3340 movdqa xmm15,xmm11 | |
3341 movups XMMWORD[rsi],xmm2 | |
3342 xorps xmm8,xmm2 | |
3343 movups XMMWORD[16+rsi],xmm3 | |
3344 xorps xmm8,xmm3 | |
3345 | |
3346 jmp NEAR $L$ocb_dec_done | |
3347 | |
3348 ALIGN 16 | |
3349 $L$ocb_dec_three: | |
3350 pxor xmm5,xmm5 | |
3351 | |
3352 call __ocb_decrypt4 | |
3353 | |
3354 movdqa xmm15,xmm12 | |
3355 movups XMMWORD[rsi],xmm2 | |
3356 xorps xmm8,xmm2 | |
3357 movups XMMWORD[16+rsi],xmm3 | |
3358 xorps xmm8,xmm3 | |
3359 movups XMMWORD[32+rsi],xmm4 | |
3360 xorps xmm8,xmm4 | |
3361 | |
3362 jmp NEAR $L$ocb_dec_done | |
3363 | |
3364 ALIGN 16 | |
3365 $L$ocb_dec_four: | |
3366 call __ocb_decrypt4 | |
3367 | |
3368 movdqa xmm15,xmm13 | |
3369 movups XMMWORD[rsi],xmm2 | |
3370 pxor xmm8,xmm2 | |
3371 movups XMMWORD[16+rsi],xmm3 | |
3372 pxor xmm8,xmm3 | |
3373 movups XMMWORD[32+rsi],xmm4 | |
3374 pxor xmm8,xmm4 | |
3375 movups XMMWORD[48+rsi],xmm5 | |
3376 pxor xmm8,xmm5 | |
3377 | |
3378 $L$ocb_dec_done: | |
3379 pxor xmm15,xmm0 | |
3380 movdqu XMMWORD[rbp],xmm8 | |
3381 movdqu XMMWORD[r9],xmm15 | |
3382 | |
3383 xorps xmm0,xmm0 | |
3384 pxor xmm1,xmm1 | |
3385 pxor xmm2,xmm2 | |
3386 pxor xmm3,xmm3 | |
3387 pxor xmm4,xmm4 | |
3388 pxor xmm5,xmm5 | |
3389 movaps xmm6,XMMWORD[rsp] | |
3390 movaps XMMWORD[rsp],xmm0 | |
3391 movaps xmm7,XMMWORD[16+rsp] | |
3392 movaps XMMWORD[16+rsp],xmm0 | |
3393 movaps xmm8,XMMWORD[32+rsp] | |
3394 movaps XMMWORD[32+rsp],xmm0 | |
3395 movaps xmm9,XMMWORD[48+rsp] | |
3396 movaps XMMWORD[48+rsp],xmm0 | |
3397 movaps xmm10,XMMWORD[64+rsp] | |
3398 movaps XMMWORD[64+rsp],xmm0 | |
3399 movaps xmm11,XMMWORD[80+rsp] | |
3400 movaps XMMWORD[80+rsp],xmm0 | |
3401 movaps xmm12,XMMWORD[96+rsp] | |
3402 movaps XMMWORD[96+rsp],xmm0 | |
3403 movaps xmm13,XMMWORD[112+rsp] | |
3404 movaps XMMWORD[112+rsp],xmm0 | |
3405 movaps xmm14,XMMWORD[128+rsp] | |
3406 movaps XMMWORD[128+rsp],xmm0 | |
3407 movaps xmm15,XMMWORD[144+rsp] | |
3408 movaps XMMWORD[144+rsp],xmm0 | |
3409 lea rax,[((160+40))+rsp] | |
3410 $L$ocb_dec_pop: | |
3411 mov r14,QWORD[((-40))+rax] | |
3412 mov r13,QWORD[((-32))+rax] | |
3413 mov r12,QWORD[((-24))+rax] | |
3414 mov rbp,QWORD[((-16))+rax] | |
3415 mov rbx,QWORD[((-8))+rax] | |
3416 lea rsp,[rax] | |
3417 $L$ocb_dec_epilogue: | |
3418 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
3419 mov rsi,QWORD[16+rsp] | |
3420 DB 0F3h,0C3h ;repret | |
3421 $L$SEH_end_aesni_ocb_decrypt: | |
3422 | |
3423 | |
3424 ALIGN 32 | |
3425 __ocb_decrypt6: | |
3426 pxor xmm15,xmm9 | |
3427 movdqu xmm11,XMMWORD[r12*1+rbx] | |
3428 movdqa xmm12,xmm10 | |
3429 movdqu xmm13,XMMWORD[r13*1+rbx] | |
3430 movdqa xmm14,xmm10 | |
3431 pxor xmm10,xmm15 | |
3432 movdqu xmm15,XMMWORD[r14*1+rbx] | |
3433 pxor xmm11,xmm10 | |
3434 pxor xmm2,xmm10 | |
3435 pxor xmm12,xmm11 | |
3436 pxor xmm3,xmm11 | |
3437 pxor xmm13,xmm12 | |
3438 pxor xmm4,xmm12 | |
3439 pxor xmm14,xmm13 | |
3440 pxor xmm5,xmm13 | |
3441 pxor xmm15,xmm14 | |
3442 pxor xmm6,xmm14 | |
3443 pxor xmm7,xmm15 | |
3444 movups xmm0,XMMWORD[32+r11] | |
3445 | |
3446 lea r12,[1+r8] | |
3447 lea r13,[3+r8] | |
3448 lea r14,[5+r8] | |
3449 add r8,6 | |
3450 pxor xmm10,xmm9 | |
3451 bsf r12,r12 | |
3452 bsf r13,r13 | |
3453 bsf r14,r14 | |
3454 | |
3455 DB 102,15,56,222,209 | |
3456 DB 102,15,56,222,217 | |
3457 DB 102,15,56,222,225 | |
3458 DB 102,15,56,222,233 | |
3459 pxor xmm11,xmm9 | |
3460 pxor xmm12,xmm9 | |
3461 DB 102,15,56,222,241 | |
3462 pxor xmm13,xmm9 | |
3463 pxor xmm14,xmm9 | |
3464 DB 102,15,56,222,249 | |
3465 movups xmm1,XMMWORD[48+r11] | |
3466 pxor xmm15,xmm9 | |
3467 | |
3468 DB 102,15,56,222,208 | |
3469 DB 102,15,56,222,216 | |
3470 DB 102,15,56,222,224 | |
3471 DB 102,15,56,222,232 | |
3472 DB 102,15,56,222,240 | |
3473 DB 102,15,56,222,248 | |
3474 movups xmm0,XMMWORD[64+r11] | |
3475 shl r12,4 | |
3476 shl r13,4 | |
3477 jmp NEAR $L$ocb_dec_loop6 | |
3478 | |
3479 ALIGN 32 | |
3480 $L$ocb_dec_loop6: | |
3481 DB 102,15,56,222,209 | |
3482 DB 102,15,56,222,217 | |
3483 DB 102,15,56,222,225 | |
3484 DB 102,15,56,222,233 | |
3485 DB 102,15,56,222,241 | |
3486 DB 102,15,56,222,249 | |
3487 movups xmm1,XMMWORD[rax*1+rcx] | |
3488 add rax,32 | |
3489 | |
3490 DB 102,15,56,222,208 | |
3491 DB 102,15,56,222,216 | |
3492 DB 102,15,56,222,224 | |
3493 DB 102,15,56,222,232 | |
3494 DB 102,15,56,222,240 | |
3495 DB 102,15,56,222,248 | |
3496 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3497 jnz NEAR $L$ocb_dec_loop6 | |
3498 | |
3499 DB 102,15,56,222,209 | |
3500 DB 102,15,56,222,217 | |
3501 DB 102,15,56,222,225 | |
3502 DB 102,15,56,222,233 | |
3503 DB 102,15,56,222,241 | |
3504 DB 102,15,56,222,249 | |
3505 movups xmm1,XMMWORD[16+r11] | |
3506 shl r14,4 | |
3507 | |
3508 DB 102,65,15,56,223,210 | |
3509 movdqu xmm10,XMMWORD[rbx] | |
3510 mov rax,r10 | |
3511 DB 102,65,15,56,223,219 | |
3512 DB 102,65,15,56,223,228 | |
3513 DB 102,65,15,56,223,237 | |
3514 DB 102,65,15,56,223,246 | |
3515 DB 102,65,15,56,223,255 | |
3516 DB 0F3h,0C3h ;repret | |
3517 | |
3518 | |
3519 | |
3520 ALIGN 32 | |
3521 __ocb_decrypt4: | |
3522 pxor xmm15,xmm9 | |
3523 movdqu xmm11,XMMWORD[r12*1+rbx] | |
3524 movdqa xmm12,xmm10 | |
3525 movdqu xmm13,XMMWORD[r13*1+rbx] | |
3526 pxor xmm10,xmm15 | |
3527 pxor xmm11,xmm10 | |
3528 pxor xmm2,xmm10 | |
3529 pxor xmm12,xmm11 | |
3530 pxor xmm3,xmm11 | |
3531 pxor xmm13,xmm12 | |
3532 pxor xmm4,xmm12 | |
3533 pxor xmm5,xmm13 | |
3534 movups xmm0,XMMWORD[32+r11] | |
3535 | |
3536 pxor xmm10,xmm9 | |
3537 pxor xmm11,xmm9 | |
3538 pxor xmm12,xmm9 | |
3539 pxor xmm13,xmm9 | |
3540 | |
3541 DB 102,15,56,222,209 | |
3542 DB 102,15,56,222,217 | |
3543 DB 102,15,56,222,225 | |
3544 DB 102,15,56,222,233 | |
3545 movups xmm1,XMMWORD[48+r11] | |
3546 | |
3547 DB 102,15,56,222,208 | |
3548 DB 102,15,56,222,216 | |
3549 DB 102,15,56,222,224 | |
3550 DB 102,15,56,222,232 | |
3551 movups xmm0,XMMWORD[64+r11] | |
3552 jmp NEAR $L$ocb_dec_loop4 | |
3553 | |
3554 ALIGN 32 | |
3555 $L$ocb_dec_loop4: | |
3556 DB 102,15,56,222,209 | |
3557 DB 102,15,56,222,217 | |
3558 DB 102,15,56,222,225 | |
3559 DB 102,15,56,222,233 | |
3560 movups xmm1,XMMWORD[rax*1+rcx] | |
3561 add rax,32 | |
3562 | |
3563 DB 102,15,56,222,208 | |
3564 DB 102,15,56,222,216 | |
3565 DB 102,15,56,222,224 | |
3566 DB 102,15,56,222,232 | |
3567 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3568 jnz NEAR $L$ocb_dec_loop4 | |
3569 | |
3570 DB 102,15,56,222,209 | |
3571 DB 102,15,56,222,217 | |
3572 DB 102,15,56,222,225 | |
3573 DB 102,15,56,222,233 | |
3574 movups xmm1,XMMWORD[16+r11] | |
3575 mov rax,r10 | |
3576 | |
3577 DB 102,65,15,56,223,210 | |
3578 DB 102,65,15,56,223,219 | |
3579 DB 102,65,15,56,223,228 | |
3580 DB 102,65,15,56,223,237 | |
3581 DB 0F3h,0C3h ;repret | |
3582 | |
3583 | |
3584 | |
3585 ALIGN 32 | |
3586 __ocb_decrypt1: | |
3587 pxor xmm7,xmm15 | |
3588 pxor xmm7,xmm9 | |
3589 pxor xmm2,xmm7 | |
3590 movups xmm0,XMMWORD[32+r11] | |
3591 | |
3592 DB 102,15,56,222,209 | |
3593 movups xmm1,XMMWORD[48+r11] | |
3594 pxor xmm7,xmm9 | |
3595 | |
3596 DB 102,15,56,222,208 | |
3597 movups xmm0,XMMWORD[64+r11] | |
3598 jmp NEAR $L$ocb_dec_loop1 | |
3599 | |
3600 ALIGN 32 | |
3601 $L$ocb_dec_loop1: | |
3602 DB 102,15,56,222,209 | |
3603 movups xmm1,XMMWORD[rax*1+rcx] | |
3604 add rax,32 | |
3605 | |
3606 DB 102,15,56,222,208 | |
3607 movups xmm0,XMMWORD[((-16))+rax*1+rcx] | |
3608 jnz NEAR $L$ocb_dec_loop1 | |
3609 | |
3610 DB 102,15,56,222,209 | |
3611 movups xmm1,XMMWORD[16+r11] | |
3612 mov rax,r10 | |
3613 | |
3614 DB 102,15,56,223,215 | |
3615 DB 0F3h,0C3h ;repret | |
3616 | |
3617 global aesni_cbc_encrypt | |
3618 | |
3619 ALIGN 16 | |
3620 aesni_cbc_encrypt: | |
3621 mov QWORD[8+rsp],rdi ;WIN64 prologue | |
3622 mov QWORD[16+rsp],rsi | |
3623 mov rax,rsp | |
3624 $L$SEH_begin_aesni_cbc_encrypt: | |
3625 mov rdi,rcx | |
3626 mov rsi,rdx | |
3627 mov rdx,r8 | |
3628 mov rcx,r9 | |
3629 mov r8,QWORD[40+rsp] | |
3630 mov r9,QWORD[48+rsp] | |
3631 | |
3632 | |
3633 test rdx,rdx | |
3634 jz NEAR $L$cbc_ret | |
3635 | |
3636 mov r10d,DWORD[240+rcx] | |
3637 mov r11,rcx | |
3638 test r9d,r9d | |
3639 jz NEAR $L$cbc_decrypt | |
3640 | |
3641 movups xmm2,XMMWORD[r8] | |
3642 mov eax,r10d | |
3643 cmp rdx,16 | |
3644 jb NEAR $L$cbc_enc_tail | |
3645 sub rdx,16 | |
3646 jmp NEAR $L$cbc_enc_loop | |
3647 ALIGN 16 | |
3648 $L$cbc_enc_loop: | |
3649 movups xmm3,XMMWORD[rdi] | |
3650 lea rdi,[16+rdi] | |
3651 | |
3652 movups xmm0,XMMWORD[rcx] | |
3653 movups xmm1,XMMWORD[16+rcx] | |
3654 xorps xmm3,xmm0 | |
3655 lea rcx,[32+rcx] | |
3656 xorps xmm2,xmm3 | |
3657 $L$oop_enc1_15: | |
3658 DB 102,15,56,220,209 | |
3659 dec eax | |
3660 movups xmm1,XMMWORD[rcx] | |
3661 lea rcx,[16+rcx] | |
3662 jnz NEAR $L$oop_enc1_15 | |
3663 DB 102,15,56,221,209 | |
3664 mov eax,r10d | |
3665 mov rcx,r11 | |
3666 movups XMMWORD[rsi],xmm2 | |
3667 lea rsi,[16+rsi] | |
3668 sub rdx,16 | |
3669 jnc NEAR $L$cbc_enc_loop | |
3670 add rdx,16 | |
3671 jnz NEAR $L$cbc_enc_tail | |
3672 pxor xmm0,xmm0 | |
3673 pxor xmm1,xmm1 | |
3674 movups XMMWORD[r8],xmm2 | |
3675 pxor xmm2,xmm2 | |
3676 pxor xmm3,xmm3 | |
3677 jmp NEAR $L$cbc_ret | |
3678 | |
3679 $L$cbc_enc_tail: | |
3680 mov rcx,rdx | |
3681 xchg rsi,rdi | |
3682 DD 0x9066A4F3 | |
3683 mov ecx,16 | |
3684 sub rcx,rdx | |
3685 xor eax,eax | |
3686 DD 0x9066AAF3 | |
3687 lea rdi,[((-16))+rdi] | |
3688 mov eax,r10d | |
3689 mov rsi,rdi | |
3690 mov rcx,r11 | |
3691 xor rdx,rdx | |
3692 jmp NEAR $L$cbc_enc_loop | |
3693 | |
3694 ALIGN 16 | |
3695 $L$cbc_decrypt: | |
3696 cmp rdx,16 | |
3697 jne NEAR $L$cbc_decrypt_bulk | |
3698 | |
3699 | |
3700 | |
3701 movdqu xmm2,XMMWORD[rdi] | |
3702 movdqu xmm3,XMMWORD[r8] | |
3703 movdqa xmm4,xmm2 | |
3704 movups xmm0,XMMWORD[rcx] | |
3705 movups xmm1,XMMWORD[16+rcx] | |
3706 lea rcx,[32+rcx] | |
3707 xorps xmm2,xmm0 | |
3708 $L$oop_dec1_16: | |
3709 DB 102,15,56,222,209 | |
3710 dec r10d | |
3711 movups xmm1,XMMWORD[rcx] | |
3712 lea rcx,[16+rcx] | |
3713 jnz NEAR $L$oop_dec1_16 | |
3714 DB 102,15,56,223,209 | |
3715 pxor xmm0,xmm0 | |
3716 pxor xmm1,xmm1 | |
3717 movdqu XMMWORD[r8],xmm4 | |
3718 xorps xmm2,xmm3 | |
3719 pxor xmm3,xmm3 | |
3720 movups XMMWORD[rsi],xmm2 | |
3721 pxor xmm2,xmm2 | |
3722 jmp NEAR $L$cbc_ret | |
3723 ALIGN 16 | |
3724 $L$cbc_decrypt_bulk: | |
3725 lea r11,[rsp] | |
3726 push rbp | |
3727 sub rsp,176 | |
3728 and rsp,-16 | |
3729 movaps XMMWORD[16+rsp],xmm6 | |
3730 movaps XMMWORD[32+rsp],xmm7 | |
3731 movaps XMMWORD[48+rsp],xmm8 | |
3732 movaps XMMWORD[64+rsp],xmm9 | |
3733 movaps XMMWORD[80+rsp],xmm10 | |
3734 movaps XMMWORD[96+rsp],xmm11 | |
3735 movaps XMMWORD[112+rsp],xmm12 | |
3736 movaps XMMWORD[128+rsp],xmm13 | |
3737 movaps XMMWORD[144+rsp],xmm14 | |
3738 movaps XMMWORD[160+rsp],xmm15 | |
3739 $L$cbc_decrypt_body: | |
3740 mov rbp,rcx | |
3741 movups xmm10,XMMWORD[r8] | |
3742 mov eax,r10d | |
3743 cmp rdx,0x50 | |
3744 jbe NEAR $L$cbc_dec_tail | |
3745 | |
3746 movups xmm0,XMMWORD[rcx] | |
3747 movdqu xmm2,XMMWORD[rdi] | |
3748 movdqu xmm3,XMMWORD[16+rdi] | |
3749 movdqa xmm11,xmm2 | |
3750 movdqu xmm4,XMMWORD[32+rdi] | |
3751 movdqa xmm12,xmm3 | |
3752 movdqu xmm5,XMMWORD[48+rdi] | |
3753 movdqa xmm13,xmm4 | |
3754 movdqu xmm6,XMMWORD[64+rdi] | |
3755 movdqa xmm14,xmm5 | |
3756 movdqu xmm7,XMMWORD[80+rdi] | |
3757 movdqa xmm15,xmm6 | |
3758 mov r9d,DWORD[((OPENSSL_ia32cap_P+4))] | |
3759 cmp rdx,0x70 | |
3760 jbe NEAR $L$cbc_dec_six_or_seven | |
3761 | |
3762 and r9d,71303168 | |
3763 sub rdx,0x50 | |
3764 cmp r9d,4194304 | |
3765 je NEAR $L$cbc_dec_loop6_enter | |
3766 sub rdx,0x20 | |
3767 lea rcx,[112+rcx] | |
3768 jmp NEAR $L$cbc_dec_loop8_enter | |
3769 ALIGN 16 | |
3770 $L$cbc_dec_loop8: | |
3771 movups XMMWORD[rsi],xmm9 | |
3772 lea rsi,[16+rsi] | |
3773 $L$cbc_dec_loop8_enter: | |
3774 movdqu xmm8,XMMWORD[96+rdi] | |
3775 pxor xmm2,xmm0 | |
3776 movdqu xmm9,XMMWORD[112+rdi] | |
3777 pxor xmm3,xmm0 | |
3778 movups xmm1,XMMWORD[((16-112))+rcx] | |
3779 pxor xmm4,xmm0 | |
3780 mov rbp,-1 | |
3781 cmp rdx,0x70 | |
3782 pxor xmm5,xmm0 | |
3783 pxor xmm6,xmm0 | |
3784 pxor xmm7,xmm0 | |
3785 pxor xmm8,xmm0 | |
3786 | |
3787 DB 102,15,56,222,209 | |
3788 pxor xmm9,xmm0 | |
3789 movups xmm0,XMMWORD[((32-112))+rcx] | |
3790 DB 102,15,56,222,217 | |
3791 DB 102,15,56,222,225 | |
3792 DB 102,15,56,222,233 | |
3793 DB 102,15,56,222,241 | |
3794 DB 102,15,56,222,249 | |
3795 DB 102,68,15,56,222,193 | |
3796 adc rbp,0 | |
3797 and rbp,128 | |
3798 DB 102,68,15,56,222,201 | |
3799 add rbp,rdi | |
3800 movups xmm1,XMMWORD[((48-112))+rcx] | |
3801 DB 102,15,56,222,208 | |
3802 DB 102,15,56,222,216 | |
3803 DB 102,15,56,222,224 | |
3804 DB 102,15,56,222,232 | |
3805 DB 102,15,56,222,240 | |
3806 DB 102,15,56,222,248 | |
3807 DB 102,68,15,56,222,192 | |
3808 DB 102,68,15,56,222,200 | |
3809 movups xmm0,XMMWORD[((64-112))+rcx] | |
3810 nop | |
3811 DB 102,15,56,222,209 | |
3812 DB 102,15,56,222,217 | |
3813 DB 102,15,56,222,225 | |
3814 DB 102,15,56,222,233 | |
3815 DB 102,15,56,222,241 | |
3816 DB 102,15,56,222,249 | |
3817 DB 102,68,15,56,222,193 | |
3818 DB 102,68,15,56,222,201 | |
3819 movups xmm1,XMMWORD[((80-112))+rcx] | |
3820 nop | |
3821 DB 102,15,56,222,208 | |
3822 DB 102,15,56,222,216 | |
3823 DB 102,15,56,222,224 | |
3824 DB 102,15,56,222,232 | |
3825 DB 102,15,56,222,240 | |
3826 DB 102,15,56,222,248 | |
3827 DB 102,68,15,56,222,192 | |
3828 DB 102,68,15,56,222,200 | |
3829 movups xmm0,XMMWORD[((96-112))+rcx] | |
3830 nop | |
3831 DB 102,15,56,222,209 | |
3832 DB 102,15,56,222,217 | |
3833 DB 102,15,56,222,225 | |
3834 DB 102,15,56,222,233 | |
3835 DB 102,15,56,222,241 | |
3836 DB 102,15,56,222,249 | |
3837 DB 102,68,15,56,222,193 | |
3838 DB 102,68,15,56,222,201 | |
3839 movups xmm1,XMMWORD[((112-112))+rcx] | |
3840 nop | |
3841 DB 102,15,56,222,208 | |
3842 DB 102,15,56,222,216 | |
3843 DB 102,15,56,222,224 | |
3844 DB 102,15,56,222,232 | |
3845 DB 102,15,56,222,240 | |
3846 DB 102,15,56,222,248 | |
3847 DB 102,68,15,56,222,192 | |
3848 DB 102,68,15,56,222,200 | |
3849 movups xmm0,XMMWORD[((128-112))+rcx] | |
3850 nop | |
3851 DB 102,15,56,222,209 | |
3852 DB 102,15,56,222,217 | |
3853 DB 102,15,56,222,225 | |
3854 DB 102,15,56,222,233 | |
3855 DB 102,15,56,222,241 | |
3856 DB 102,15,56,222,249 | |
3857 DB 102,68,15,56,222,193 | |
3858 DB 102,68,15,56,222,201 | |
3859 movups xmm1,XMMWORD[((144-112))+rcx] | |
3860 cmp eax,11 | |
3861 DB 102,15,56,222,208 | |
3862 DB 102,15,56,222,216 | |
3863 DB 102,15,56,222,224 | |
3864 DB 102,15,56,222,232 | |
3865 DB 102,15,56,222,240 | |
3866 DB 102,15,56,222,248 | |
3867 DB 102,68,15,56,222,192 | |
3868 DB 102,68,15,56,222,200 | |
3869 movups xmm0,XMMWORD[((160-112))+rcx] | |
3870 jb NEAR $L$cbc_dec_done | |
3871 DB 102,15,56,222,209 | |
3872 DB 102,15,56,222,217 | |
3873 DB 102,15,56,222,225 | |
3874 DB 102,15,56,222,233 | |
3875 DB 102,15,56,222,241 | |
3876 DB 102,15,56,222,249 | |
3877 DB 102,68,15,56,222,193 | |
3878 DB 102,68,15,56,222,201 | |
3879 movups xmm1,XMMWORD[((176-112))+rcx] | |
3880 nop | |
3881 DB 102,15,56,222,208 | |
3882 DB 102,15,56,222,216 | |
3883 DB 102,15,56,222,224 | |
3884 DB 102,15,56,222,232 | |
3885 DB 102,15,56,222,240 | |
3886 DB 102,15,56,222,248 | |
3887 DB 102,68,15,56,222,192 | |
3888 DB 102,68,15,56,222,200 | |
3889 movups xmm0,XMMWORD[((192-112))+rcx] | |
3890 je NEAR $L$cbc_dec_done | |
3891 DB 102,15,56,222,209 | |
3892 DB 102,15,56,222,217 | |
3893 DB 102,15,56,222,225 | |
3894 DB 102,15,56,222,233 | |
3895 DB 102,15,56,222,241 | |
3896 DB 102,15,56,222,249 | |
3897 DB 102,68,15,56,222,193 | |
3898 DB 102,68,15,56,222,201 | |
3899 movups xmm1,XMMWORD[((208-112))+rcx] | |
3900 nop | |
3901 DB 102,15,56,222,208 | |
3902 DB 102,15,56,222,216 | |
3903 DB 102,15,56,222,224 | |
3904 DB 102,15,56,222,232 | |
3905 DB 102,15,56,222,240 | |
3906 DB 102,15,56,222,248 | |
3907 DB 102,68,15,56,222,192 | |
3908 DB 102,68,15,56,222,200 | |
3909 movups xmm0,XMMWORD[((224-112))+rcx] | |
3910 jmp NEAR $L$cbc_dec_done | |
3911 ALIGN 16 | |
3912 $L$cbc_dec_done: | |
3913 DB 102,15,56,222,209 | |
3914 DB 102,15,56,222,217 | |
3915 pxor xmm10,xmm0 | |
3916 pxor xmm11,xmm0 | |
3917 DB 102,15,56,222,225 | |
3918 DB 102,15,56,222,233 | |
3919 pxor xmm12,xmm0 | |
3920 pxor xmm13,xmm0 | |
3921 DB 102,15,56,222,241 | |
3922 DB 102,15,56,222,249 | |
3923 pxor xmm14,xmm0 | |
3924 pxor xmm15,xmm0 | |
3925 DB 102,68,15,56,222,193 | |
3926 DB 102,68,15,56,222,201 | |
3927 movdqu xmm1,XMMWORD[80+rdi] | |
3928 | |
3929 DB 102,65,15,56,223,210 | |
3930 movdqu xmm10,XMMWORD[96+rdi] | |
3931 pxor xmm1,xmm0 | |
3932 DB 102,65,15,56,223,219 | |
3933 pxor xmm10,xmm0 | |
3934 movdqu xmm0,XMMWORD[112+rdi] | |
3935 DB 102,65,15,56,223,228 | |
3936 lea rdi,[128+rdi] | |
3937 movdqu xmm11,XMMWORD[rbp] | |
3938 DB 102,65,15,56,223,237 | |
3939 DB 102,65,15,56,223,246 | |
3940 movdqu xmm12,XMMWORD[16+rbp] | |
3941 movdqu xmm13,XMMWORD[32+rbp] | |
3942 DB 102,65,15,56,223,255 | |
3943 DB 102,68,15,56,223,193 | |
3944 movdqu xmm14,XMMWORD[48+rbp] | |
3945 movdqu xmm15,XMMWORD[64+rbp] | |
3946 DB 102,69,15,56,223,202 | |
3947 movdqa xmm10,xmm0 | |
3948 movdqu xmm1,XMMWORD[80+rbp] | |
3949 movups xmm0,XMMWORD[((-112))+rcx] | |
3950 | |
3951 movups XMMWORD[rsi],xmm2 | |
3952 movdqa xmm2,xmm11 | |
3953 movups XMMWORD[16+rsi],xmm3 | |
3954 movdqa xmm3,xmm12 | |
3955 movups XMMWORD[32+rsi],xmm4 | |
3956 movdqa xmm4,xmm13 | |
3957 movups XMMWORD[48+rsi],xmm5 | |
3958 movdqa xmm5,xmm14 | |
3959 movups XMMWORD[64+rsi],xmm6 | |
3960 movdqa xmm6,xmm15 | |
3961 movups XMMWORD[80+rsi],xmm7 | |
3962 movdqa xmm7,xmm1 | |
3963 movups XMMWORD[96+rsi],xmm8 | |
3964 lea rsi,[112+rsi] | |
3965 | |
3966 sub rdx,0x80 | |
3967 ja NEAR $L$cbc_dec_loop8 | |
3968 | |
3969 movaps xmm2,xmm9 | |
3970 lea rcx,[((-112))+rcx] | |
3971 add rdx,0x70 | |
3972 jle NEAR $L$cbc_dec_clear_tail_collected | |
3973 movups XMMWORD[rsi],xmm9 | |
3974 lea rsi,[16+rsi] | |
3975 cmp rdx,0x50 | |
3976 jbe NEAR $L$cbc_dec_tail | |
3977 | |
3978 movaps xmm2,xmm11 | |
3979 $L$cbc_dec_six_or_seven: | |
3980 cmp rdx,0x60 | |
3981 ja NEAR $L$cbc_dec_seven | |
3982 | |
3983 movaps xmm8,xmm7 | |
3984 call _aesni_decrypt6 | |
3985 pxor xmm2,xmm10 | |
3986 movaps xmm10,xmm8 | |
3987 pxor xmm3,xmm11 | |
3988 movdqu XMMWORD[rsi],xmm2 | |
3989 pxor xmm4,xmm12 | |
3990 movdqu XMMWORD[16+rsi],xmm3 | |
3991 pxor xmm3,xmm3 | |
3992 pxor xmm5,xmm13 | |
3993 movdqu XMMWORD[32+rsi],xmm4 | |
3994 pxor xmm4,xmm4 | |
3995 pxor xmm6,xmm14 | |
3996 movdqu XMMWORD[48+rsi],xmm5 | |
3997 pxor xmm5,xmm5 | |
3998 pxor xmm7,xmm15 | |
3999 movdqu XMMWORD[64+rsi],xmm6 | |
4000 pxor xmm6,xmm6 | |
4001 lea rsi,[80+rsi] | |
4002 movdqa xmm2,xmm7 | |
4003 pxor xmm7,xmm7 | |
4004 jmp NEAR $L$cbc_dec_tail_collected | |
4005 | |
4006 ALIGN 16 | |
4007 $L$cbc_dec_seven: | |
4008 movups xmm8,XMMWORD[96+rdi] | |
4009 xorps xmm9,xmm9 | |
4010 call _aesni_decrypt8 | |
4011 movups xmm9,XMMWORD[80+rdi] | |
4012 pxor xmm2,xmm10 | |
4013 movups xmm10,XMMWORD[96+rdi] | |
4014 pxor xmm3,xmm11 | |
4015 movdqu XMMWORD[rsi],xmm2 | |
4016 pxor xmm4,xmm12 | |
4017 movdqu XMMWORD[16+rsi],xmm3 | |
4018 pxor xmm3,xmm3 | |
4019 pxor xmm5,xmm13 | |
4020 movdqu XMMWORD[32+rsi],xmm4 | |
4021 pxor xmm4,xmm4 | |
4022 pxor xmm6,xmm14 | |
4023 movdqu XMMWORD[48+rsi],xmm5 | |
4024 pxor xmm5,xmm5 | |
4025 pxor xmm7,xmm15 | |
4026 movdqu XMMWORD[64+rsi],xmm6 | |
4027 pxor xmm6,xmm6 | |
4028 pxor xmm8,xmm9 | |
4029 movdqu XMMWORD[80+rsi],xmm7 | |
4030 pxor xmm7,xmm7 | |
4031 lea rsi,[96+rsi] | |
4032 movdqa xmm2,xmm8 | |
4033 pxor xmm8,xmm8 | |
4034 pxor xmm9,xmm9 | |
4035 jmp NEAR $L$cbc_dec_tail_collected | |
4036 | |
4037 ALIGN 16 | |
4038 $L$cbc_dec_loop6: | |
4039 movups XMMWORD[rsi],xmm7 | |
4040 lea rsi,[16+rsi] | |
4041 movdqu xmm2,XMMWORD[rdi] | |
4042 movdqu xmm3,XMMWORD[16+rdi] | |
4043 movdqa xmm11,xmm2 | |
4044 movdqu xmm4,XMMWORD[32+rdi] | |
4045 movdqa xmm12,xmm3 | |
4046 movdqu xmm5,XMMWORD[48+rdi] | |
4047 movdqa xmm13,xmm4 | |
4048 movdqu xmm6,XMMWORD[64+rdi] | |
4049 movdqa xmm14,xmm5 | |
4050 movdqu xmm7,XMMWORD[80+rdi] | |
4051 movdqa xmm15,xmm6 | |
4052 $L$cbc_dec_loop6_enter: | |
4053 lea rdi,[96+rdi] | |
4054 movdqa xmm8,xmm7 | |
4055 | |
4056 call _aesni_decrypt6 | |
4057 | |
4058 pxor xmm2,xmm10 | |
4059 movdqa xmm10,xmm8 | |
4060 pxor xmm3,xmm11 | |
4061 movdqu XMMWORD[rsi],xmm2 | |
4062 pxor xmm4,xmm12 | |
4063 movdqu XMMWORD[16+rsi],xmm3 | |
4064 pxor xmm5,xmm13 | |
4065 movdqu XMMWORD[32+rsi],xmm4 | |
4066 pxor xmm6,xmm14 | |
4067 mov rcx,rbp | |
4068 movdqu XMMWORD[48+rsi],xmm5 | |
4069 pxor xmm7,xmm15 | |
4070 mov eax,r10d | |
4071 movdqu XMMWORD[64+rsi],xmm6 | |
4072 lea rsi,[80+rsi] | |
4073 sub rdx,0x60 | |
4074 ja NEAR $L$cbc_dec_loop6 | |
4075 | |
4076 movdqa xmm2,xmm7 | |
4077 add rdx,0x50 | |
4078 jle NEAR $L$cbc_dec_clear_tail_collected | |
4079 movups XMMWORD[rsi],xmm7 | |
4080 lea rsi,[16+rsi] | |
4081 | |
4082 $L$cbc_dec_tail: | |
4083 movups xmm2,XMMWORD[rdi] | |
4084 sub rdx,0x10 | |
4085 jbe NEAR $L$cbc_dec_one | |
4086 | |
4087 movups xmm3,XMMWORD[16+rdi] | |
4088 movaps xmm11,xmm2 | |
4089 sub rdx,0x10 | |
4090 jbe NEAR $L$cbc_dec_two | |
4091 | |
4092 movups xmm4,XMMWORD[32+rdi] | |
4093 movaps xmm12,xmm3 | |
4094 sub rdx,0x10 | |
4095 jbe NEAR $L$cbc_dec_three | |
4096 | |
4097 movups xmm5,XMMWORD[48+rdi] | |
4098 movaps xmm13,xmm4 | |
4099 sub rdx,0x10 | |
4100 jbe NEAR $L$cbc_dec_four | |
4101 | |
4102 movups xmm6,XMMWORD[64+rdi] | |
4103 movaps xmm14,xmm5 | |
4104 movaps xmm15,xmm6 | |
4105 xorps xmm7,xmm7 | |
4106 call _aesni_decrypt6 | |
4107 pxor xmm2,xmm10 | |
4108 movaps xmm10,xmm15 | |
4109 pxor xmm3,xmm11 | |
4110 movdqu XMMWORD[rsi],xmm2 | |
4111 pxor xmm4,xmm12 | |
4112 movdqu XMMWORD[16+rsi],xmm3 | |
4113 pxor xmm3,xmm3 | |
4114 pxor xmm5,xmm13 | |
4115 movdqu XMMWORD[32+rsi],xmm4 | |
4116 pxor xmm4,xmm4 | |
4117 pxor xmm6,xmm14 | |
4118 movdqu XMMWORD[48+rsi],xmm5 | |
4119 pxor xmm5,xmm5 | |
4120 lea rsi,[64+rsi] | |
4121 movdqa xmm2,xmm6 | |
4122 pxor xmm6,xmm6 | |
4123 pxor xmm7,xmm7 | |
4124 sub rdx,0x10 | |
4125 jmp NEAR $L$cbc_dec_tail_collected | |
4126 | |
4127 ALIGN 16 | |
4128 $L$cbc_dec_one: | |
4129 movaps xmm11,xmm2 | |
4130 movups xmm0,XMMWORD[rcx] | |
4131 movups xmm1,XMMWORD[16+rcx] | |
4132 lea rcx,[32+rcx] | |
4133 xorps xmm2,xmm0 | |
4134 $L$oop_dec1_17: | |
4135 DB 102,15,56,222,209 | |
4136 dec eax | |
4137 movups xmm1,XMMWORD[rcx] | |
4138 lea rcx,[16+rcx] | |
4139 jnz NEAR $L$oop_dec1_17 | |
4140 DB 102,15,56,223,209 | |
4141 xorps xmm2,xmm10 | |
4142 movaps xmm10,xmm11 | |
4143 jmp NEAR $L$cbc_dec_tail_collected | |
4144 ALIGN 16 | |
4145 $L$cbc_dec_two: | |
4146 movaps xmm12,xmm3 | |
4147 call _aesni_decrypt2 | |
4148 pxor xmm2,xmm10 | |
4149 movaps xmm10,xmm12 | |
4150 pxor xmm3,xmm11 | |
4151 movdqu XMMWORD[rsi],xmm2 | |
4152 movdqa xmm2,xmm3 | |
4153 pxor xmm3,xmm3 | |
4154 lea rsi,[16+rsi] | |
4155 jmp NEAR $L$cbc_dec_tail_collected | |
4156 ALIGN 16 | |
4157 $L$cbc_dec_three: | |
4158 movaps xmm13,xmm4 | |
4159 call _aesni_decrypt3 | |
4160 pxor xmm2,xmm10 | |
4161 movaps xmm10,xmm13 | |
4162 pxor xmm3,xmm11 | |
4163 movdqu XMMWORD[rsi],xmm2 | |
4164 pxor xmm4,xmm12 | |
4165 movdqu XMMWORD[16+rsi],xmm3 | |
4166 pxor xmm3,xmm3 | |
4167 movdqa xmm2,xmm4 | |
4168 pxor xmm4,xmm4 | |
4169 lea rsi,[32+rsi] | |
4170 jmp NEAR $L$cbc_dec_tail_collected | |
4171 ALIGN 16 | |
4172 $L$cbc_dec_four: | |
4173 movaps xmm14,xmm5 | |
4174 call _aesni_decrypt4 | |
4175 pxor xmm2,xmm10 | |
4176 movaps xmm10,xmm14 | |
4177 pxor xmm3,xmm11 | |
4178 movdqu XMMWORD[rsi],xmm2 | |
4179 pxor xmm4,xmm12 | |
4180 movdqu XMMWORD[16+rsi],xmm3 | |
4181 pxor xmm3,xmm3 | |
4182 pxor xmm5,xmm13 | |
4183 movdqu XMMWORD[32+rsi],xmm4 | |
4184 pxor xmm4,xmm4 | |
4185 movdqa xmm2,xmm5 | |
4186 pxor xmm5,xmm5 | |
4187 lea rsi,[48+rsi] | |
4188 jmp NEAR $L$cbc_dec_tail_collected | |
4189 | |
4190 ALIGN 16 | |
4191 $L$cbc_dec_clear_tail_collected: | |
4192 pxor xmm3,xmm3 | |
4193 pxor xmm4,xmm4 | |
4194 pxor xmm5,xmm5 | |
4195 $L$cbc_dec_tail_collected: | |
4196 movups XMMWORD[r8],xmm10 | |
4197 and rdx,15 | |
4198 jnz NEAR $L$cbc_dec_tail_partial | |
4199 movups XMMWORD[rsi],xmm2 | |
4200 pxor xmm2,xmm2 | |
4201 jmp NEAR $L$cbc_dec_ret | |
4202 ALIGN 16 | |
4203 $L$cbc_dec_tail_partial: | |
4204 movaps XMMWORD[rsp],xmm2 | |
4205 pxor xmm2,xmm2 | |
4206 mov rcx,16 | |
4207 mov rdi,rsi | |
4208 sub rcx,rdx | |
4209 lea rsi,[rsp] | |
4210 DD 0x9066A4F3 | |
4211 movdqa XMMWORD[rsp],xmm2 | |
4212 | |
4213 $L$cbc_dec_ret: | |
4214 xorps xmm0,xmm0 | |
4215 pxor xmm1,xmm1 | |
4216 movaps xmm6,XMMWORD[16+rsp] | |
4217 movaps XMMWORD[16+rsp],xmm0 | |
4218 movaps xmm7,XMMWORD[32+rsp] | |
4219 movaps XMMWORD[32+rsp],xmm0 | |
4220 movaps xmm8,XMMWORD[48+rsp] | |
4221 movaps XMMWORD[48+rsp],xmm0 | |
4222 movaps xmm9,XMMWORD[64+rsp] | |
4223 movaps XMMWORD[64+rsp],xmm0 | |
4224 movaps xmm10,XMMWORD[80+rsp] | |
4225 movaps XMMWORD[80+rsp],xmm0 | |
4226 movaps xmm11,XMMWORD[96+rsp] | |
4227 movaps XMMWORD[96+rsp],xmm0 | |
4228 movaps xmm12,XMMWORD[112+rsp] | |
4229 movaps XMMWORD[112+rsp],xmm0 | |
4230 movaps xmm13,XMMWORD[128+rsp] | |
4231 movaps XMMWORD[128+rsp],xmm0 | |
4232 movaps xmm14,XMMWORD[144+rsp] | |
4233 movaps XMMWORD[144+rsp],xmm0 | |
4234 movaps xmm15,XMMWORD[160+rsp] | |
4235 movaps XMMWORD[160+rsp],xmm0 | |
4236 mov rbp,QWORD[((-8))+r11] | |
4237 lea rsp,[r11] | |
4238 $L$cbc_ret: | |
4239 mov rdi,QWORD[8+rsp] ;WIN64 epilogue | |
4240 mov rsi,QWORD[16+rsp] | |
4241 DB 0F3h,0C3h ;repret | |
4242 $L$SEH_end_aesni_cbc_encrypt: | |
4243 global aesni_set_decrypt_key | |
4244 | |
4245 ALIGN 16 | |
4246 aesni_set_decrypt_key: | |
4247 DB 0x48,0x83,0xEC,0x08 | |
4248 call __aesni_set_encrypt_key | |
4249 shl edx,4 | |
4250 test eax,eax | |
4251 jnz NEAR $L$dec_key_ret | |
4252 lea rcx,[16+rdx*1+r8] | |
4253 | |
4254 movups xmm0,XMMWORD[r8] | |
4255 movups xmm1,XMMWORD[rcx] | |
4256 movups XMMWORD[rcx],xmm0 | |
4257 movups XMMWORD[r8],xmm1 | |
4258 lea r8,[16+r8] | |
4259 lea rcx,[((-16))+rcx] | |
4260 | |
4261 $L$dec_key_inverse: | |
4262 movups xmm0,XMMWORD[r8] | |
4263 movups xmm1,XMMWORD[rcx] | |
4264 DB 102,15,56,219,192 | |
4265 DB 102,15,56,219,201 | |
4266 lea r8,[16+r8] | |
4267 lea rcx,[((-16))+rcx] | |
4268 movups XMMWORD[16+rcx],xmm0 | |
4269 movups XMMWORD[(-16)+r8],xmm1 | |
4270 cmp rcx,r8 | |
4271 ja NEAR $L$dec_key_inverse | |
4272 | |
4273 movups xmm0,XMMWORD[r8] | |
4274 DB 102,15,56,219,192 | |
4275 pxor xmm1,xmm1 | |
4276 movups XMMWORD[rcx],xmm0 | |
4277 pxor xmm0,xmm0 | |
4278 $L$dec_key_ret: | |
4279 add rsp,8 | |
4280 DB 0F3h,0C3h ;repret | |
4281 $L$SEH_end_set_decrypt_key: | |
4282 | |
4283 global aesni_set_encrypt_key | |
4284 | |
4285 ALIGN 16 | |
4286 aesni_set_encrypt_key: | |
4287 __aesni_set_encrypt_key: | |
4288 DB 0x48,0x83,0xEC,0x08 | |
4289 mov rax,-1 | |
4290 test rcx,rcx | |
4291 jz NEAR $L$enc_key_ret | |
4292 test r8,r8 | |
4293 jz NEAR $L$enc_key_ret | |
4294 | |
4295 mov r10d,268437504 | |
4296 movups xmm0,XMMWORD[rcx] | |
4297 xorps xmm4,xmm4 | |
4298 and r10d,DWORD[((OPENSSL_ia32cap_P+4))] | |
4299 lea rax,[16+r8] | |
4300 cmp edx,256 | |
4301 je NEAR $L$14rounds | |
4302 cmp edx,192 | |
4303 je NEAR $L$12rounds | |
4304 cmp edx,128 | |
4305 jne NEAR $L$bad_keybits | |
4306 | |
4307 $L$10rounds: | |
4308 mov edx,9 | |
4309 cmp r10d,268435456 | |
4310 je NEAR $L$10rounds_alt | |
4311 | |
4312 movups XMMWORD[r8],xmm0 | |
4313 DB 102,15,58,223,200,1 | |
4314 call $L$key_expansion_128_cold | |
4315 DB 102,15,58,223,200,2 | |
4316 call $L$key_expansion_128 | |
4317 DB 102,15,58,223,200,4 | |
4318 call $L$key_expansion_128 | |
4319 DB 102,15,58,223,200,8 | |
4320 call $L$key_expansion_128 | |
4321 DB 102,15,58,223,200,16 | |
4322 call $L$key_expansion_128 | |
4323 DB 102,15,58,223,200,32 | |
4324 call $L$key_expansion_128 | |
4325 DB 102,15,58,223,200,64 | |
4326 call $L$key_expansion_128 | |
4327 DB 102,15,58,223,200,128 | |
4328 call $L$key_expansion_128 | |
4329 DB 102,15,58,223,200,27 | |
4330 call $L$key_expansion_128 | |
4331 DB 102,15,58,223,200,54 | |
4332 call $L$key_expansion_128 | |
4333 movups XMMWORD[rax],xmm0 | |
4334 mov DWORD[80+rax],edx | |
4335 xor eax,eax | |
4336 jmp NEAR $L$enc_key_ret | |
4337 | |
4338 ALIGN 16 | |
4339 $L$10rounds_alt: | |
4340 movdqa xmm5,XMMWORD[$L$key_rotate] | |
4341 mov r10d,8 | |
4342 movdqa xmm4,XMMWORD[$L$key_rcon1] | |
4343 movdqa xmm2,xmm0 | |
4344 movdqu XMMWORD[r8],xmm0 | |
4345 jmp NEAR $L$oop_key128 | |
4346 | |
4347 ALIGN 16 | |
4348 $L$oop_key128: | |
4349 DB 102,15,56,0,197 | |
4350 DB 102,15,56,221,196 | |
4351 pslld xmm4,1 | |
4352 lea rax,[16+rax] | |
4353 | |
4354 movdqa xmm3,xmm2 | |
4355 pslldq xmm2,4 | |
4356 pxor xmm3,xmm2 | |
4357 pslldq xmm2,4 | |
4358 pxor xmm3,xmm2 | |
4359 pslldq xmm2,4 | |
4360 pxor xmm2,xmm3 | |
4361 | |
4362 pxor xmm0,xmm2 | |
4363 movdqu XMMWORD[(-16)+rax],xmm0 | |
4364 movdqa xmm2,xmm0 | |
4365 | |
4366 dec r10d | |
4367 jnz NEAR $L$oop_key128 | |
4368 | |
4369 movdqa xmm4,XMMWORD[$L$key_rcon1b] | |
4370 | |
4371 DB 102,15,56,0,197 | |
4372 DB 102,15,56,221,196 | |
4373 pslld xmm4,1 | |
4374 | |
4375 movdqa xmm3,xmm2 | |
4376 pslldq xmm2,4 | |
4377 pxor xmm3,xmm2 | |
4378 pslldq xmm2,4 | |
4379 pxor xmm3,xmm2 | |
4380 pslldq xmm2,4 | |
4381 pxor xmm2,xmm3 | |
4382 | |
4383 pxor xmm0,xmm2 | |
4384 movdqu XMMWORD[rax],xmm0 | |
4385 | |
4386 movdqa xmm2,xmm0 | |
4387 DB 102,15,56,0,197 | |
4388 DB 102,15,56,221,196 | |
4389 | |
4390 movdqa xmm3,xmm2 | |
4391 pslldq xmm2,4 | |
4392 pxor xmm3,xmm2 | |
4393 pslldq xmm2,4 | |
4394 pxor xmm3,xmm2 | |
4395 pslldq xmm2,4 | |
4396 pxor xmm2,xmm3 | |
4397 | |
4398 pxor xmm0,xmm2 | |
4399 movdqu XMMWORD[16+rax],xmm0 | |
4400 | |
4401 mov DWORD[96+rax],edx | |
4402 xor eax,eax | |
4403 jmp NEAR $L$enc_key_ret | |
4404 | |
4405 ALIGN 16 | |
4406 $L$12rounds: | |
4407 movq xmm2,QWORD[16+rcx] | |
4408 mov edx,11 | |
4409 cmp r10d,268435456 | |
4410 je NEAR $L$12rounds_alt | |
4411 | |
4412 movups XMMWORD[r8],xmm0 | |
4413 DB 102,15,58,223,202,1 | |
4414 call $L$key_expansion_192a_cold | |
4415 DB 102,15,58,223,202,2 | |
4416 call $L$key_expansion_192b | |
4417 DB 102,15,58,223,202,4 | |
4418 call $L$key_expansion_192a | |
4419 DB 102,15,58,223,202,8 | |
4420 call $L$key_expansion_192b | |
4421 DB 102,15,58,223,202,16 | |
4422 call $L$key_expansion_192a | |
4423 DB 102,15,58,223,202,32 | |
4424 call $L$key_expansion_192b | |
4425 DB 102,15,58,223,202,64 | |
4426 call $L$key_expansion_192a | |
4427 DB 102,15,58,223,202,128 | |
4428 call $L$key_expansion_192b | |
4429 movups XMMWORD[rax],xmm0 | |
4430 mov DWORD[48+rax],edx | |
4431 xor rax,rax | |
4432 jmp NEAR $L$enc_key_ret | |
4433 | |
4434 ALIGN 16 | |
4435 $L$12rounds_alt: | |
4436 movdqa xmm5,XMMWORD[$L$key_rotate192] | |
4437 movdqa xmm4,XMMWORD[$L$key_rcon1] | |
4438 mov r10d,8 | |
4439 movdqu XMMWORD[r8],xmm0 | |
4440 jmp NEAR $L$oop_key192 | |
4441 | |
4442 ALIGN 16 | |
4443 $L$oop_key192: | |
4444 movq QWORD[rax],xmm2 | |
4445 movdqa xmm1,xmm2 | |
4446 DB 102,15,56,0,213 | |
4447 DB 102,15,56,221,212 | |
4448 pslld xmm4,1 | |
4449 lea rax,[24+rax] | |
4450 | |
4451 movdqa xmm3,xmm0 | |
4452 pslldq xmm0,4 | |
4453 pxor xmm3,xmm0 | |
4454 pslldq xmm0,4 | |
4455 pxor xmm3,xmm0 | |
4456 pslldq xmm0,4 | |
4457 pxor xmm0,xmm3 | |
4458 | |
4459 pshufd xmm3,xmm0,0xff | |
4460 pxor xmm3,xmm1 | |
4461 pslldq xmm1,4 | |
4462 pxor xmm3,xmm1 | |
4463 | |
4464 pxor xmm0,xmm2 | |
4465 pxor xmm2,xmm3 | |
4466 movdqu XMMWORD[(-16)+rax],xmm0 | |
4467 | |
4468 dec r10d | |
4469 jnz NEAR $L$oop_key192 | |
4470 | |
4471 mov DWORD[32+rax],edx | |
4472 xor eax,eax | |
4473 jmp NEAR $L$enc_key_ret | |
4474 | |
4475 ALIGN 16 | |
4476 $L$14rounds: | |
4477 movups xmm2,XMMWORD[16+rcx] | |
4478 mov edx,13 | |
4479 lea rax,[16+rax] | |
4480 cmp r10d,268435456 | |
4481 je NEAR $L$14rounds_alt | |
4482 | |
4483 movups XMMWORD[r8],xmm0 | |
4484 movups XMMWORD[16+r8],xmm2 | |
4485 DB 102,15,58,223,202,1 | |
4486 call $L$key_expansion_256a_cold | |
4487 DB 102,15,58,223,200,1 | |
4488 call $L$key_expansion_256b | |
4489 DB 102,15,58,223,202,2 | |
4490 call $L$key_expansion_256a | |
4491 DB 102,15,58,223,200,2 | |
4492 call $L$key_expansion_256b | |
4493 DB 102,15,58,223,202,4 | |
4494 call $L$key_expansion_256a | |
4495 DB 102,15,58,223,200,4 | |
4496 call $L$key_expansion_256b | |
4497 DB 102,15,58,223,202,8 | |
4498 call $L$key_expansion_256a | |
4499 DB 102,15,58,223,200,8 | |
4500 call $L$key_expansion_256b | |
4501 DB 102,15,58,223,202,16 | |
4502 call $L$key_expansion_256a | |
4503 DB 102,15,58,223,200,16 | |
4504 call $L$key_expansion_256b | |
4505 DB 102,15,58,223,202,32 | |
4506 call $L$key_expansion_256a | |
4507 DB 102,15,58,223,200,32 | |
4508 call $L$key_expansion_256b | |
4509 DB 102,15,58,223,202,64 | |
4510 call $L$key_expansion_256a | |
4511 movups XMMWORD[rax],xmm0 | |
4512 mov DWORD[16+rax],edx | |
4513 xor rax,rax | |
4514 jmp NEAR $L$enc_key_ret | |
4515 | |
4516 ALIGN 16 | |
4517 $L$14rounds_alt: | |
4518 movdqa xmm5,XMMWORD[$L$key_rotate] | |
4519 movdqa xmm4,XMMWORD[$L$key_rcon1] | |
4520 mov r10d,7 | |
4521 movdqu XMMWORD[r8],xmm0 | |
4522 movdqa xmm1,xmm2 | |
4523 movdqu XMMWORD[16+r8],xmm2 | |
4524 jmp NEAR $L$oop_key256 | |
4525 | |
4526 ALIGN 16 | |
4527 $L$oop_key256: | |
4528 DB 102,15,56,0,213 | |
4529 DB 102,15,56,221,212 | |
4530 | |
4531 movdqa xmm3,xmm0 | |
4532 pslldq xmm0,4 | |
4533 pxor xmm3,xmm0 | |
4534 pslldq xmm0,4 | |
4535 pxor xmm3,xmm0 | |
4536 pslldq xmm0,4 | |
4537 pxor xmm0,xmm3 | |
4538 pslld xmm4,1 | |
4539 | |
4540 pxor xmm0,xmm2 | |
4541 movdqu XMMWORD[rax],xmm0 | |
4542 | |
4543 dec r10d | |
4544 jz NEAR $L$done_key256 | |
4545 | |
4546 pshufd xmm2,xmm0,0xff | |
4547 pxor xmm3,xmm3 | |
4548 DB 102,15,56,221,211 | |
4549 | |
4550 movdqa xmm3,xmm1 | |
4551 pslldq xmm1,4 | |
4552 pxor xmm3,xmm1 | |
4553 pslldq xmm1,4 | |
4554 pxor xmm3,xmm1 | |
4555 pslldq xmm1,4 | |
4556 pxor xmm1,xmm3 | |
4557 | |
4558 pxor xmm2,xmm1 | |
4559 movdqu XMMWORD[16+rax],xmm2 | |
4560 lea rax,[32+rax] | |
4561 movdqa xmm1,xmm2 | |
4562 | |
4563 jmp NEAR $L$oop_key256 | |
4564 | |
4565 $L$done_key256: | |
4566 mov DWORD[16+rax],edx | |
4567 xor eax,eax | |
4568 jmp NEAR $L$enc_key_ret | |
4569 | |
4570 ALIGN 16 | |
4571 $L$bad_keybits: | |
4572 mov rax,-2 | |
4573 $L$enc_key_ret: | |
4574 pxor xmm0,xmm0 | |
4575 pxor xmm1,xmm1 | |
4576 pxor xmm2,xmm2 | |
4577 pxor xmm3,xmm3 | |
4578 pxor xmm4,xmm4 | |
4579 pxor xmm5,xmm5 | |
4580 add rsp,8 | |
4581 DB 0F3h,0C3h ;repret | |
4582 $L$SEH_end_set_encrypt_key: | |
4583 | |
4584 ALIGN 16 | |
4585 $L$key_expansion_128: | |
4586 movups XMMWORD[rax],xmm0 | |
4587 lea rax,[16+rax] | |
4588 $L$key_expansion_128_cold: | |
4589 shufps xmm4,xmm0,16 | |
4590 xorps xmm0,xmm4 | |
4591 shufps xmm4,xmm0,140 | |
4592 xorps xmm0,xmm4 | |
4593 shufps xmm1,xmm1,255 | |
4594 xorps xmm0,xmm1 | |
4595 DB 0F3h,0C3h ;repret | |
4596 | |
4597 ALIGN 16 | |
4598 $L$key_expansion_192a: | |
4599 movups XMMWORD[rax],xmm0 | |
4600 lea rax,[16+rax] | |
4601 $L$key_expansion_192a_cold: | |
4602 movaps xmm5,xmm2 | |
4603 $L$key_expansion_192b_warm: | |
4604 shufps xmm4,xmm0,16 | |
4605 movdqa xmm3,xmm2 | |
4606 xorps xmm0,xmm4 | |
4607 shufps xmm4,xmm0,140 | |
4608 pslldq xmm3,4 | |
4609 xorps xmm0,xmm4 | |
4610 pshufd xmm1,xmm1,85 | |
4611 pxor xmm2,xmm3 | |
4612 pxor xmm0,xmm1 | |
4613 pshufd xmm3,xmm0,255 | |
4614 pxor xmm2,xmm3 | |
4615 DB 0F3h,0C3h ;repret | |
4616 | |
4617 ALIGN 16 | |
4618 $L$key_expansion_192b: | |
4619 movaps xmm3,xmm0 | |
4620 shufps xmm5,xmm0,68 | |
4621 movups XMMWORD[rax],xmm5 | |
4622 shufps xmm3,xmm2,78 | |
4623 movups XMMWORD[16+rax],xmm3 | |
4624 lea rax,[32+rax] | |
4625 jmp NEAR $L$key_expansion_192b_warm | |
4626 | |
4627 ALIGN 16 | |
4628 $L$key_expansion_256a: | |
4629 movups XMMWORD[rax],xmm2 | |
4630 lea rax,[16+rax] | |
4631 $L$key_expansion_256a_cold: | |
4632 shufps xmm4,xmm0,16 | |
4633 xorps xmm0,xmm4 | |
4634 shufps xmm4,xmm0,140 | |
4635 xorps xmm0,xmm4 | |
4636 shufps xmm1,xmm1,255 | |
4637 xorps xmm0,xmm1 | |
4638 DB 0F3h,0C3h ;repret | |
4639 | |
4640 ALIGN 16 | |
4641 $L$key_expansion_256b: | |
4642 movups XMMWORD[rax],xmm0 | |
4643 lea rax,[16+rax] | |
4644 | |
4645 shufps xmm4,xmm2,16 | |
4646 xorps xmm2,xmm4 | |
4647 shufps xmm4,xmm2,140 | |
4648 xorps xmm2,xmm4 | |
4649 shufps xmm1,xmm1,170 | |
4650 xorps xmm2,xmm1 | |
4651 DB 0F3h,0C3h ;repret | |
4652 | |
4653 | |
4654 ALIGN 64 | |
4655 $L$bswap_mask: | |
4656 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 | |
4657 $L$increment32: | |
4658 DD 6,6,6,0 | |
4659 $L$increment64: | |
4660 DD 1,0,0,0 | |
4661 $L$xts_magic: | |
4662 DD 0x87,0,1,0 | |
4663 $L$increment1: | |
4664 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 | |
4665 $L$key_rotate: | |
4666 DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d | |
4667 $L$key_rotate192: | |
4668 DD 0x04070605,0x04070605,0x04070605,0x04070605 | |
4669 $L$key_rcon1: | |
4670 DD 1,1,1,1 | |
4671 $L$key_rcon1b: | |
4672 DD 0x1b,0x1b,0x1b,0x1b | |
4673 | |
4674 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 | |
4675 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 | |
4676 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 | |
4677 DB 115,108,46,111,114,103,62,0 | |
4678 ALIGN 64 | |
4679 EXTERN __imp_RtlVirtualUnwind | |
4680 | |
4681 ALIGN 16 | |
4682 ecb_ccm64_se_handler: | |
4683 push rsi | |
4684 push rdi | |
4685 push rbx | |
4686 push rbp | |
4687 push r12 | |
4688 push r13 | |
4689 push r14 | |
4690 push r15 | |
4691 pushfq | |
4692 sub rsp,64 | |
4693 | |
4694 mov rax,QWORD[120+r8] | |
4695 mov rbx,QWORD[248+r8] | |
4696 | |
4697 mov rsi,QWORD[8+r9] | |
4698 mov r11,QWORD[56+r9] | |
4699 | |
4700 mov r10d,DWORD[r11] | |
4701 lea r10,[r10*1+rsi] | |
4702 cmp rbx,r10 | |
4703 jb NEAR $L$common_seh_tail | |
4704 | |
4705 mov rax,QWORD[152+r8] | |
4706 | |
4707 mov r10d,DWORD[4+r11] | |
4708 lea r10,[r10*1+rsi] | |
4709 cmp rbx,r10 | |
4710 jae NEAR $L$common_seh_tail | |
4711 | |
4712 lea rsi,[rax] | |
4713 lea rdi,[512+r8] | |
4714 mov ecx,8 | |
4715 DD 0xa548f3fc | |
4716 lea rax,[88+rax] | |
4717 | |
4718 jmp NEAR $L$common_seh_tail | |
4719 | |
4720 | |
4721 | |
4722 ALIGN 16 | |
4723 ctr_xts_se_handler: | |
4724 push rsi | |
4725 push rdi | |
4726 push rbx | |
4727 push rbp | |
4728 push r12 | |
4729 push r13 | |
4730 push r14 | |
4731 push r15 | |
4732 pushfq | |
4733 sub rsp,64 | |
4734 | |
4735 mov rax,QWORD[120+r8] | |
4736 mov rbx,QWORD[248+r8] | |
4737 | |
4738 mov rsi,QWORD[8+r9] | |
4739 mov r11,QWORD[56+r9] | |
4740 | |
4741 mov r10d,DWORD[r11] | |
4742 lea r10,[r10*1+rsi] | |
4743 cmp rbx,r10 | |
4744 jb NEAR $L$common_seh_tail | |
4745 | |
4746 mov rax,QWORD[152+r8] | |
4747 | |
4748 mov r10d,DWORD[4+r11] | |
4749 lea r10,[r10*1+rsi] | |
4750 cmp rbx,r10 | |
4751 jae NEAR $L$common_seh_tail | |
4752 | |
4753 mov rax,QWORD[208+r8] | |
4754 | |
4755 lea rsi,[((-168))+rax] | |
4756 lea rdi,[512+r8] | |
4757 mov ecx,20 | |
4758 DD 0xa548f3fc | |
4759 | |
4760 mov rbp,QWORD[((-8))+rax] | |
4761 mov QWORD[160+r8],rbp | |
4762 jmp NEAR $L$common_seh_tail | |
4763 | |
4764 | |
4765 | |
4766 ALIGN 16 | |
4767 ocb_se_handler: | |
4768 push rsi | |
4769 push rdi | |
4770 push rbx | |
4771 push rbp | |
4772 push r12 | |
4773 push r13 | |
4774 push r14 | |
4775 push r15 | |
4776 pushfq | |
4777 sub rsp,64 | |
4778 | |
4779 mov rax,QWORD[120+r8] | |
4780 mov rbx,QWORD[248+r8] | |
4781 | |
4782 mov rsi,QWORD[8+r9] | |
4783 mov r11,QWORD[56+r9] | |
4784 | |
4785 mov r10d,DWORD[r11] | |
4786 lea r10,[r10*1+rsi] | |
4787 cmp rbx,r10 | |
4788 jb NEAR $L$common_seh_tail | |
4789 | |
4790 mov r10d,DWORD[4+r11] | |
4791 lea r10,[r10*1+rsi] | |
4792 cmp rbx,r10 | |
4793 jae NEAR $L$common_seh_tail | |
4794 | |
4795 mov r10d,DWORD[8+r11] | |
4796 lea r10,[r10*1+rsi] | |
4797 cmp rbx,r10 | |
4798 jae NEAR $L$ocb_no_xmm | |
4799 | |
4800 mov rax,QWORD[152+r8] | |
4801 | |
4802 lea rsi,[rax] | |
4803 lea rdi,[512+r8] | |
4804 mov ecx,20 | |
4805 DD 0xa548f3fc | |
4806 lea rax,[((160+40))+rax] | |
4807 | |
4808 $L$ocb_no_xmm: | |
4809 mov rbx,QWORD[((-8))+rax] | |
4810 mov rbp,QWORD[((-16))+rax] | |
4811 mov r12,QWORD[((-24))+rax] | |
4812 mov r13,QWORD[((-32))+rax] | |
4813 mov r14,QWORD[((-40))+rax] | |
4814 | |
4815 mov QWORD[144+r8],rbx | |
4816 mov QWORD[160+r8],rbp | |
4817 mov QWORD[216+r8],r12 | |
4818 mov QWORD[224+r8],r13 | |
4819 mov QWORD[232+r8],r14 | |
4820 | |
4821 jmp NEAR $L$common_seh_tail | |
4822 | |
4823 | |
4824 ALIGN 16 | |
4825 cbc_se_handler: | |
4826 push rsi | |
4827 push rdi | |
4828 push rbx | |
4829 push rbp | |
4830 push r12 | |
4831 push r13 | |
4832 push r14 | |
4833 push r15 | |
4834 pushfq | |
4835 sub rsp,64 | |
4836 | |
4837 mov rax,QWORD[152+r8] | |
4838 mov rbx,QWORD[248+r8] | |
4839 | |
4840 lea r10,[$L$cbc_decrypt_bulk] | |
4841 cmp rbx,r10 | |
4842 jb NEAR $L$common_seh_tail | |
4843 | |
4844 mov rax,QWORD[120+r8] | |
4845 | |
4846 lea r10,[$L$cbc_decrypt_body] | |
4847 cmp rbx,r10 | |
4848 jb NEAR $L$common_seh_tail | |
4849 | |
4850 mov rax,QWORD[152+r8] | |
4851 | |
4852 lea r10,[$L$cbc_ret] | |
4853 cmp rbx,r10 | |
4854 jae NEAR $L$common_seh_tail | |
4855 | |
4856 lea rsi,[16+rax] | |
4857 lea rdi,[512+r8] | |
4858 mov ecx,20 | |
4859 DD 0xa548f3fc | |
4860 | |
4861 mov rax,QWORD[208+r8] | |
4862 | |
4863 mov rbp,QWORD[((-8))+rax] | |
4864 mov QWORD[160+r8],rbp | |
4865 | |
4866 $L$common_seh_tail: | |
4867 mov rdi,QWORD[8+rax] | |
4868 mov rsi,QWORD[16+rax] | |
4869 mov QWORD[152+r8],rax | |
4870 mov QWORD[168+r8],rsi | |
4871 mov QWORD[176+r8],rdi | |
4872 | |
4873 mov rdi,QWORD[40+r9] | |
4874 mov rsi,r8 | |
4875 mov ecx,154 | |
4876 DD 0xa548f3fc | |
4877 | |
4878 mov rsi,r9 | |
4879 xor rcx,rcx | |
4880 mov rdx,QWORD[8+rsi] | |
4881 mov r8,QWORD[rsi] | |
4882 mov r9,QWORD[16+rsi] | |
4883 mov r10,QWORD[40+rsi] | |
4884 lea r11,[56+rsi] | |
4885 lea r12,[24+rsi] | |
4886 mov QWORD[32+rsp],r10 | |
4887 mov QWORD[40+rsp],r11 | |
4888 mov QWORD[48+rsp],r12 | |
4889 mov QWORD[56+rsp],rcx | |
4890 call QWORD[__imp_RtlVirtualUnwind] | |
4891 | |
4892 mov eax,1 | |
4893 add rsp,64 | |
4894 popfq | |
4895 pop r15 | |
4896 pop r14 | |
4897 pop r13 | |
4898 pop r12 | |
4899 pop rbp | |
4900 pop rbx | |
4901 pop rdi | |
4902 pop rsi | |
4903 DB 0F3h,0C3h ;repret | |
4904 | |
4905 | |
4906 section .pdata rdata align=4 | |
4907 ALIGN 4 | |
4908 DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase | |
4909 DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase | |
4910 DD $L$SEH_info_ecb wrt ..imagebase | |
4911 | |
4912 DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase | |
4913 DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase | |
4914 DD $L$SEH_info_ccm64_enc wrt ..imagebase | |
4915 | |
4916 DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase | |
4917 DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase | |
4918 DD $L$SEH_info_ccm64_dec wrt ..imagebase | |
4919 | |
4920 DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase | |
4921 DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase | |
4922 DD $L$SEH_info_ctr32 wrt ..imagebase | |
4923 | |
4924 DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase | |
4925 DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase | |
4926 DD $L$SEH_info_xts_enc wrt ..imagebase | |
4927 | |
4928 DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase | |
4929 DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase | |
4930 DD $L$SEH_info_xts_dec wrt ..imagebase | |
4931 | |
4932 DD $L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase | |
4933 DD $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase | |
4934 DD $L$SEH_info_ocb_enc wrt ..imagebase | |
4935 | |
4936 DD $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase | |
4937 DD $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase | |
4938 DD $L$SEH_info_ocb_dec wrt ..imagebase | |
4939 DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase | |
4940 DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase | |
4941 DD $L$SEH_info_cbc wrt ..imagebase | |
4942 | |
4943 DD aesni_set_decrypt_key wrt ..imagebase | |
4944 DD $L$SEH_end_set_decrypt_key wrt ..imagebase | |
4945 DD $L$SEH_info_key wrt ..imagebase | |
4946 | |
4947 DD aesni_set_encrypt_key wrt ..imagebase | |
4948 DD $L$SEH_end_set_encrypt_key wrt ..imagebase | |
4949 DD $L$SEH_info_key wrt ..imagebase | |
4950 section .xdata rdata align=8 | |
4951 ALIGN 8 | |
4952 $L$SEH_info_ecb: | |
4953 DB 9,0,0,0 | |
4954 DD ecb_ccm64_se_handler wrt ..imagebase | |
4955 DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase | |
4956 $L$SEH_info_ccm64_enc: | |
4957 DB 9,0,0,0 | |
4958 DD ecb_ccm64_se_handler wrt ..imagebase | |
4959 DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imageba
se | |
4960 $L$SEH_info_ccm64_dec: | |
4961 DB 9,0,0,0 | |
4962 DD ecb_ccm64_se_handler wrt ..imagebase | |
4963 DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imageba
se | |
4964 $L$SEH_info_ctr32: | |
4965 DB 9,0,0,0 | |
4966 DD ctr_xts_se_handler wrt ..imagebase | |
4967 DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase | |
4968 $L$SEH_info_xts_enc: | |
4969 DB 9,0,0,0 | |
4970 DD ctr_xts_se_handler wrt ..imagebase | |
4971 DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imageb
ase | |
4972 $L$SEH_info_xts_dec: | |
4973 DB 9,0,0,0 | |
4974 DD ctr_xts_se_handler wrt ..imagebase | |
4975 DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imageb
ase | |
4976 $L$SEH_info_ocb_enc: | |
4977 DB 9,0,0,0 | |
4978 DD ocb_se_handler wrt ..imagebase | |
4979 DD $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imageb
ase | |
4980 DD $L$ocb_enc_pop wrt ..imagebase | |
4981 DD 0 | |
4982 $L$SEH_info_ocb_dec: | |
4983 DB 9,0,0,0 | |
4984 DD ocb_se_handler wrt ..imagebase | |
4985 DD $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imageb
ase | |
4986 DD $L$ocb_dec_pop wrt ..imagebase | |
4987 DD 0 | |
4988 $L$SEH_info_cbc: | |
4989 DB 9,0,0,0 | |
4990 DD cbc_se_handler wrt ..imagebase | |
4991 $L$SEH_info_key: | |
4992 DB 0x01,0x04,0x01,0x00 | |
4993 DB 0x04,0x02,0x00,0x00 | |
OLD | NEW |