]>
Commit | Line | Data |
---|---|---|
147f34b5 CZ |
1 | ; WARNING: do not edit!\r |
2 | ; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl\r | |
3 | ;\r | |
4 | ; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r | |
5 | ;\r | |
6 | ; Licensed under the OpenSSL license (the "License"). You may not use\r | |
7 | ; this file except in compliance with the License. You can obtain a copy\r | |
8 | ; in the file LICENSE in the source distribution or at\r | |
9 | ; https://www.openssl.org/source/license.html\r | |
10 | \r | |
11 | default rel\r | |
12 | %define XMMWORD\r | |
13 | %define YMMWORD\r | |
14 | %define ZMMWORD\r | |
15 | section .text code align=64\r | |
16 | \r | |
17 | \r | |
18 | \r | |
19 | \r | |
20 | \r | |
21 | \r | |
22 | \r | |
23 | \r | |
24 | \r | |
25 | \r | |
26 | \r | |
27 | \r | |
28 | \r | |
29 | \r | |
30 | \r | |
31 | \r | |
32 | \r | |
33 | \r | |
34 | ALIGN 16\r | |
35 | _vpaes_encrypt_core:\r | |
36 | \r | |
37 | mov r9,rdx\r | |
38 | mov r11,16\r | |
39 | mov eax,DWORD[240+rdx]\r | |
40 | movdqa xmm1,xmm9\r | |
41 | movdqa xmm2,XMMWORD[$L$k_ipt]\r | |
42 | pandn xmm1,xmm0\r | |
43 | movdqu xmm5,XMMWORD[r9]\r | |
44 | psrld xmm1,4\r | |
45 | pand xmm0,xmm9\r | |
46 | DB 102,15,56,0,208\r | |
47 | movdqa xmm0,XMMWORD[(($L$k_ipt+16))]\r | |
48 | DB 102,15,56,0,193\r | |
49 | pxor xmm2,xmm5\r | |
50 | add r9,16\r | |
51 | pxor xmm0,xmm2\r | |
52 | lea r10,[$L$k_mc_backward]\r | |
53 | jmp NEAR $L$enc_entry\r | |
54 | \r | |
55 | ALIGN 16\r | |
56 | $L$enc_loop:\r | |
57 | \r | |
58 | movdqa xmm4,xmm13\r | |
59 | movdqa xmm0,xmm12\r | |
60 | DB 102,15,56,0,226\r | |
61 | DB 102,15,56,0,195\r | |
62 | pxor xmm4,xmm5\r | |
63 | movdqa xmm5,xmm15\r | |
64 | pxor xmm0,xmm4\r | |
65 | movdqa xmm1,XMMWORD[((-64))+r10*1+r11]\r | |
66 | DB 102,15,56,0,234\r | |
67 | movdqa xmm4,XMMWORD[r10*1+r11]\r | |
68 | movdqa xmm2,xmm14\r | |
69 | DB 102,15,56,0,211\r | |
70 | movdqa xmm3,xmm0\r | |
71 | pxor xmm2,xmm5\r | |
72 | DB 102,15,56,0,193\r | |
73 | add r9,16\r | |
74 | pxor xmm0,xmm2\r | |
75 | DB 102,15,56,0,220\r | |
76 | add r11,16\r | |
77 | pxor xmm3,xmm0\r | |
78 | DB 102,15,56,0,193\r | |
79 | and r11,0x30\r | |
80 | sub rax,1\r | |
81 | pxor xmm0,xmm3\r | |
82 | \r | |
83 | $L$enc_entry:\r | |
84 | \r | |
85 | movdqa xmm1,xmm9\r | |
86 | movdqa xmm5,xmm11\r | |
87 | pandn xmm1,xmm0\r | |
88 | psrld xmm1,4\r | |
89 | pand xmm0,xmm9\r | |
90 | DB 102,15,56,0,232\r | |
91 | movdqa xmm3,xmm10\r | |
92 | pxor xmm0,xmm1\r | |
93 | DB 102,15,56,0,217\r | |
94 | movdqa xmm4,xmm10\r | |
95 | pxor xmm3,xmm5\r | |
96 | DB 102,15,56,0,224\r | |
97 | movdqa xmm2,xmm10\r | |
98 | pxor xmm4,xmm5\r | |
99 | DB 102,15,56,0,211\r | |
100 | movdqa xmm3,xmm10\r | |
101 | pxor xmm2,xmm0\r | |
102 | DB 102,15,56,0,220\r | |
103 | movdqu xmm5,XMMWORD[r9]\r | |
104 | pxor xmm3,xmm1\r | |
105 | jnz NEAR $L$enc_loop\r | |
106 | \r | |
107 | \r | |
108 | movdqa xmm4,XMMWORD[((-96))+r10]\r | |
109 | movdqa xmm0,XMMWORD[((-80))+r10]\r | |
110 | DB 102,15,56,0,226\r | |
111 | pxor xmm4,xmm5\r | |
112 | DB 102,15,56,0,195\r | |
113 | movdqa xmm1,XMMWORD[64+r10*1+r11]\r | |
114 | pxor xmm0,xmm4\r | |
115 | DB 102,15,56,0,193\r | |
116 | DB 0F3h,0C3h ;repret\r | |
117 | \r | |
118 | \r | |
119 | \r | |
120 | \r | |
121 | \r | |
122 | \r | |
123 | \r | |
124 | \r | |
125 | \r | |
126 | ALIGN 16\r | |
127 | _vpaes_decrypt_core:\r | |
128 | \r | |
129 | mov r9,rdx\r | |
130 | mov eax,DWORD[240+rdx]\r | |
131 | movdqa xmm1,xmm9\r | |
132 | movdqa xmm2,XMMWORD[$L$k_dipt]\r | |
133 | pandn xmm1,xmm0\r | |
134 | mov r11,rax\r | |
135 | psrld xmm1,4\r | |
136 | movdqu xmm5,XMMWORD[r9]\r | |
137 | shl r11,4\r | |
138 | pand xmm0,xmm9\r | |
139 | DB 102,15,56,0,208\r | |
140 | movdqa xmm0,XMMWORD[(($L$k_dipt+16))]\r | |
141 | xor r11,0x30\r | |
142 | lea r10,[$L$k_dsbd]\r | |
143 | DB 102,15,56,0,193\r | |
144 | and r11,0x30\r | |
145 | pxor xmm2,xmm5\r | |
146 | movdqa xmm5,XMMWORD[(($L$k_mc_forward+48))]\r | |
147 | pxor xmm0,xmm2\r | |
148 | add r9,16\r | |
149 | add r11,r10\r | |
150 | jmp NEAR $L$dec_entry\r | |
151 | \r | |
152 | ALIGN 16\r | |
153 | $L$dec_loop:\r | |
154 | \r | |
155 | \r | |
156 | \r | |
157 | movdqa xmm4,XMMWORD[((-32))+r10]\r | |
158 | movdqa xmm1,XMMWORD[((-16))+r10]\r | |
159 | DB 102,15,56,0,226\r | |
160 | DB 102,15,56,0,203\r | |
161 | pxor xmm0,xmm4\r | |
162 | movdqa xmm4,XMMWORD[r10]\r | |
163 | pxor xmm0,xmm1\r | |
164 | movdqa xmm1,XMMWORD[16+r10]\r | |
165 | \r | |
166 | DB 102,15,56,0,226\r | |
167 | DB 102,15,56,0,197\r | |
168 | DB 102,15,56,0,203\r | |
169 | pxor xmm0,xmm4\r | |
170 | movdqa xmm4,XMMWORD[32+r10]\r | |
171 | pxor xmm0,xmm1\r | |
172 | movdqa xmm1,XMMWORD[48+r10]\r | |
173 | \r | |
174 | DB 102,15,56,0,226\r | |
175 | DB 102,15,56,0,197\r | |
176 | DB 102,15,56,0,203\r | |
177 | pxor xmm0,xmm4\r | |
178 | movdqa xmm4,XMMWORD[64+r10]\r | |
179 | pxor xmm0,xmm1\r | |
180 | movdqa xmm1,XMMWORD[80+r10]\r | |
181 | \r | |
182 | DB 102,15,56,0,226\r | |
183 | DB 102,15,56,0,197\r | |
184 | DB 102,15,56,0,203\r | |
185 | pxor xmm0,xmm4\r | |
186 | add r9,16\r | |
187 | DB 102,15,58,15,237,12\r | |
188 | pxor xmm0,xmm1\r | |
189 | sub rax,1\r | |
190 | \r | |
191 | $L$dec_entry:\r | |
192 | \r | |
193 | movdqa xmm1,xmm9\r | |
194 | pandn xmm1,xmm0\r | |
195 | movdqa xmm2,xmm11\r | |
196 | psrld xmm1,4\r | |
197 | pand xmm0,xmm9\r | |
198 | DB 102,15,56,0,208\r | |
199 | movdqa xmm3,xmm10\r | |
200 | pxor xmm0,xmm1\r | |
201 | DB 102,15,56,0,217\r | |
202 | movdqa xmm4,xmm10\r | |
203 | pxor xmm3,xmm2\r | |
204 | DB 102,15,56,0,224\r | |
205 | pxor xmm4,xmm2\r | |
206 | movdqa xmm2,xmm10\r | |
207 | DB 102,15,56,0,211\r | |
208 | movdqa xmm3,xmm10\r | |
209 | pxor xmm2,xmm0\r | |
210 | DB 102,15,56,0,220\r | |
211 | movdqu xmm0,XMMWORD[r9]\r | |
212 | pxor xmm3,xmm1\r | |
213 | jnz NEAR $L$dec_loop\r | |
214 | \r | |
215 | \r | |
216 | movdqa xmm4,XMMWORD[96+r10]\r | |
217 | DB 102,15,56,0,226\r | |
218 | pxor xmm4,xmm0\r | |
219 | movdqa xmm0,XMMWORD[112+r10]\r | |
220 | movdqa xmm2,XMMWORD[((-352))+r11]\r | |
221 | DB 102,15,56,0,195\r | |
222 | pxor xmm0,xmm4\r | |
223 | DB 102,15,56,0,194\r | |
224 | DB 0F3h,0C3h ;repret\r | |
225 | \r | |
226 | \r | |
227 | \r | |
228 | \r | |
229 | \r | |
230 | \r | |
231 | \r | |
232 | \r | |
233 | \r | |
234 | ALIGN 16\r | |
235 | _vpaes_schedule_core:\r | |
236 | \r | |
237 | \r | |
238 | \r | |
239 | \r | |
240 | \r | |
241 | \r | |
242 | call _vpaes_preheat\r | |
243 | movdqa xmm8,XMMWORD[$L$k_rcon]\r | |
244 | movdqu xmm0,XMMWORD[rdi]\r | |
245 | \r | |
246 | \r | |
247 | movdqa xmm3,xmm0\r | |
248 | lea r11,[$L$k_ipt]\r | |
249 | call _vpaes_schedule_transform\r | |
250 | movdqa xmm7,xmm0\r | |
251 | \r | |
252 | lea r10,[$L$k_sr]\r | |
253 | test rcx,rcx\r | |
254 | jnz NEAR $L$schedule_am_decrypting\r | |
255 | \r | |
256 | \r | |
257 | movdqu XMMWORD[rdx],xmm0\r | |
258 | jmp NEAR $L$schedule_go\r | |
259 | \r | |
260 | $L$schedule_am_decrypting:\r | |
261 | \r | |
262 | movdqa xmm1,XMMWORD[r10*1+r8]\r | |
263 | DB 102,15,56,0,217\r | |
264 | movdqu XMMWORD[rdx],xmm3\r | |
265 | xor r8,0x30\r | |
266 | \r | |
267 | $L$schedule_go:\r | |
268 | cmp esi,192\r | |
269 | ja NEAR $L$schedule_256\r | |
270 | je NEAR $L$schedule_192\r | |
271 | \r | |
272 | \r | |
273 | \r | |
274 | \r | |
275 | \r | |
276 | \r | |
277 | \r | |
278 | \r | |
279 | \r | |
280 | \r | |
281 | $L$schedule_128:\r | |
282 | mov esi,10\r | |
283 | \r | |
284 | $L$oop_schedule_128:\r | |
285 | call _vpaes_schedule_round\r | |
286 | dec rsi\r | |
287 | jz NEAR $L$schedule_mangle_last\r | |
288 | call _vpaes_schedule_mangle\r | |
289 | jmp NEAR $L$oop_schedule_128\r | |
290 | \r | |
291 | \r | |
292 | \r | |
293 | \r | |
294 | \r | |
295 | \r | |
296 | \r | |
297 | \r | |
298 | \r | |
299 | \r | |
300 | \r | |
301 | \r | |
302 | \r | |
303 | \r | |
304 | \r | |
305 | \r | |
306 | ALIGN 16\r | |
307 | $L$schedule_192:\r | |
308 | movdqu xmm0,XMMWORD[8+rdi]\r | |
309 | call _vpaes_schedule_transform\r | |
310 | movdqa xmm6,xmm0\r | |
311 | pxor xmm4,xmm4\r | |
312 | movhlps xmm6,xmm4\r | |
313 | mov esi,4\r | |
314 | \r | |
315 | $L$oop_schedule_192:\r | |
316 | call _vpaes_schedule_round\r | |
317 | DB 102,15,58,15,198,8\r | |
318 | call _vpaes_schedule_mangle\r | |
319 | call _vpaes_schedule_192_smear\r | |
320 | call _vpaes_schedule_mangle\r | |
321 | call _vpaes_schedule_round\r | |
322 | dec rsi\r | |
323 | jz NEAR $L$schedule_mangle_last\r | |
324 | call _vpaes_schedule_mangle\r | |
325 | call _vpaes_schedule_192_smear\r | |
326 | jmp NEAR $L$oop_schedule_192\r | |
327 | \r | |
328 | \r | |
329 | \r | |
330 | \r | |
331 | \r | |
332 | \r | |
333 | \r | |
334 | \r | |
335 | \r | |
336 | \r | |
337 | \r | |
338 | ALIGN 16\r | |
339 | $L$schedule_256:\r | |
340 | movdqu xmm0,XMMWORD[16+rdi]\r | |
341 | call _vpaes_schedule_transform\r | |
342 | mov esi,7\r | |
343 | \r | |
344 | $L$oop_schedule_256:\r | |
345 | call _vpaes_schedule_mangle\r | |
346 | movdqa xmm6,xmm0\r | |
347 | \r | |
348 | \r | |
349 | call _vpaes_schedule_round\r | |
350 | dec rsi\r | |
351 | jz NEAR $L$schedule_mangle_last\r | |
352 | call _vpaes_schedule_mangle\r | |
353 | \r | |
354 | \r | |
355 | pshufd xmm0,xmm0,0xFF\r | |
356 | movdqa xmm5,xmm7\r | |
357 | movdqa xmm7,xmm6\r | |
358 | call _vpaes_schedule_low_round\r | |
359 | movdqa xmm7,xmm5\r | |
360 | \r | |
361 | jmp NEAR $L$oop_schedule_256\r | |
362 | \r | |
363 | \r | |
364 | \r | |
365 | \r | |
366 | \r | |
367 | \r | |
368 | \r | |
369 | \r | |
370 | \r | |
371 | \r | |
372 | \r | |
373 | \r | |
374 | ALIGN 16\r | |
375 | $L$schedule_mangle_last:\r | |
376 | \r | |
377 | lea r11,[$L$k_deskew]\r | |
378 | test rcx,rcx\r | |
379 | jnz NEAR $L$schedule_mangle_last_dec\r | |
380 | \r | |
381 | \r | |
382 | movdqa xmm1,XMMWORD[r10*1+r8]\r | |
383 | DB 102,15,56,0,193\r | |
384 | lea r11,[$L$k_opt]\r | |
385 | add rdx,32\r | |
386 | \r | |
387 | $L$schedule_mangle_last_dec:\r | |
388 | add rdx,-16\r | |
389 | pxor xmm0,XMMWORD[$L$k_s63]\r | |
390 | call _vpaes_schedule_transform\r | |
391 | movdqu XMMWORD[rdx],xmm0\r | |
392 | \r | |
393 | \r | |
394 | pxor xmm0,xmm0\r | |
395 | pxor xmm1,xmm1\r | |
396 | pxor xmm2,xmm2\r | |
397 | pxor xmm3,xmm3\r | |
398 | pxor xmm4,xmm4\r | |
399 | pxor xmm5,xmm5\r | |
400 | pxor xmm6,xmm6\r | |
401 | pxor xmm7,xmm7\r | |
402 | DB 0F3h,0C3h ;repret\r | |
403 | \r | |
404 | \r | |
405 | \r | |
406 | \r | |
407 | \r | |
408 | \r | |
409 | \r | |
410 | \r | |
411 | \r | |
412 | \r | |
413 | \r | |
414 | \r | |
415 | \r | |
416 | \r | |
417 | \r | |
418 | \r | |
419 | \r | |
420 | \r | |
421 | ALIGN 16\r | |
422 | _vpaes_schedule_192_smear:\r | |
423 | \r | |
424 | pshufd xmm1,xmm6,0x80\r | |
425 | pshufd xmm0,xmm7,0xFE\r | |
426 | pxor xmm6,xmm1\r | |
427 | pxor xmm1,xmm1\r | |
428 | pxor xmm6,xmm0\r | |
429 | movdqa xmm0,xmm6\r | |
430 | movhlps xmm6,xmm1\r | |
431 | DB 0F3h,0C3h ;repret\r | |
432 | \r | |
433 | \r | |
434 | \r | |
435 | \r | |
436 | \r | |
437 | \r | |
438 | \r | |
439 | \r | |
440 | \r | |
441 | \r | |
442 | \r | |
443 | \r | |
444 | \r | |
445 | \r | |
446 | \r | |
447 | \r | |
448 | \r | |
449 | \r | |
450 | \r | |
451 | \r | |
452 | \r | |
453 | \r | |
454 | ALIGN 16\r | |
455 | _vpaes_schedule_round:\r | |
456 | \r | |
457 | \r | |
458 | pxor xmm1,xmm1\r | |
459 | DB 102,65,15,58,15,200,15\r | |
460 | DB 102,69,15,58,15,192,15\r | |
461 | pxor xmm7,xmm1\r | |
462 | \r | |
463 | \r | |
464 | pshufd xmm0,xmm0,0xFF\r | |
465 | DB 102,15,58,15,192,1\r | |
466 | \r | |
467 | \r | |
468 | \r | |
469 | \r | |
470 | _vpaes_schedule_low_round:\r | |
471 | \r | |
472 | movdqa xmm1,xmm7\r | |
473 | pslldq xmm7,4\r | |
474 | pxor xmm7,xmm1\r | |
475 | movdqa xmm1,xmm7\r | |
476 | pslldq xmm7,8\r | |
477 | pxor xmm7,xmm1\r | |
478 | pxor xmm7,XMMWORD[$L$k_s63]\r | |
479 | \r | |
480 | \r | |
481 | movdqa xmm1,xmm9\r | |
482 | pandn xmm1,xmm0\r | |
483 | psrld xmm1,4\r | |
484 | pand xmm0,xmm9\r | |
485 | movdqa xmm2,xmm11\r | |
486 | DB 102,15,56,0,208\r | |
487 | pxor xmm0,xmm1\r | |
488 | movdqa xmm3,xmm10\r | |
489 | DB 102,15,56,0,217\r | |
490 | pxor xmm3,xmm2\r | |
491 | movdqa xmm4,xmm10\r | |
492 | DB 102,15,56,0,224\r | |
493 | pxor xmm4,xmm2\r | |
494 | movdqa xmm2,xmm10\r | |
495 | DB 102,15,56,0,211\r | |
496 | pxor xmm2,xmm0\r | |
497 | movdqa xmm3,xmm10\r | |
498 | DB 102,15,56,0,220\r | |
499 | pxor xmm3,xmm1\r | |
500 | movdqa xmm4,xmm13\r | |
501 | DB 102,15,56,0,226\r | |
502 | movdqa xmm0,xmm12\r | |
503 | DB 102,15,56,0,195\r | |
504 | pxor xmm0,xmm4\r | |
505 | \r | |
506 | \r | |
507 | pxor xmm0,xmm7\r | |
508 | movdqa xmm7,xmm0\r | |
509 | DB 0F3h,0C3h ;repret\r | |
510 | \r | |
511 | \r | |
512 | \r | |
513 | \r | |
514 | \r | |
515 | \r | |
516 | \r | |
517 | \r | |
518 | \r | |
519 | \r | |
520 | \r | |
521 | \r | |
522 | \r | |
523 | ALIGN 16\r | |
524 | _vpaes_schedule_transform:\r | |
525 | \r | |
526 | movdqa xmm1,xmm9\r | |
527 | pandn xmm1,xmm0\r | |
528 | psrld xmm1,4\r | |
529 | pand xmm0,xmm9\r | |
530 | movdqa xmm2,XMMWORD[r11]\r | |
531 | DB 102,15,56,0,208\r | |
532 | movdqa xmm0,XMMWORD[16+r11]\r | |
533 | DB 102,15,56,0,193\r | |
534 | pxor xmm0,xmm2\r | |
535 | DB 0F3h,0C3h ;repret\r | |
536 | \r | |
537 | \r | |
538 | \r | |
539 | \r | |
540 | \r | |
541 | \r | |
542 | \r | |
543 | \r | |
544 | \r | |
545 | \r | |
546 | \r | |
547 | \r | |
548 | \r | |
549 | \r | |
550 | \r | |
551 | \r | |
552 | \r | |
553 | \r | |
554 | \r | |
555 | \r | |
556 | \r | |
557 | \r | |
558 | \r | |
559 | \r | |
560 | \r | |
561 | \r | |
562 | \r | |
563 | ALIGN 16\r | |
564 | _vpaes_schedule_mangle:\r | |
565 | \r | |
566 | movdqa xmm4,xmm0\r | |
567 | movdqa xmm5,XMMWORD[$L$k_mc_forward]\r | |
568 | test rcx,rcx\r | |
569 | jnz NEAR $L$schedule_mangle_dec\r | |
570 | \r | |
571 | \r | |
572 | add rdx,16\r | |
573 | pxor xmm4,XMMWORD[$L$k_s63]\r | |
574 | DB 102,15,56,0,229\r | |
575 | movdqa xmm3,xmm4\r | |
576 | DB 102,15,56,0,229\r | |
577 | pxor xmm3,xmm4\r | |
578 | DB 102,15,56,0,229\r | |
579 | pxor xmm3,xmm4\r | |
580 | \r | |
581 | jmp NEAR $L$schedule_mangle_both\r | |
582 | ALIGN 16\r | |
583 | $L$schedule_mangle_dec:\r | |
584 | \r | |
585 | lea r11,[$L$k_dksd]\r | |
586 | movdqa xmm1,xmm9\r | |
587 | pandn xmm1,xmm4\r | |
588 | psrld xmm1,4\r | |
589 | pand xmm4,xmm9\r | |
590 | \r | |
591 | movdqa xmm2,XMMWORD[r11]\r | |
592 | DB 102,15,56,0,212\r | |
593 | movdqa xmm3,XMMWORD[16+r11]\r | |
594 | DB 102,15,56,0,217\r | |
595 | pxor xmm3,xmm2\r | |
596 | DB 102,15,56,0,221\r | |
597 | \r | |
598 | movdqa xmm2,XMMWORD[32+r11]\r | |
599 | DB 102,15,56,0,212\r | |
600 | pxor xmm2,xmm3\r | |
601 | movdqa xmm3,XMMWORD[48+r11]\r | |
602 | DB 102,15,56,0,217\r | |
603 | pxor xmm3,xmm2\r | |
604 | DB 102,15,56,0,221\r | |
605 | \r | |
606 | movdqa xmm2,XMMWORD[64+r11]\r | |
607 | DB 102,15,56,0,212\r | |
608 | pxor xmm2,xmm3\r | |
609 | movdqa xmm3,XMMWORD[80+r11]\r | |
610 | DB 102,15,56,0,217\r | |
611 | pxor xmm3,xmm2\r | |
612 | DB 102,15,56,0,221\r | |
613 | \r | |
614 | movdqa xmm2,XMMWORD[96+r11]\r | |
615 | DB 102,15,56,0,212\r | |
616 | pxor xmm2,xmm3\r | |
617 | movdqa xmm3,XMMWORD[112+r11]\r | |
618 | DB 102,15,56,0,217\r | |
619 | pxor xmm3,xmm2\r | |
620 | \r | |
621 | add rdx,-16\r | |
622 | \r | |
623 | $L$schedule_mangle_both:\r | |
624 | movdqa xmm1,XMMWORD[r10*1+r8]\r | |
625 | DB 102,15,56,0,217\r | |
626 | add r8,-16\r | |
627 | and r8,0x30\r | |
628 | movdqu XMMWORD[rdx],xmm3\r | |
629 | DB 0F3h,0C3h ;repret\r | |
630 | \r | |
631 | \r | |
632 | \r | |
633 | \r | |
634 | \r | |
635 | \r | |
636 | global vpaes_set_encrypt_key\r | |
637 | \r | |
638 | ALIGN 16\r | |
639 | vpaes_set_encrypt_key:\r | |
640 | mov QWORD[8+rsp],rdi ;WIN64 prologue\r | |
641 | mov QWORD[16+rsp],rsi\r | |
642 | mov rax,rsp\r | |
643 | $L$SEH_begin_vpaes_set_encrypt_key:\r | |
644 | mov rdi,rcx\r | |
645 | mov rsi,rdx\r | |
646 | mov rdx,r8\r | |
647 | \r | |
648 | \r | |
649 | \r | |
650 | lea rsp,[((-184))+rsp]\r | |
651 | movaps XMMWORD[16+rsp],xmm6\r | |
652 | movaps XMMWORD[32+rsp],xmm7\r | |
653 | movaps XMMWORD[48+rsp],xmm8\r | |
654 | movaps XMMWORD[64+rsp],xmm9\r | |
655 | movaps XMMWORD[80+rsp],xmm10\r | |
656 | movaps XMMWORD[96+rsp],xmm11\r | |
657 | movaps XMMWORD[112+rsp],xmm12\r | |
658 | movaps XMMWORD[128+rsp],xmm13\r | |
659 | movaps XMMWORD[144+rsp],xmm14\r | |
660 | movaps XMMWORD[160+rsp],xmm15\r | |
661 | $L$enc_key_body:\r | |
662 | mov eax,esi\r | |
663 | shr eax,5\r | |
664 | add eax,5\r | |
665 | mov DWORD[240+rdx],eax\r | |
666 | \r | |
667 | mov ecx,0\r | |
668 | mov r8d,0x30\r | |
669 | call _vpaes_schedule_core\r | |
670 | movaps xmm6,XMMWORD[16+rsp]\r | |
671 | movaps xmm7,XMMWORD[32+rsp]\r | |
672 | movaps xmm8,XMMWORD[48+rsp]\r | |
673 | movaps xmm9,XMMWORD[64+rsp]\r | |
674 | movaps xmm10,XMMWORD[80+rsp]\r | |
675 | movaps xmm11,XMMWORD[96+rsp]\r | |
676 | movaps xmm12,XMMWORD[112+rsp]\r | |
677 | movaps xmm13,XMMWORD[128+rsp]\r | |
678 | movaps xmm14,XMMWORD[144+rsp]\r | |
679 | movaps xmm15,XMMWORD[160+rsp]\r | |
680 | lea rsp,[184+rsp]\r | |
681 | $L$enc_key_epilogue:\r | |
682 | xor eax,eax\r | |
683 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r | |
684 | mov rsi,QWORD[16+rsp]\r | |
685 | DB 0F3h,0C3h ;repret\r | |
686 | \r | |
687 | $L$SEH_end_vpaes_set_encrypt_key:\r | |
688 | \r | |
689 | global vpaes_set_decrypt_key\r | |
690 | \r | |
691 | ALIGN 16\r | |
692 | vpaes_set_decrypt_key:\r | |
693 | mov QWORD[8+rsp],rdi ;WIN64 prologue\r | |
694 | mov QWORD[16+rsp],rsi\r | |
695 | mov rax,rsp\r | |
696 | $L$SEH_begin_vpaes_set_decrypt_key:\r | |
697 | mov rdi,rcx\r | |
698 | mov rsi,rdx\r | |
699 | mov rdx,r8\r | |
700 | \r | |
701 | \r | |
702 | \r | |
703 | lea rsp,[((-184))+rsp]\r | |
704 | movaps XMMWORD[16+rsp],xmm6\r | |
705 | movaps XMMWORD[32+rsp],xmm7\r | |
706 | movaps XMMWORD[48+rsp],xmm8\r | |
707 | movaps XMMWORD[64+rsp],xmm9\r | |
708 | movaps XMMWORD[80+rsp],xmm10\r | |
709 | movaps XMMWORD[96+rsp],xmm11\r | |
710 | movaps XMMWORD[112+rsp],xmm12\r | |
711 | movaps XMMWORD[128+rsp],xmm13\r | |
712 | movaps XMMWORD[144+rsp],xmm14\r | |
713 | movaps XMMWORD[160+rsp],xmm15\r | |
714 | $L$dec_key_body:\r | |
715 | mov eax,esi\r | |
716 | shr eax,5\r | |
717 | add eax,5\r | |
718 | mov DWORD[240+rdx],eax\r | |
719 | shl eax,4\r | |
720 | lea rdx,[16+rax*1+rdx]\r | |
721 | \r | |
722 | mov ecx,1\r | |
723 | mov r8d,esi\r | |
724 | shr r8d,1\r | |
725 | and r8d,32\r | |
726 | xor r8d,32\r | |
727 | call _vpaes_schedule_core\r | |
728 | movaps xmm6,XMMWORD[16+rsp]\r | |
729 | movaps xmm7,XMMWORD[32+rsp]\r | |
730 | movaps xmm8,XMMWORD[48+rsp]\r | |
731 | movaps xmm9,XMMWORD[64+rsp]\r | |
732 | movaps xmm10,XMMWORD[80+rsp]\r | |
733 | movaps xmm11,XMMWORD[96+rsp]\r | |
734 | movaps xmm12,XMMWORD[112+rsp]\r | |
735 | movaps xmm13,XMMWORD[128+rsp]\r | |
736 | movaps xmm14,XMMWORD[144+rsp]\r | |
737 | movaps xmm15,XMMWORD[160+rsp]\r | |
738 | lea rsp,[184+rsp]\r | |
739 | $L$dec_key_epilogue:\r | |
740 | xor eax,eax\r | |
741 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r | |
742 | mov rsi,QWORD[16+rsp]\r | |
743 | DB 0F3h,0C3h ;repret\r | |
744 | \r | |
745 | $L$SEH_end_vpaes_set_decrypt_key:\r | |
746 | \r | |
747 | global vpaes_encrypt\r | |
748 | \r | |
749 | ALIGN 16\r | |
750 | vpaes_encrypt:\r | |
751 | mov QWORD[8+rsp],rdi ;WIN64 prologue\r | |
752 | mov QWORD[16+rsp],rsi\r | |
753 | mov rax,rsp\r | |
754 | $L$SEH_begin_vpaes_encrypt:\r | |
755 | mov rdi,rcx\r | |
756 | mov rsi,rdx\r | |
757 | mov rdx,r8\r | |
758 | \r | |
759 | \r | |
760 | \r | |
761 | lea rsp,[((-184))+rsp]\r | |
762 | movaps XMMWORD[16+rsp],xmm6\r | |
763 | movaps XMMWORD[32+rsp],xmm7\r | |
764 | movaps XMMWORD[48+rsp],xmm8\r | |
765 | movaps XMMWORD[64+rsp],xmm9\r | |
766 | movaps XMMWORD[80+rsp],xmm10\r | |
767 | movaps XMMWORD[96+rsp],xmm11\r | |
768 | movaps XMMWORD[112+rsp],xmm12\r | |
769 | movaps XMMWORD[128+rsp],xmm13\r | |
770 | movaps XMMWORD[144+rsp],xmm14\r | |
771 | movaps XMMWORD[160+rsp],xmm15\r | |
772 | $L$enc_body:\r | |
773 | movdqu xmm0,XMMWORD[rdi]\r | |
774 | call _vpaes_preheat\r | |
775 | call _vpaes_encrypt_core\r | |
776 | movdqu XMMWORD[rsi],xmm0\r | |
777 | movaps xmm6,XMMWORD[16+rsp]\r | |
778 | movaps xmm7,XMMWORD[32+rsp]\r | |
779 | movaps xmm8,XMMWORD[48+rsp]\r | |
780 | movaps xmm9,XMMWORD[64+rsp]\r | |
781 | movaps xmm10,XMMWORD[80+rsp]\r | |
782 | movaps xmm11,XMMWORD[96+rsp]\r | |
783 | movaps xmm12,XMMWORD[112+rsp]\r | |
784 | movaps xmm13,XMMWORD[128+rsp]\r | |
785 | movaps xmm14,XMMWORD[144+rsp]\r | |
786 | movaps xmm15,XMMWORD[160+rsp]\r | |
787 | lea rsp,[184+rsp]\r | |
788 | $L$enc_epilogue:\r | |
789 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r | |
790 | mov rsi,QWORD[16+rsp]\r | |
791 | DB 0F3h,0C3h ;repret\r | |
792 | \r | |
793 | $L$SEH_end_vpaes_encrypt:\r | |
794 | \r | |
795 | global vpaes_decrypt\r | |
796 | \r | |
797 | ALIGN 16\r | |
798 | vpaes_decrypt:\r | |
799 | mov QWORD[8+rsp],rdi ;WIN64 prologue\r | |
800 | mov QWORD[16+rsp],rsi\r | |
801 | mov rax,rsp\r | |
802 | $L$SEH_begin_vpaes_decrypt:\r | |
803 | mov rdi,rcx\r | |
804 | mov rsi,rdx\r | |
805 | mov rdx,r8\r | |
806 | \r | |
807 | \r | |
808 | \r | |
809 | lea rsp,[((-184))+rsp]\r | |
810 | movaps XMMWORD[16+rsp],xmm6\r | |
811 | movaps XMMWORD[32+rsp],xmm7\r | |
812 | movaps XMMWORD[48+rsp],xmm8\r | |
813 | movaps XMMWORD[64+rsp],xmm9\r | |
814 | movaps XMMWORD[80+rsp],xmm10\r | |
815 | movaps XMMWORD[96+rsp],xmm11\r | |
816 | movaps XMMWORD[112+rsp],xmm12\r | |
817 | movaps XMMWORD[128+rsp],xmm13\r | |
818 | movaps XMMWORD[144+rsp],xmm14\r | |
819 | movaps XMMWORD[160+rsp],xmm15\r | |
820 | $L$dec_body:\r | |
821 | movdqu xmm0,XMMWORD[rdi]\r | |
822 | call _vpaes_preheat\r | |
823 | call _vpaes_decrypt_core\r | |
824 | movdqu XMMWORD[rsi],xmm0\r | |
825 | movaps xmm6,XMMWORD[16+rsp]\r | |
826 | movaps xmm7,XMMWORD[32+rsp]\r | |
827 | movaps xmm8,XMMWORD[48+rsp]\r | |
828 | movaps xmm9,XMMWORD[64+rsp]\r | |
829 | movaps xmm10,XMMWORD[80+rsp]\r | |
830 | movaps xmm11,XMMWORD[96+rsp]\r | |
831 | movaps xmm12,XMMWORD[112+rsp]\r | |
832 | movaps xmm13,XMMWORD[128+rsp]\r | |
833 | movaps xmm14,XMMWORD[144+rsp]\r | |
834 | movaps xmm15,XMMWORD[160+rsp]\r | |
835 | lea rsp,[184+rsp]\r | |
836 | $L$dec_epilogue:\r | |
837 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r | |
838 | mov rsi,QWORD[16+rsp]\r | |
839 | DB 0F3h,0C3h ;repret\r | |
840 | \r | |
841 | $L$SEH_end_vpaes_decrypt:\r | |
842 | global vpaes_cbc_encrypt\r | |
843 | \r | |
844 | ALIGN 16\r | |
845 | vpaes_cbc_encrypt:\r | |
846 | mov QWORD[8+rsp],rdi ;WIN64 prologue\r | |
847 | mov QWORD[16+rsp],rsi\r | |
848 | mov rax,rsp\r | |
849 | $L$SEH_begin_vpaes_cbc_encrypt:\r | |
850 | mov rdi,rcx\r | |
851 | mov rsi,rdx\r | |
852 | mov rdx,r8\r | |
853 | mov rcx,r9\r | |
854 | mov r8,QWORD[40+rsp]\r | |
855 | mov r9,QWORD[48+rsp]\r | |
856 | \r | |
857 | \r | |
858 | \r | |
859 | xchg rdx,rcx\r | |
860 | sub rcx,16\r | |
861 | jc NEAR $L$cbc_abort\r | |
862 | lea rsp,[((-184))+rsp]\r | |
863 | movaps XMMWORD[16+rsp],xmm6\r | |
864 | movaps XMMWORD[32+rsp],xmm7\r | |
865 | movaps XMMWORD[48+rsp],xmm8\r | |
866 | movaps XMMWORD[64+rsp],xmm9\r | |
867 | movaps XMMWORD[80+rsp],xmm10\r | |
868 | movaps XMMWORD[96+rsp],xmm11\r | |
869 | movaps XMMWORD[112+rsp],xmm12\r | |
870 | movaps XMMWORD[128+rsp],xmm13\r | |
871 | movaps XMMWORD[144+rsp],xmm14\r | |
872 | movaps XMMWORD[160+rsp],xmm15\r | |
873 | $L$cbc_body:\r | |
874 | movdqu xmm6,XMMWORD[r8]\r | |
875 | sub rsi,rdi\r | |
876 | call _vpaes_preheat\r | |
877 | cmp r9d,0\r | |
878 | je NEAR $L$cbc_dec_loop\r | |
879 | jmp NEAR $L$cbc_enc_loop\r | |
880 | ALIGN 16\r | |
881 | $L$cbc_enc_loop:\r | |
882 | movdqu xmm0,XMMWORD[rdi]\r | |
883 | pxor xmm0,xmm6\r | |
884 | call _vpaes_encrypt_core\r | |
885 | movdqa xmm6,xmm0\r | |
886 | movdqu XMMWORD[rdi*1+rsi],xmm0\r | |
887 | lea rdi,[16+rdi]\r | |
888 | sub rcx,16\r | |
889 | jnc NEAR $L$cbc_enc_loop\r | |
890 | jmp NEAR $L$cbc_done\r | |
891 | ALIGN 16\r | |
892 | $L$cbc_dec_loop:\r | |
893 | movdqu xmm0,XMMWORD[rdi]\r | |
894 | movdqa xmm7,xmm0\r | |
895 | call _vpaes_decrypt_core\r | |
896 | pxor xmm0,xmm6\r | |
897 | movdqa xmm6,xmm7\r | |
898 | movdqu XMMWORD[rdi*1+rsi],xmm0\r | |
899 | lea rdi,[16+rdi]\r | |
900 | sub rcx,16\r | |
901 | jnc NEAR $L$cbc_dec_loop\r | |
902 | $L$cbc_done:\r | |
903 | movdqu XMMWORD[r8],xmm6\r | |
904 | movaps xmm6,XMMWORD[16+rsp]\r | |
905 | movaps xmm7,XMMWORD[32+rsp]\r | |
906 | movaps xmm8,XMMWORD[48+rsp]\r | |
907 | movaps xmm9,XMMWORD[64+rsp]\r | |
908 | movaps xmm10,XMMWORD[80+rsp]\r | |
909 | movaps xmm11,XMMWORD[96+rsp]\r | |
910 | movaps xmm12,XMMWORD[112+rsp]\r | |
911 | movaps xmm13,XMMWORD[128+rsp]\r | |
912 | movaps xmm14,XMMWORD[144+rsp]\r | |
913 | movaps xmm15,XMMWORD[160+rsp]\r | |
914 | lea rsp,[184+rsp]\r | |
915 | $L$cbc_epilogue:\r | |
916 | $L$cbc_abort:\r | |
917 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r | |
918 | mov rsi,QWORD[16+rsp]\r | |
919 | DB 0F3h,0C3h ;repret\r | |
920 | \r | |
921 | $L$SEH_end_vpaes_cbc_encrypt:\r | |
922 | \r | |
923 | \r | |
924 | \r | |
925 | \r | |
926 | \r | |
927 | \r | |
928 | \r | |
929 | ALIGN 16\r | |
930 | _vpaes_preheat:\r | |
931 | \r | |
932 | lea r10,[$L$k_s0F]\r | |
933 | movdqa xmm10,XMMWORD[((-32))+r10]\r | |
934 | movdqa xmm11,XMMWORD[((-16))+r10]\r | |
935 | movdqa xmm9,XMMWORD[r10]\r | |
936 | movdqa xmm13,XMMWORD[48+r10]\r | |
937 | movdqa xmm12,XMMWORD[64+r10]\r | |
938 | movdqa xmm15,XMMWORD[80+r10]\r | |
939 | movdqa xmm14,XMMWORD[96+r10]\r | |
940 | DB 0F3h,0C3h ;repret\r | |
941 | \r | |
942 | \r | |
943 | \r | |
944 | \r | |
945 | \r | |
946 | \r | |
947 | \r | |
948 | \r | |
949 | ALIGN 64\r | |
950 | _vpaes_consts:\r | |
951 | $L$k_inv:\r | |
952 | DQ 0x0E05060F0D080180,0x040703090A0B0C02\r | |
953 | DQ 0x01040A060F0B0780,0x030D0E0C02050809\r | |
954 | \r | |
955 | $L$k_s0F:\r | |
956 | DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F\r | |
957 | \r | |
958 | $L$k_ipt:\r | |
959 | DQ 0xC2B2E8985A2A7000,0xCABAE09052227808\r | |
960 | DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81\r | |
961 | \r | |
962 | $L$k_sb1:\r | |
963 | DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544\r | |
964 | DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF\r | |
965 | $L$k_sb2:\r | |
966 | DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD\r | |
967 | DQ 0x69EB88400AE12900,0xC2A163C8AB82234A\r | |
968 | $L$k_sbo:\r | |
969 | DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878\r | |
970 | DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA\r | |
971 | \r | |
972 | $L$k_mc_forward:\r | |
973 | DQ 0x0407060500030201,0x0C0F0E0D080B0A09\r | |
974 | DQ 0x080B0A0904070605,0x000302010C0F0E0D\r | |
975 | DQ 0x0C0F0E0D080B0A09,0x0407060500030201\r | |
976 | DQ 0x000302010C0F0E0D,0x080B0A0904070605\r | |
977 | \r | |
978 | $L$k_mc_backward:\r | |
979 | DQ 0x0605040702010003,0x0E0D0C0F0A09080B\r | |
980 | DQ 0x020100030E0D0C0F,0x0A09080B06050407\r | |
981 | DQ 0x0E0D0C0F0A09080B,0x0605040702010003\r | |
982 | DQ 0x0A09080B06050407,0x020100030E0D0C0F\r | |
983 | \r | |
984 | $L$k_sr:\r | |
985 | DQ 0x0706050403020100,0x0F0E0D0C0B0A0908\r | |
986 | DQ 0x030E09040F0A0500,0x0B06010C07020D08\r | |
987 | DQ 0x0F060D040B020900,0x070E050C030A0108\r | |
988 | DQ 0x0B0E0104070A0D00,0x0306090C0F020508\r | |
989 | \r | |
990 | $L$k_rcon:\r | |
991 | DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81\r | |
992 | \r | |
993 | $L$k_s63:\r | |
994 | DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B\r | |
995 | \r | |
996 | $L$k_opt:\r | |
997 | DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808\r | |
998 | DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0\r | |
999 | \r | |
1000 | $L$k_deskew:\r | |
1001 | DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A\r | |
1002 | DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77\r | |
1003 | \r | |
1004 | \r | |
1005 | \r | |
1006 | \r | |
1007 | \r | |
1008 | $L$k_dksd:\r | |
1009 | DQ 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9\r | |
1010 | DQ 0x41C277F4B5368300,0x5FDC69EAAB289D1E\r | |
1011 | $L$k_dksb:\r | |
1012 | DQ 0x9A4FCA1F8550D500,0x03D653861CC94C99\r | |
1013 | DQ 0x115BEDA7B6FC4A00,0xD993256F7E3482C8\r | |
1014 | $L$k_dkse:\r | |
1015 | DQ 0xD5031CCA1FC9D600,0x53859A4C994F5086\r | |
1016 | DQ 0xA23196054FDC7BE8,0xCD5EF96A20B31487\r | |
1017 | $L$k_dks9:\r | |
1018 | DQ 0xB6116FC87ED9A700,0x4AED933482255BFC\r | |
1019 | DQ 0x4576516227143300,0x8BB89FACE9DAFDCE\r | |
1020 | \r | |
1021 | \r | |
1022 | \r | |
1023 | \r | |
1024 | \r | |
1025 | $L$k_dipt:\r | |
1026 | DQ 0x0F505B040B545F00,0x154A411E114E451A\r | |
1027 | DQ 0x86E383E660056500,0x12771772F491F194\r | |
1028 | \r | |
1029 | $L$k_dsb9:\r | |
1030 | DQ 0x851C03539A86D600,0xCAD51F504F994CC9\r | |
1031 | DQ 0xC03B1789ECD74900,0x725E2C9EB2FBA565\r | |
1032 | $L$k_dsbd:\r | |
1033 | DQ 0x7D57CCDFE6B1A200,0xF56E9B13882A4439\r | |
1034 | DQ 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3\r | |
1035 | $L$k_dsbb:\r | |
1036 | DQ 0xD022649296B44200,0x602646F6B0F2D404\r | |
1037 | DQ 0xC19498A6CD596700,0xF3FF0C3E3255AA6B\r | |
1038 | $L$k_dsbe:\r | |
1039 | DQ 0x46F2929626D4D000,0x2242600464B4F6B0\r | |
1040 | DQ 0x0C55A6CDFFAAC100,0x9467F36B98593E32\r | |
1041 | $L$k_dsbo:\r | |
1042 | DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D\r | |
1043 | DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C\r | |
1044 | DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105\r | |
1045 | DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54\r | |
1046 | DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97\r | |
1047 | DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32\r | |
1048 | DB 85,110,105,118,101,114,115,105,116,121,41,0\r | |
1049 | ALIGN 64\r | |
1050 | \r | |
1051 | EXTERN __imp_RtlVirtualUnwind\r | |
1052 | \r | |
1053 | ALIGN 16\r | |
1054 | se_handler:\r | |
1055 | push rsi\r | |
1056 | push rdi\r | |
1057 | push rbx\r | |
1058 | push rbp\r | |
1059 | push r12\r | |
1060 | push r13\r | |
1061 | push r14\r | |
1062 | push r15\r | |
1063 | pushfq\r | |
1064 | sub rsp,64\r | |
1065 | \r | |
1066 | mov rax,QWORD[120+r8]\r | |
1067 | mov rbx,QWORD[248+r8]\r | |
1068 | \r | |
1069 | mov rsi,QWORD[8+r9]\r | |
1070 | mov r11,QWORD[56+r9]\r | |
1071 | \r | |
1072 | mov r10d,DWORD[r11]\r | |
1073 | lea r10,[r10*1+rsi]\r | |
1074 | cmp rbx,r10\r | |
1075 | jb NEAR $L$in_prologue\r | |
1076 | \r | |
1077 | mov rax,QWORD[152+r8]\r | |
1078 | \r | |
1079 | mov r10d,DWORD[4+r11]\r | |
1080 | lea r10,[r10*1+rsi]\r | |
1081 | cmp rbx,r10\r | |
1082 | jae NEAR $L$in_prologue\r | |
1083 | \r | |
1084 | lea rsi,[16+rax]\r | |
1085 | lea rdi,[512+r8]\r | |
1086 | mov ecx,20\r | |
1087 | DD 0xa548f3fc\r | |
1088 | lea rax,[184+rax]\r | |
1089 | \r | |
1090 | $L$in_prologue:\r | |
1091 | mov rdi,QWORD[8+rax]\r | |
1092 | mov rsi,QWORD[16+rax]\r | |
1093 | mov QWORD[152+r8],rax\r | |
1094 | mov QWORD[168+r8],rsi\r | |
1095 | mov QWORD[176+r8],rdi\r | |
1096 | \r | |
1097 | mov rdi,QWORD[40+r9]\r | |
1098 | mov rsi,r8\r | |
1099 | mov ecx,154\r | |
1100 | DD 0xa548f3fc\r | |
1101 | \r | |
1102 | mov rsi,r9\r | |
1103 | xor rcx,rcx\r | |
1104 | mov rdx,QWORD[8+rsi]\r | |
1105 | mov r8,QWORD[rsi]\r | |
1106 | mov r9,QWORD[16+rsi]\r | |
1107 | mov r10,QWORD[40+rsi]\r | |
1108 | lea r11,[56+rsi]\r | |
1109 | lea r12,[24+rsi]\r | |
1110 | mov QWORD[32+rsp],r10\r | |
1111 | mov QWORD[40+rsp],r11\r | |
1112 | mov QWORD[48+rsp],r12\r | |
1113 | mov QWORD[56+rsp],rcx\r | |
1114 | call QWORD[__imp_RtlVirtualUnwind]\r | |
1115 | \r | |
1116 | mov eax,1\r | |
1117 | add rsp,64\r | |
1118 | popfq\r | |
1119 | pop r15\r | |
1120 | pop r14\r | |
1121 | pop r13\r | |
1122 | pop r12\r | |
1123 | pop rbp\r | |
1124 | pop rbx\r | |
1125 | pop rdi\r | |
1126 | pop rsi\r | |
1127 | DB 0F3h,0C3h ;repret\r | |
1128 | \r | |
1129 | \r | |
1130 | section .pdata rdata align=4\r | |
1131 | ALIGN 4\r | |
1132 | DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase\r | |
1133 | DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase\r | |
1134 | DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase\r | |
1135 | \r | |
1136 | DD $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase\r | |
1137 | DD $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase\r | |
1138 | DD $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase\r | |
1139 | \r | |
1140 | DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase\r | |
1141 | DD $L$SEH_end_vpaes_encrypt wrt ..imagebase\r | |
1142 | DD $L$SEH_info_vpaes_encrypt wrt ..imagebase\r | |
1143 | \r | |
1144 | DD $L$SEH_begin_vpaes_decrypt wrt ..imagebase\r | |
1145 | DD $L$SEH_end_vpaes_decrypt wrt ..imagebase\r | |
1146 | DD $L$SEH_info_vpaes_decrypt wrt ..imagebase\r | |
1147 | \r | |
1148 | DD $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase\r | |
1149 | DD $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase\r | |
1150 | DD $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase\r | |
1151 | \r | |
1152 | section .xdata rdata align=8\r | |
1153 | ALIGN 8\r | |
1154 | $L$SEH_info_vpaes_set_encrypt_key:\r | |
1155 | DB 9,0,0,0\r | |
1156 | DD se_handler wrt ..imagebase\r | |
1157 | DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase\r | |
1158 | $L$SEH_info_vpaes_set_decrypt_key:\r | |
1159 | DB 9,0,0,0\r | |
1160 | DD se_handler wrt ..imagebase\r | |
1161 | DD $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase\r | |
1162 | $L$SEH_info_vpaes_encrypt:\r | |
1163 | DB 9,0,0,0\r | |
1164 | DD se_handler wrt ..imagebase\r | |
1165 | DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase\r | |
1166 | $L$SEH_info_vpaes_decrypt:\r | |
1167 | DB 9,0,0,0\r | |
1168 | DD se_handler wrt ..imagebase\r | |
1169 | DD $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase\r | |
1170 | $L$SEH_info_vpaes_cbc_encrypt:\r | |
1171 | DB 9,0,0,0\r | |
1172 | DD se_handler wrt ..imagebase\r | |
1173 | DD $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase\r |