Add declarativeContent support for bookmarked state
[chromium-blink-merge.git] / third_party / boringssl / win-x86_64 / crypto / aes / aes-x86_64.asm
blob53394f0e22f88e3e49794183d8f59fdaec3b9b5a
1 default rel
2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section .text code align=64
8 ALIGN 16
9 _x86_64_AES_encrypt:
10 xor eax,DWORD[r15]
11 xor ebx,DWORD[4+r15]
12 xor ecx,DWORD[8+r15]
13 xor edx,DWORD[12+r15]
15 mov r13d,DWORD[240+r15]
16 sub r13d,1
17 jmp NEAR $L$enc_loop
18 ALIGN 16
19 $L$enc_loop:
21 movzx esi,al
22 movzx edi,bl
23 movzx ebp,cl
24 mov r10d,DWORD[rsi*8+r14]
25 mov r11d,DWORD[rdi*8+r14]
26 mov r12d,DWORD[rbp*8+r14]
28 movzx esi,bh
29 movzx edi,ch
30 movzx ebp,dl
31 xor r10d,DWORD[3+rsi*8+r14]
32 xor r11d,DWORD[3+rdi*8+r14]
33 mov r8d,DWORD[rbp*8+r14]
35 movzx esi,dh
36 shr ecx,16
37 movzx ebp,ah
38 xor r12d,DWORD[3+rsi*8+r14]
39 shr edx,16
40 xor r8d,DWORD[3+rbp*8+r14]
42 shr ebx,16
43 lea r15,[16+r15]
44 shr eax,16
46 movzx esi,cl
47 movzx edi,dl
48 movzx ebp,al
49 xor r10d,DWORD[2+rsi*8+r14]
50 xor r11d,DWORD[2+rdi*8+r14]
51 xor r12d,DWORD[2+rbp*8+r14]
53 movzx esi,dh
54 movzx edi,ah
55 movzx ebp,bl
56 xor r10d,DWORD[1+rsi*8+r14]
57 xor r11d,DWORD[1+rdi*8+r14]
58 xor r8d,DWORD[2+rbp*8+r14]
60 mov edx,DWORD[12+r15]
61 movzx edi,bh
62 movzx ebp,ch
63 mov eax,DWORD[r15]
64 xor r12d,DWORD[1+rdi*8+r14]
65 xor r8d,DWORD[1+rbp*8+r14]
67 mov ebx,DWORD[4+r15]
68 mov ecx,DWORD[8+r15]
69 xor eax,r10d
70 xor ebx,r11d
71 xor ecx,r12d
72 xor edx,r8d
73 sub r13d,1
74 jnz NEAR $L$enc_loop
75 movzx esi,al
76 movzx edi,bl
77 movzx ebp,cl
78 movzx r10d,BYTE[2+rsi*8+r14]
79 movzx r11d,BYTE[2+rdi*8+r14]
80 movzx r12d,BYTE[2+rbp*8+r14]
82 movzx esi,dl
83 movzx edi,bh
84 movzx ebp,ch
85 movzx r8d,BYTE[2+rsi*8+r14]
86 mov edi,DWORD[rdi*8+r14]
87 mov ebp,DWORD[rbp*8+r14]
89 and edi,0x0000ff00
90 and ebp,0x0000ff00
92 xor r10d,edi
93 xor r11d,ebp
94 shr ecx,16
96 movzx esi,dh
97 movzx edi,ah
98 shr edx,16
99 mov esi,DWORD[rsi*8+r14]
100 mov edi,DWORD[rdi*8+r14]
102 and esi,0x0000ff00
103 and edi,0x0000ff00
104 shr ebx,16
105 xor r12d,esi
106 xor r8d,edi
107 shr eax,16
109 movzx esi,cl
110 movzx edi,dl
111 movzx ebp,al
112 mov esi,DWORD[rsi*8+r14]
113 mov edi,DWORD[rdi*8+r14]
114 mov ebp,DWORD[rbp*8+r14]
116 and esi,0x00ff0000
117 and edi,0x00ff0000
118 and ebp,0x00ff0000
120 xor r10d,esi
121 xor r11d,edi
122 xor r12d,ebp
124 movzx esi,bl
125 movzx edi,dh
126 movzx ebp,ah
127 mov esi,DWORD[rsi*8+r14]
128 mov edi,DWORD[2+rdi*8+r14]
129 mov ebp,DWORD[2+rbp*8+r14]
131 and esi,0x00ff0000
132 and edi,0xff000000
133 and ebp,0xff000000
135 xor r8d,esi
136 xor r10d,edi
137 xor r11d,ebp
139 movzx esi,bh
140 movzx edi,ch
141 mov edx,DWORD[((16+12))+r15]
142 mov esi,DWORD[2+rsi*8+r14]
143 mov edi,DWORD[2+rdi*8+r14]
144 mov eax,DWORD[((16+0))+r15]
146 and esi,0xff000000
147 and edi,0xff000000
149 xor r12d,esi
150 xor r8d,edi
152 mov ebx,DWORD[((16+4))+r15]
153 mov ecx,DWORD[((16+8))+r15]
154 xor eax,r10d
155 xor ebx,r11d
156 xor ecx,r12d
157 xor edx,r8d
158 DB 0xf3,0xc3
161 ALIGN 16
162 _x86_64_AES_encrypt_compact:
163 lea r8,[128+r14]
164 mov edi,DWORD[((0-128))+r8]
165 mov ebp,DWORD[((32-128))+r8]
166 mov r10d,DWORD[((64-128))+r8]
167 mov r11d,DWORD[((96-128))+r8]
168 mov edi,DWORD[((128-128))+r8]
169 mov ebp,DWORD[((160-128))+r8]
170 mov r10d,DWORD[((192-128))+r8]
171 mov r11d,DWORD[((224-128))+r8]
172 jmp NEAR $L$enc_loop_compact
173 ALIGN 16
174 $L$enc_loop_compact:
175 xor eax,DWORD[r15]
176 xor ebx,DWORD[4+r15]
177 xor ecx,DWORD[8+r15]
178 xor edx,DWORD[12+r15]
179 lea r15,[16+r15]
180 movzx r10d,al
181 movzx r11d,bl
182 movzx r12d,cl
183 movzx r8d,dl
184 movzx esi,bh
185 movzx edi,ch
186 shr ecx,16
187 movzx ebp,dh
188 movzx r10d,BYTE[r10*1+r14]
189 movzx r11d,BYTE[r11*1+r14]
190 movzx r12d,BYTE[r12*1+r14]
191 movzx r8d,BYTE[r8*1+r14]
193 movzx r9d,BYTE[rsi*1+r14]
194 movzx esi,ah
195 movzx r13d,BYTE[rdi*1+r14]
196 movzx edi,cl
197 movzx ebp,BYTE[rbp*1+r14]
198 movzx esi,BYTE[rsi*1+r14]
200 shl r9d,8
201 shr edx,16
202 shl r13d,8
203 xor r10d,r9d
204 shr eax,16
205 movzx r9d,dl
206 shr ebx,16
207 xor r11d,r13d
208 shl ebp,8
209 movzx r13d,al
210 movzx edi,BYTE[rdi*1+r14]
211 xor r12d,ebp
213 shl esi,8
214 movzx ebp,bl
215 shl edi,16
216 xor r8d,esi
217 movzx r9d,BYTE[r9*1+r14]
218 movzx esi,dh
219 movzx r13d,BYTE[r13*1+r14]
220 xor r10d,edi
222 shr ecx,8
223 movzx edi,ah
224 shl r9d,16
225 shr ebx,8
226 shl r13d,16
227 xor r11d,r9d
228 movzx ebp,BYTE[rbp*1+r14]
229 movzx esi,BYTE[rsi*1+r14]
230 movzx edi,BYTE[rdi*1+r14]
231 movzx edx,BYTE[rcx*1+r14]
232 movzx ecx,BYTE[rbx*1+r14]
234 shl ebp,16
235 xor r12d,r13d
236 shl esi,24
237 xor r8d,ebp
238 shl edi,24
239 xor r10d,esi
240 shl edx,24
241 xor r11d,edi
242 shl ecx,24
243 mov eax,r10d
244 mov ebx,r11d
245 xor ecx,r12d
246 xor edx,r8d
247 cmp r15,QWORD[16+rsp]
248 je NEAR $L$enc_compact_done
249 mov r10d,0x80808080
250 mov r11d,0x80808080
251 and r10d,eax
252 and r11d,ebx
253 mov esi,r10d
254 mov edi,r11d
255 shr r10d,7
256 lea r8d,[rax*1+rax]
257 shr r11d,7
258 lea r9d,[rbx*1+rbx]
259 sub esi,r10d
260 sub edi,r11d
261 and r8d,0xfefefefe
262 and r9d,0xfefefefe
263 and esi,0x1b1b1b1b
264 and edi,0x1b1b1b1b
265 mov r10d,eax
266 mov r11d,ebx
267 xor r8d,esi
268 xor r9d,edi
270 xor eax,r8d
271 xor ebx,r9d
272 mov r12d,0x80808080
273 rol eax,24
274 mov ebp,0x80808080
275 rol ebx,24
276 and r12d,ecx
277 and ebp,edx
278 xor eax,r8d
279 xor ebx,r9d
280 mov esi,r12d
281 ror r10d,16
282 mov edi,ebp
283 ror r11d,16
284 lea r8d,[rcx*1+rcx]
285 shr r12d,7
286 xor eax,r10d
287 shr ebp,7
288 xor ebx,r11d
289 ror r10d,8
290 lea r9d,[rdx*1+rdx]
291 ror r11d,8
292 sub esi,r12d
293 sub edi,ebp
294 xor eax,r10d
295 xor ebx,r11d
297 and r8d,0xfefefefe
298 and r9d,0xfefefefe
299 and esi,0x1b1b1b1b
300 and edi,0x1b1b1b1b
301 mov r12d,ecx
302 mov ebp,edx
303 xor r8d,esi
304 xor r9d,edi
306 ror r12d,16
307 xor ecx,r8d
308 ror ebp,16
309 xor edx,r9d
310 rol ecx,24
311 mov esi,DWORD[r14]
312 rol edx,24
313 xor ecx,r8d
314 mov edi,DWORD[64+r14]
315 xor edx,r9d
316 mov r8d,DWORD[128+r14]
317 xor ecx,r12d
318 ror r12d,8
319 xor edx,ebp
320 ror ebp,8
321 xor ecx,r12d
322 mov r9d,DWORD[192+r14]
323 xor edx,ebp
324 jmp NEAR $L$enc_loop_compact
325 ALIGN 16
326 $L$enc_compact_done:
327 xor eax,DWORD[r15]
328 xor ebx,DWORD[4+r15]
329 xor ecx,DWORD[8+r15]
330 xor edx,DWORD[12+r15]
331 DB 0xf3,0xc3
333 ALIGN 16
334 global asm_AES_encrypt
337 asm_AES_encrypt:
338 mov QWORD[8+rsp],rdi ;WIN64 prologue
339 mov QWORD[16+rsp],rsi
340 mov rax,rsp
341 $L$SEH_begin_asm_AES_encrypt:
342 mov rdi,rcx
343 mov rsi,rdx
344 mov rdx,r8
347 push rbx
348 push rbp
349 push r12
350 push r13
351 push r14
352 push r15
355 mov r10,rsp
356 lea rcx,[((-63))+rdx]
357 and rsp,-64
358 sub rcx,rsp
359 neg rcx
360 and rcx,0x3c0
361 sub rsp,rcx
362 sub rsp,32
364 mov QWORD[16+rsp],rsi
365 mov QWORD[24+rsp],r10
366 $L$enc_prologue:
368 mov r15,rdx
369 mov r13d,DWORD[240+r15]
371 mov eax,DWORD[rdi]
372 mov ebx,DWORD[4+rdi]
373 mov ecx,DWORD[8+rdi]
374 mov edx,DWORD[12+rdi]
376 shl r13d,4
377 lea rbp,[r13*1+r15]
378 mov QWORD[rsp],r15
379 mov QWORD[8+rsp],rbp
382 lea r14,[(($L$AES_Te+2048))]
383 lea rbp,[768+rsp]
384 sub rbp,r14
385 and rbp,0x300
386 lea r14,[rbp*1+r14]
388 call _x86_64_AES_encrypt_compact
390 mov r9,QWORD[16+rsp]
391 mov rsi,QWORD[24+rsp]
392 mov DWORD[r9],eax
393 mov DWORD[4+r9],ebx
394 mov DWORD[8+r9],ecx
395 mov DWORD[12+r9],edx
397 mov r15,QWORD[rsi]
398 mov r14,QWORD[8+rsi]
399 mov r13,QWORD[16+rsi]
400 mov r12,QWORD[24+rsi]
401 mov rbp,QWORD[32+rsi]
402 mov rbx,QWORD[40+rsi]
403 lea rsp,[48+rsi]
404 $L$enc_epilogue:
405 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
406 mov rsi,QWORD[16+rsp]
407 DB 0F3h,0C3h ;repret
408 $L$SEH_end_asm_AES_encrypt:
410 ALIGN 16
411 _x86_64_AES_decrypt:
412 xor eax,DWORD[r15]
413 xor ebx,DWORD[4+r15]
414 xor ecx,DWORD[8+r15]
415 xor edx,DWORD[12+r15]
417 mov r13d,DWORD[240+r15]
418 sub r13d,1
419 jmp NEAR $L$dec_loop
420 ALIGN 16
421 $L$dec_loop:
423 movzx esi,al
424 movzx edi,bl
425 movzx ebp,cl
426 mov r10d,DWORD[rsi*8+r14]
427 mov r11d,DWORD[rdi*8+r14]
428 mov r12d,DWORD[rbp*8+r14]
430 movzx esi,dh
431 movzx edi,ah
432 movzx ebp,dl
433 xor r10d,DWORD[3+rsi*8+r14]
434 xor r11d,DWORD[3+rdi*8+r14]
435 mov r8d,DWORD[rbp*8+r14]
437 movzx esi,bh
438 shr eax,16
439 movzx ebp,ch
440 xor r12d,DWORD[3+rsi*8+r14]
441 shr edx,16
442 xor r8d,DWORD[3+rbp*8+r14]
444 shr ebx,16
445 lea r15,[16+r15]
446 shr ecx,16
448 movzx esi,cl
449 movzx edi,dl
450 movzx ebp,al
451 xor r10d,DWORD[2+rsi*8+r14]
452 xor r11d,DWORD[2+rdi*8+r14]
453 xor r12d,DWORD[2+rbp*8+r14]
455 movzx esi,bh
456 movzx edi,ch
457 movzx ebp,bl
458 xor r10d,DWORD[1+rsi*8+r14]
459 xor r11d,DWORD[1+rdi*8+r14]
460 xor r8d,DWORD[2+rbp*8+r14]
462 movzx esi,dh
463 mov edx,DWORD[12+r15]
464 movzx ebp,ah
465 xor r12d,DWORD[1+rsi*8+r14]
466 mov eax,DWORD[r15]
467 xor r8d,DWORD[1+rbp*8+r14]
469 xor eax,r10d
470 mov ebx,DWORD[4+r15]
471 mov ecx,DWORD[8+r15]
472 xor ecx,r12d
473 xor ebx,r11d
474 xor edx,r8d
475 sub r13d,1
476 jnz NEAR $L$dec_loop
477 lea r14,[2048+r14]
478 movzx esi,al
479 movzx edi,bl
480 movzx ebp,cl
481 movzx r10d,BYTE[rsi*1+r14]
482 movzx r11d,BYTE[rdi*1+r14]
483 movzx r12d,BYTE[rbp*1+r14]
485 movzx esi,dl
486 movzx edi,dh
487 movzx ebp,ah
488 movzx r8d,BYTE[rsi*1+r14]
489 movzx edi,BYTE[rdi*1+r14]
490 movzx ebp,BYTE[rbp*1+r14]
492 shl edi,8
493 shl ebp,8
495 xor r10d,edi
496 xor r11d,ebp
497 shr edx,16
499 movzx esi,bh
500 movzx edi,ch
501 shr eax,16
502 movzx esi,BYTE[rsi*1+r14]
503 movzx edi,BYTE[rdi*1+r14]
505 shl esi,8
506 shl edi,8
507 shr ebx,16
508 xor r12d,esi
509 xor r8d,edi
510 shr ecx,16
512 movzx esi,cl
513 movzx edi,dl
514 movzx ebp,al
515 movzx esi,BYTE[rsi*1+r14]
516 movzx edi,BYTE[rdi*1+r14]
517 movzx ebp,BYTE[rbp*1+r14]
519 shl esi,16
520 shl edi,16
521 shl ebp,16
523 xor r10d,esi
524 xor r11d,edi
525 xor r12d,ebp
527 movzx esi,bl
528 movzx edi,bh
529 movzx ebp,ch
530 movzx esi,BYTE[rsi*1+r14]
531 movzx edi,BYTE[rdi*1+r14]
532 movzx ebp,BYTE[rbp*1+r14]
534 shl esi,16
535 shl edi,24
536 shl ebp,24
538 xor r8d,esi
539 xor r10d,edi
540 xor r11d,ebp
542 movzx esi,dh
543 movzx edi,ah
544 mov edx,DWORD[((16+12))+r15]
545 movzx esi,BYTE[rsi*1+r14]
546 movzx edi,BYTE[rdi*1+r14]
547 mov eax,DWORD[((16+0))+r15]
549 shl esi,24
550 shl edi,24
552 xor r12d,esi
553 xor r8d,edi
555 mov ebx,DWORD[((16+4))+r15]
556 mov ecx,DWORD[((16+8))+r15]
557 lea r14,[((-2048))+r14]
558 xor eax,r10d
559 xor ebx,r11d
560 xor ecx,r12d
561 xor edx,r8d
562 DB 0xf3,0xc3
565 ALIGN 16
566 _x86_64_AES_decrypt_compact:
567 lea r8,[128+r14]
568 mov edi,DWORD[((0-128))+r8]
569 mov ebp,DWORD[((32-128))+r8]
570 mov r10d,DWORD[((64-128))+r8]
571 mov r11d,DWORD[((96-128))+r8]
572 mov edi,DWORD[((128-128))+r8]
573 mov ebp,DWORD[((160-128))+r8]
574 mov r10d,DWORD[((192-128))+r8]
575 mov r11d,DWORD[((224-128))+r8]
576 jmp NEAR $L$dec_loop_compact
578 ALIGN 16
579 $L$dec_loop_compact:
580 xor eax,DWORD[r15]
581 xor ebx,DWORD[4+r15]
582 xor ecx,DWORD[8+r15]
583 xor edx,DWORD[12+r15]
584 lea r15,[16+r15]
585 movzx r10d,al
586 movzx r11d,bl
587 movzx r12d,cl
588 movzx r8d,dl
589 movzx esi,dh
590 movzx edi,ah
591 shr edx,16
592 movzx ebp,bh
593 movzx r10d,BYTE[r10*1+r14]
594 movzx r11d,BYTE[r11*1+r14]
595 movzx r12d,BYTE[r12*1+r14]
596 movzx r8d,BYTE[r8*1+r14]
598 movzx r9d,BYTE[rsi*1+r14]
599 movzx esi,ch
600 movzx r13d,BYTE[rdi*1+r14]
601 movzx ebp,BYTE[rbp*1+r14]
602 movzx esi,BYTE[rsi*1+r14]
604 shr ecx,16
605 shl r13d,8
606 shl r9d,8
607 movzx edi,cl
608 shr eax,16
609 xor r10d,r9d
610 shr ebx,16
611 movzx r9d,dl
613 shl ebp,8
614 xor r11d,r13d
615 shl esi,8
616 movzx r13d,al
617 movzx edi,BYTE[rdi*1+r14]
618 xor r12d,ebp
619 movzx ebp,bl
621 shl edi,16
622 xor r8d,esi
623 movzx r9d,BYTE[r9*1+r14]
624 movzx esi,bh
625 movzx ebp,BYTE[rbp*1+r14]
626 xor r10d,edi
627 movzx r13d,BYTE[r13*1+r14]
628 movzx edi,ch
630 shl ebp,16
631 shl r9d,16
632 shl r13d,16
633 xor r8d,ebp
634 movzx ebp,dh
635 xor r11d,r9d
636 shr eax,8
637 xor r12d,r13d
639 movzx esi,BYTE[rsi*1+r14]
640 movzx ebx,BYTE[rdi*1+r14]
641 movzx ecx,BYTE[rbp*1+r14]
642 movzx edx,BYTE[rax*1+r14]
644 mov eax,r10d
645 shl esi,24
646 shl ebx,24
647 shl ecx,24
648 xor eax,esi
649 shl edx,24
650 xor ebx,r11d
651 xor ecx,r12d
652 xor edx,r8d
653 cmp r15,QWORD[16+rsp]
654 je NEAR $L$dec_compact_done
656 mov rsi,QWORD[((256+0))+r14]
657 shl rbx,32
658 shl rdx,32
659 mov rdi,QWORD[((256+8))+r14]
660 or rax,rbx
661 or rcx,rdx
662 mov rbp,QWORD[((256+16))+r14]
663 mov r9,rsi
664 mov r12,rsi
665 and r9,rax
666 and r12,rcx
667 mov rbx,r9
668 mov rdx,r12
669 shr r9,7
670 lea r8,[rax*1+rax]
671 shr r12,7
672 lea r11,[rcx*1+rcx]
673 sub rbx,r9
674 sub rdx,r12
675 and r8,rdi
676 and r11,rdi
677 and rbx,rbp
678 and rdx,rbp
679 xor r8,rbx
680 xor r11,rdx
681 mov r10,rsi
682 mov r13,rsi
684 and r10,r8
685 and r13,r11
686 mov rbx,r10
687 mov rdx,r13
688 shr r10,7
689 lea r9,[r8*1+r8]
690 shr r13,7
691 lea r12,[r11*1+r11]
692 sub rbx,r10
693 sub rdx,r13
694 and r9,rdi
695 and r12,rdi
696 and rbx,rbp
697 and rdx,rbp
698 xor r9,rbx
699 xor r12,rdx
700 mov r10,rsi
701 mov r13,rsi
703 and r10,r9
704 and r13,r12
705 mov rbx,r10
706 mov rdx,r13
707 shr r10,7
708 xor r8,rax
709 shr r13,7
710 xor r11,rcx
711 sub rbx,r10
712 sub rdx,r13
713 lea r10,[r9*1+r9]
714 lea r13,[r12*1+r12]
715 xor r9,rax
716 xor r12,rcx
717 and r10,rdi
718 and r13,rdi
719 and rbx,rbp
720 and rdx,rbp
721 xor r10,rbx
722 xor r13,rdx
724 xor rax,r10
725 xor rcx,r13
726 xor r8,r10
727 xor r11,r13
728 mov rbx,rax
729 mov rdx,rcx
730 xor r9,r10
731 shr rbx,32
732 xor r12,r13
733 shr rdx,32
734 xor r10,r8
735 rol eax,8
736 xor r13,r11
737 rol ecx,8
738 xor r10,r9
739 rol ebx,8
740 xor r13,r12
742 rol edx,8
743 xor eax,r10d
744 shr r10,32
745 xor ecx,r13d
746 shr r13,32
747 xor ebx,r10d
748 xor edx,r13d
750 mov r10,r8
751 rol r8d,24
752 mov r13,r11
753 rol r11d,24
754 shr r10,32
755 xor eax,r8d
756 shr r13,32
757 xor ecx,r11d
758 rol r10d,24
759 mov r8,r9
760 rol r13d,24
761 mov r11,r12
762 shr r8,32
763 xor ebx,r10d
764 shr r11,32
765 xor edx,r13d
767 mov rsi,QWORD[r14]
768 rol r9d,16
769 mov rdi,QWORD[64+r14]
770 rol r12d,16
771 mov rbp,QWORD[128+r14]
772 rol r8d,16
773 mov r10,QWORD[192+r14]
774 xor eax,r9d
775 rol r11d,16
776 xor ecx,r12d
777 mov r13,QWORD[256+r14]
778 xor ebx,r8d
779 xor edx,r11d
780 jmp NEAR $L$dec_loop_compact
781 ALIGN 16
782 $L$dec_compact_done:
783 xor eax,DWORD[r15]
784 xor ebx,DWORD[4+r15]
785 xor ecx,DWORD[8+r15]
786 xor edx,DWORD[12+r15]
787 DB 0xf3,0xc3
789 ALIGN 16
790 global asm_AES_decrypt
793 asm_AES_decrypt:
794 mov QWORD[8+rsp],rdi ;WIN64 prologue
795 mov QWORD[16+rsp],rsi
796 mov rax,rsp
797 $L$SEH_begin_asm_AES_decrypt:
798 mov rdi,rcx
799 mov rsi,rdx
800 mov rdx,r8
803 push rbx
804 push rbp
805 push r12
806 push r13
807 push r14
808 push r15
811 mov r10,rsp
812 lea rcx,[((-63))+rdx]
813 and rsp,-64
814 sub rcx,rsp
815 neg rcx
816 and rcx,0x3c0
817 sub rsp,rcx
818 sub rsp,32
820 mov QWORD[16+rsp],rsi
821 mov QWORD[24+rsp],r10
822 $L$dec_prologue:
824 mov r15,rdx
825 mov r13d,DWORD[240+r15]
827 mov eax,DWORD[rdi]
828 mov ebx,DWORD[4+rdi]
829 mov ecx,DWORD[8+rdi]
830 mov edx,DWORD[12+rdi]
832 shl r13d,4
833 lea rbp,[r13*1+r15]
834 mov QWORD[rsp],r15
835 mov QWORD[8+rsp],rbp
838 lea r14,[(($L$AES_Td+2048))]
839 lea rbp,[768+rsp]
840 sub rbp,r14
841 and rbp,0x300
842 lea r14,[rbp*1+r14]
843 shr rbp,3
844 add r14,rbp
846 call _x86_64_AES_decrypt_compact
848 mov r9,QWORD[16+rsp]
849 mov rsi,QWORD[24+rsp]
850 mov DWORD[r9],eax
851 mov DWORD[4+r9],ebx
852 mov DWORD[8+r9],ecx
853 mov DWORD[12+r9],edx
855 mov r15,QWORD[rsi]
856 mov r14,QWORD[8+rsi]
857 mov r13,QWORD[16+rsi]
858 mov r12,QWORD[24+rsi]
859 mov rbp,QWORD[32+rsi]
860 mov rbx,QWORD[40+rsi]
861 lea rsp,[48+rsi]
862 $L$dec_epilogue:
863 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
864 mov rsi,QWORD[16+rsp]
865 DB 0F3h,0C3h ;repret
866 $L$SEH_end_asm_AES_decrypt:
867 ALIGN 16
868 global asm_AES_set_encrypt_key
870 asm_AES_set_encrypt_key:
871 mov QWORD[8+rsp],rdi ;WIN64 prologue
872 mov QWORD[16+rsp],rsi
873 mov rax,rsp
874 $L$SEH_begin_asm_AES_set_encrypt_key:
875 mov rdi,rcx
876 mov rsi,rdx
877 mov rdx,r8
880 push rbx
881 push rbp
882 push r12
883 push r13
884 push r14
885 push r15
886 sub rsp,8
887 $L$enc_key_prologue:
889 call _x86_64_AES_set_encrypt_key
891 mov rbp,QWORD[40+rsp]
892 mov rbx,QWORD[48+rsp]
893 add rsp,56
894 $L$enc_key_epilogue:
895 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
896 mov rsi,QWORD[16+rsp]
897 DB 0F3h,0C3h ;repret
898 $L$SEH_end_asm_AES_set_encrypt_key:
901 ALIGN 16
902 _x86_64_AES_set_encrypt_key:
903 mov ecx,esi
904 mov rsi,rdi
905 mov rdi,rdx
907 test rsi,-1
908 jz NEAR $L$badpointer
909 test rdi,-1
910 jz NEAR $L$badpointer
912 lea rbp,[$L$AES_Te]
913 lea rbp,[((2048+128))+rbp]
916 mov eax,DWORD[((0-128))+rbp]
917 mov ebx,DWORD[((32-128))+rbp]
918 mov r8d,DWORD[((64-128))+rbp]
919 mov edx,DWORD[((96-128))+rbp]
920 mov eax,DWORD[((128-128))+rbp]
921 mov ebx,DWORD[((160-128))+rbp]
922 mov r8d,DWORD[((192-128))+rbp]
923 mov edx,DWORD[((224-128))+rbp]
925 cmp ecx,128
926 je NEAR $L$10rounds
927 cmp ecx,192
928 je NEAR $L$12rounds
929 cmp ecx,256
930 je NEAR $L$14rounds
931 mov rax,-2
932 jmp NEAR $L$exit
934 $L$10rounds:
935 mov rax,QWORD[rsi]
936 mov rdx,QWORD[8+rsi]
937 mov QWORD[rdi],rax
938 mov QWORD[8+rdi],rdx
940 shr rdx,32
941 xor ecx,ecx
942 jmp NEAR $L$10shortcut
943 ALIGN 4
944 $L$10loop:
945 mov eax,DWORD[rdi]
946 mov edx,DWORD[12+rdi]
947 $L$10shortcut:
948 movzx esi,dl
949 movzx ebx,BYTE[((-128))+rsi*1+rbp]
950 movzx esi,dh
951 shl ebx,24
952 xor eax,ebx
954 movzx ebx,BYTE[((-128))+rsi*1+rbp]
955 shr edx,16
956 movzx esi,dl
957 xor eax,ebx
959 movzx ebx,BYTE[((-128))+rsi*1+rbp]
960 movzx esi,dh
961 shl ebx,8
962 xor eax,ebx
964 movzx ebx,BYTE[((-128))+rsi*1+rbp]
965 shl ebx,16
966 xor eax,ebx
968 xor eax,DWORD[((1024-128))+rcx*4+rbp]
969 mov DWORD[16+rdi],eax
970 xor eax,DWORD[4+rdi]
971 mov DWORD[20+rdi],eax
972 xor eax,DWORD[8+rdi]
973 mov DWORD[24+rdi],eax
974 xor eax,DWORD[12+rdi]
975 mov DWORD[28+rdi],eax
976 add ecx,1
977 lea rdi,[16+rdi]
978 cmp ecx,10
979 jl NEAR $L$10loop
981 mov DWORD[80+rdi],10
982 xor rax,rax
983 jmp NEAR $L$exit
985 $L$12rounds:
986 mov rax,QWORD[rsi]
987 mov rbx,QWORD[8+rsi]
988 mov rdx,QWORD[16+rsi]
989 mov QWORD[rdi],rax
990 mov QWORD[8+rdi],rbx
991 mov QWORD[16+rdi],rdx
993 shr rdx,32
994 xor ecx,ecx
995 jmp NEAR $L$12shortcut
996 ALIGN 4
997 $L$12loop:
998 mov eax,DWORD[rdi]
999 mov edx,DWORD[20+rdi]
1000 $L$12shortcut:
1001 movzx esi,dl
1002 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1003 movzx esi,dh
1004 shl ebx,24
1005 xor eax,ebx
1007 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1008 shr edx,16
1009 movzx esi,dl
1010 xor eax,ebx
1012 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1013 movzx esi,dh
1014 shl ebx,8
1015 xor eax,ebx
1017 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1018 shl ebx,16
1019 xor eax,ebx
1021 xor eax,DWORD[((1024-128))+rcx*4+rbp]
1022 mov DWORD[24+rdi],eax
1023 xor eax,DWORD[4+rdi]
1024 mov DWORD[28+rdi],eax
1025 xor eax,DWORD[8+rdi]
1026 mov DWORD[32+rdi],eax
1027 xor eax,DWORD[12+rdi]
1028 mov DWORD[36+rdi],eax
1030 cmp ecx,7
1031 je NEAR $L$12break
1032 add ecx,1
1034 xor eax,DWORD[16+rdi]
1035 mov DWORD[40+rdi],eax
1036 xor eax,DWORD[20+rdi]
1037 mov DWORD[44+rdi],eax
1039 lea rdi,[24+rdi]
1040 jmp NEAR $L$12loop
1041 $L$12break:
1042 mov DWORD[72+rdi],12
1043 xor rax,rax
1044 jmp NEAR $L$exit
1046 $L$14rounds:
1047 mov rax,QWORD[rsi]
1048 mov rbx,QWORD[8+rsi]
1049 mov rcx,QWORD[16+rsi]
1050 mov rdx,QWORD[24+rsi]
1051 mov QWORD[rdi],rax
1052 mov QWORD[8+rdi],rbx
1053 mov QWORD[16+rdi],rcx
1054 mov QWORD[24+rdi],rdx
1056 shr rdx,32
1057 xor ecx,ecx
1058 jmp NEAR $L$14shortcut
1059 ALIGN 4
1060 $L$14loop:
1061 mov eax,DWORD[rdi]
1062 mov edx,DWORD[28+rdi]
1063 $L$14shortcut:
1064 movzx esi,dl
1065 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1066 movzx esi,dh
1067 shl ebx,24
1068 xor eax,ebx
1070 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1071 shr edx,16
1072 movzx esi,dl
1073 xor eax,ebx
1075 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1076 movzx esi,dh
1077 shl ebx,8
1078 xor eax,ebx
1080 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1081 shl ebx,16
1082 xor eax,ebx
1084 xor eax,DWORD[((1024-128))+rcx*4+rbp]
1085 mov DWORD[32+rdi],eax
1086 xor eax,DWORD[4+rdi]
1087 mov DWORD[36+rdi],eax
1088 xor eax,DWORD[8+rdi]
1089 mov DWORD[40+rdi],eax
1090 xor eax,DWORD[12+rdi]
1091 mov DWORD[44+rdi],eax
1093 cmp ecx,6
1094 je NEAR $L$14break
1095 add ecx,1
1097 mov edx,eax
1098 mov eax,DWORD[16+rdi]
1099 movzx esi,dl
1100 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1101 movzx esi,dh
1102 xor eax,ebx
1104 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1105 shr edx,16
1106 shl ebx,8
1107 movzx esi,dl
1108 xor eax,ebx
1110 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1111 movzx esi,dh
1112 shl ebx,16
1113 xor eax,ebx
1115 movzx ebx,BYTE[((-128))+rsi*1+rbp]
1116 shl ebx,24
1117 xor eax,ebx
1119 mov DWORD[48+rdi],eax
1120 xor eax,DWORD[20+rdi]
1121 mov DWORD[52+rdi],eax
1122 xor eax,DWORD[24+rdi]
1123 mov DWORD[56+rdi],eax
1124 xor eax,DWORD[28+rdi]
1125 mov DWORD[60+rdi],eax
1127 lea rdi,[32+rdi]
1128 jmp NEAR $L$14loop
1129 $L$14break:
1130 mov DWORD[48+rdi],14
1131 xor rax,rax
1132 jmp NEAR $L$exit
1134 $L$badpointer:
1135 mov rax,-1
1136 $L$exit:
1137 DB 0xf3,0xc3
1139 ALIGN 16
1140 global asm_AES_set_decrypt_key
1142 asm_AES_set_decrypt_key:
1143 mov QWORD[8+rsp],rdi ;WIN64 prologue
1144 mov QWORD[16+rsp],rsi
1145 mov rax,rsp
1146 $L$SEH_begin_asm_AES_set_decrypt_key:
1147 mov rdi,rcx
1148 mov rsi,rdx
1149 mov rdx,r8
1152 push rbx
1153 push rbp
1154 push r12
1155 push r13
1156 push r14
1157 push r15
1158 push rdx
1159 $L$dec_key_prologue:
1161 call _x86_64_AES_set_encrypt_key
1162 mov r8,QWORD[rsp]
1163 cmp eax,0
1164 jne NEAR $L$abort
1166 mov r14d,DWORD[240+r8]
1167 xor rdi,rdi
1168 lea rcx,[r14*4+rdi]
1169 mov rsi,r8
1170 lea rdi,[rcx*4+r8]
1171 ALIGN 4
1172 $L$invert:
1173 mov rax,QWORD[rsi]
1174 mov rbx,QWORD[8+rsi]
1175 mov rcx,QWORD[rdi]
1176 mov rdx,QWORD[8+rdi]
1177 mov QWORD[rdi],rax
1178 mov QWORD[8+rdi],rbx
1179 mov QWORD[rsi],rcx
1180 mov QWORD[8+rsi],rdx
1181 lea rsi,[16+rsi]
1182 lea rdi,[((-16))+rdi]
1183 cmp rdi,rsi
1184 jne NEAR $L$invert
1186 lea rax,[(($L$AES_Te+2048+1024))]
1188 mov rsi,QWORD[40+rax]
1189 mov rdi,QWORD[48+rax]
1190 mov rbp,QWORD[56+rax]
1192 mov r15,r8
1193 sub r14d,1
1194 ALIGN 4
1195 $L$permute:
1196 lea r15,[16+r15]
1197 mov rax,QWORD[r15]
1198 mov rcx,QWORD[8+r15]
1199 mov r9,rsi
1200 mov r12,rsi
1201 and r9,rax
1202 and r12,rcx
1203 mov rbx,r9
1204 mov rdx,r12
1205 shr r9,7
1206 lea r8,[rax*1+rax]
1207 shr r12,7
1208 lea r11,[rcx*1+rcx]
1209 sub rbx,r9
1210 sub rdx,r12
1211 and r8,rdi
1212 and r11,rdi
1213 and rbx,rbp
1214 and rdx,rbp
1215 xor r8,rbx
1216 xor r11,rdx
1217 mov r10,rsi
1218 mov r13,rsi
1220 and r10,r8
1221 and r13,r11
1222 mov rbx,r10
1223 mov rdx,r13
1224 shr r10,7
1225 lea r9,[r8*1+r8]
1226 shr r13,7
1227 lea r12,[r11*1+r11]
1228 sub rbx,r10
1229 sub rdx,r13
1230 and r9,rdi
1231 and r12,rdi
1232 and rbx,rbp
1233 and rdx,rbp
1234 xor r9,rbx
1235 xor r12,rdx
1236 mov r10,rsi
1237 mov r13,rsi
1239 and r10,r9
1240 and r13,r12
1241 mov rbx,r10
1242 mov rdx,r13
1243 shr r10,7
1244 xor r8,rax
1245 shr r13,7
1246 xor r11,rcx
1247 sub rbx,r10
1248 sub rdx,r13
1249 lea r10,[r9*1+r9]
1250 lea r13,[r12*1+r12]
1251 xor r9,rax
1252 xor r12,rcx
1253 and r10,rdi
1254 and r13,rdi
1255 and rbx,rbp
1256 and rdx,rbp
1257 xor r10,rbx
1258 xor r13,rdx
1260 xor rax,r10
1261 xor rcx,r13
1262 xor r8,r10
1263 xor r11,r13
1264 mov rbx,rax
1265 mov rdx,rcx
1266 xor r9,r10
1267 shr rbx,32
1268 xor r12,r13
1269 shr rdx,32
1270 xor r10,r8
1271 rol eax,8
1272 xor r13,r11
1273 rol ecx,8
1274 xor r10,r9
1275 rol ebx,8
1276 xor r13,r12
1278 rol edx,8
1279 xor eax,r10d
1280 shr r10,32
1281 xor ecx,r13d
1282 shr r13,32
1283 xor ebx,r10d
1284 xor edx,r13d
1286 mov r10,r8
1287 rol r8d,24
1288 mov r13,r11
1289 rol r11d,24
1290 shr r10,32
1291 xor eax,r8d
1292 shr r13,32
1293 xor ecx,r11d
1294 rol r10d,24
1295 mov r8,r9
1296 rol r13d,24
1297 mov r11,r12
1298 shr r8,32
1299 xor ebx,r10d
1300 shr r11,32
1301 xor edx,r13d
1304 rol r9d,16
1306 rol r12d,16
1308 rol r8d,16
1310 xor eax,r9d
1311 rol r11d,16
1312 xor ecx,r12d
1314 xor ebx,r8d
1315 xor edx,r11d
1316 mov DWORD[r15],eax
1317 mov DWORD[4+r15],ebx
1318 mov DWORD[8+r15],ecx
1319 mov DWORD[12+r15],edx
1320 sub r14d,1
1321 jnz NEAR $L$permute
1323 xor rax,rax
1324 $L$abort:
1325 mov r15,QWORD[8+rsp]
1326 mov r14,QWORD[16+rsp]
1327 mov r13,QWORD[24+rsp]
1328 mov r12,QWORD[32+rsp]
1329 mov rbp,QWORD[40+rsp]
1330 mov rbx,QWORD[48+rsp]
1331 add rsp,56
1332 $L$dec_key_epilogue:
1333 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1334 mov rsi,QWORD[16+rsp]
1335 DB 0F3h,0C3h ;repret
1336 $L$SEH_end_asm_AES_set_decrypt_key:
1337 ALIGN 16
1338 global asm_AES_cbc_encrypt
1340 EXTERN OPENSSL_ia32cap_P
1342 asm_AES_cbc_encrypt:
1343 mov QWORD[8+rsp],rdi ;WIN64 prologue
1344 mov QWORD[16+rsp],rsi
1345 mov rax,rsp
1346 $L$SEH_begin_asm_AES_cbc_encrypt:
1347 mov rdi,rcx
1348 mov rsi,rdx
1349 mov rdx,r8
1350 mov rcx,r9
1351 mov r8,QWORD[40+rsp]
1352 mov r9,QWORD[48+rsp]
1355 cmp rdx,0
1356 je NEAR $L$cbc_epilogue
1357 pushfq
1358 push rbx
1359 push rbp
1360 push r12
1361 push r13
1362 push r14
1363 push r15
1364 $L$cbc_prologue:
1367 mov r9d,r9d
1369 lea r14,[$L$AES_Te]
1370 cmp r9,0
1371 jne NEAR $L$cbc_picked_te
1372 lea r14,[$L$AES_Td]
1373 $L$cbc_picked_te:
1375 mov r10d,DWORD[OPENSSL_ia32cap_P]
1376 cmp rdx,512
1377 jb NEAR $L$cbc_slow_prologue
1378 test rdx,15
1379 jnz NEAR $L$cbc_slow_prologue
1380 bt r10d,28
1381 jc NEAR $L$cbc_slow_prologue
1384 lea r15,[((-88-248))+rsp]
1385 and r15,-64
1388 mov r10,r14
1389 lea r11,[2304+r14]
1390 mov r12,r15
1391 and r10,0xFFF
1392 and r11,0xFFF
1393 and r12,0xFFF
1395 cmp r12,r11
1396 jb NEAR $L$cbc_te_break_out
1397 sub r12,r11
1398 sub r15,r12
1399 jmp NEAR $L$cbc_te_ok
1400 $L$cbc_te_break_out:
1401 sub r12,r10
1402 and r12,0xFFF
1403 add r12,320
1404 sub r15,r12
1405 ALIGN 4
1406 $L$cbc_te_ok:
1408 xchg r15,rsp
1410 mov QWORD[16+rsp],r15
1411 $L$cbc_fast_body:
1412 mov QWORD[24+rsp],rdi
1413 mov QWORD[32+rsp],rsi
1414 mov QWORD[40+rsp],rdx
1415 mov QWORD[48+rsp],rcx
1416 mov QWORD[56+rsp],r8
1417 mov DWORD[((80+240))+rsp],0
1418 mov rbp,r8
1419 mov rbx,r9
1420 mov r9,rsi
1421 mov r8,rdi
1422 mov r15,rcx
1424 mov eax,DWORD[240+r15]
1426 mov r10,r15
1427 sub r10,r14
1428 and r10,0xfff
1429 cmp r10,2304
1430 jb NEAR $L$cbc_do_ecopy
1431 cmp r10,4096-248
1432 jb NEAR $L$cbc_skip_ecopy
1433 ALIGN 4
1434 $L$cbc_do_ecopy:
1435 mov rsi,r15
1436 lea rdi,[80+rsp]
1437 lea r15,[80+rsp]
1438 mov ecx,240/8
1439 DD 0x90A548F3
1440 mov DWORD[rdi],eax
1441 $L$cbc_skip_ecopy:
1442 mov QWORD[rsp],r15
1444 mov ecx,18
1445 ALIGN 4
1446 $L$cbc_prefetch_te:
1447 mov r10,QWORD[r14]
1448 mov r11,QWORD[32+r14]
1449 mov r12,QWORD[64+r14]
1450 mov r13,QWORD[96+r14]
1451 lea r14,[128+r14]
1452 sub ecx,1
1453 jnz NEAR $L$cbc_prefetch_te
1454 lea r14,[((-2304))+r14]
1456 cmp rbx,0
1457 je NEAR $L$FAST_DECRYPT
1460 mov eax,DWORD[rbp]
1461 mov ebx,DWORD[4+rbp]
1462 mov ecx,DWORD[8+rbp]
1463 mov edx,DWORD[12+rbp]
1465 ALIGN 4
1466 $L$cbc_fast_enc_loop:
1467 xor eax,DWORD[r8]
1468 xor ebx,DWORD[4+r8]
1469 xor ecx,DWORD[8+r8]
1470 xor edx,DWORD[12+r8]
1471 mov r15,QWORD[rsp]
1472 mov QWORD[24+rsp],r8
1474 call _x86_64_AES_encrypt
1476 mov r8,QWORD[24+rsp]
1477 mov r10,QWORD[40+rsp]
1478 mov DWORD[r9],eax
1479 mov DWORD[4+r9],ebx
1480 mov DWORD[8+r9],ecx
1481 mov DWORD[12+r9],edx
1483 lea r8,[16+r8]
1484 lea r9,[16+r9]
1485 sub r10,16
1486 test r10,-16
1487 mov QWORD[40+rsp],r10
1488 jnz NEAR $L$cbc_fast_enc_loop
1489 mov rbp,QWORD[56+rsp]
1490 mov DWORD[rbp],eax
1491 mov DWORD[4+rbp],ebx
1492 mov DWORD[8+rbp],ecx
1493 mov DWORD[12+rbp],edx
1495 jmp NEAR $L$cbc_fast_cleanup
1498 ALIGN 16
1499 $L$FAST_DECRYPT:
1500 cmp r9,r8
1501 je NEAR $L$cbc_fast_dec_in_place
1503 mov QWORD[64+rsp],rbp
1504 ALIGN 4
1505 $L$cbc_fast_dec_loop:
1506 mov eax,DWORD[r8]
1507 mov ebx,DWORD[4+r8]
1508 mov ecx,DWORD[8+r8]
1509 mov edx,DWORD[12+r8]
1510 mov r15,QWORD[rsp]
1511 mov QWORD[24+rsp],r8
1513 call _x86_64_AES_decrypt
1515 mov rbp,QWORD[64+rsp]
1516 mov r8,QWORD[24+rsp]
1517 mov r10,QWORD[40+rsp]
1518 xor eax,DWORD[rbp]
1519 xor ebx,DWORD[4+rbp]
1520 xor ecx,DWORD[8+rbp]
1521 xor edx,DWORD[12+rbp]
1522 mov rbp,r8
1524 sub r10,16
1525 mov QWORD[40+rsp],r10
1526 mov QWORD[64+rsp],rbp
1528 mov DWORD[r9],eax
1529 mov DWORD[4+r9],ebx
1530 mov DWORD[8+r9],ecx
1531 mov DWORD[12+r9],edx
1533 lea r8,[16+r8]
1534 lea r9,[16+r9]
1535 jnz NEAR $L$cbc_fast_dec_loop
1536 mov r12,QWORD[56+rsp]
1537 mov r10,QWORD[rbp]
1538 mov r11,QWORD[8+rbp]
1539 mov QWORD[r12],r10
1540 mov QWORD[8+r12],r11
1541 jmp NEAR $L$cbc_fast_cleanup
1543 ALIGN 16
1544 $L$cbc_fast_dec_in_place:
1545 mov r10,QWORD[rbp]
1546 mov r11,QWORD[8+rbp]
1547 mov QWORD[((0+64))+rsp],r10
1548 mov QWORD[((8+64))+rsp],r11
1549 ALIGN 4
1550 $L$cbc_fast_dec_in_place_loop:
1551 mov eax,DWORD[r8]
1552 mov ebx,DWORD[4+r8]
1553 mov ecx,DWORD[8+r8]
1554 mov edx,DWORD[12+r8]
1555 mov r15,QWORD[rsp]
1556 mov QWORD[24+rsp],r8
1558 call _x86_64_AES_decrypt
1560 mov r8,QWORD[24+rsp]
1561 mov r10,QWORD[40+rsp]
1562 xor eax,DWORD[((0+64))+rsp]
1563 xor ebx,DWORD[((4+64))+rsp]
1564 xor ecx,DWORD[((8+64))+rsp]
1565 xor edx,DWORD[((12+64))+rsp]
1567 mov r11,QWORD[r8]
1568 mov r12,QWORD[8+r8]
1569 sub r10,16
1570 jz NEAR $L$cbc_fast_dec_in_place_done
1572 mov QWORD[((0+64))+rsp],r11
1573 mov QWORD[((8+64))+rsp],r12
1575 mov DWORD[r9],eax
1576 mov DWORD[4+r9],ebx
1577 mov DWORD[8+r9],ecx
1578 mov DWORD[12+r9],edx
1580 lea r8,[16+r8]
1581 lea r9,[16+r9]
1582 mov QWORD[40+rsp],r10
1583 jmp NEAR $L$cbc_fast_dec_in_place_loop
1584 $L$cbc_fast_dec_in_place_done:
1585 mov rdi,QWORD[56+rsp]
1586 mov QWORD[rdi],r11
1587 mov QWORD[8+rdi],r12
1589 mov DWORD[r9],eax
1590 mov DWORD[4+r9],ebx
1591 mov DWORD[8+r9],ecx
1592 mov DWORD[12+r9],edx
1594 ALIGN 4
1595 $L$cbc_fast_cleanup:
1596 cmp DWORD[((80+240))+rsp],0
1597 lea rdi,[80+rsp]
1598 je NEAR $L$cbc_exit
1599 mov ecx,240/8
1600 xor rax,rax
1601 DD 0x90AB48F3
1603 jmp NEAR $L$cbc_exit
1606 ALIGN 16
1607 $L$cbc_slow_prologue:
1609 lea rbp,[((-88))+rsp]
1610 and rbp,-64
1612 lea r10,[((-88-63))+rcx]
1613 sub r10,rbp
1614 neg r10
1615 and r10,0x3c0
1616 sub rbp,r10
1618 xchg rbp,rsp
1620 mov QWORD[16+rsp],rbp
1621 $L$cbc_slow_body:
1626 mov QWORD[56+rsp],r8
1627 mov rbp,r8
1628 mov rbx,r9
1629 mov r9,rsi
1630 mov r8,rdi
1631 mov r15,rcx
1632 mov r10,rdx
1634 mov eax,DWORD[240+r15]
1635 mov QWORD[rsp],r15
1636 shl eax,4
1637 lea rax,[rax*1+r15]
1638 mov QWORD[8+rsp],rax
1641 lea r14,[2048+r14]
1642 lea rax,[((768-8))+rsp]
1643 sub rax,r14
1644 and rax,0x300
1645 lea r14,[rax*1+r14]
1647 cmp rbx,0
1648 je NEAR $L$SLOW_DECRYPT
1651 test r10,-16
1652 mov eax,DWORD[rbp]
1653 mov ebx,DWORD[4+rbp]
1654 mov ecx,DWORD[8+rbp]
1655 mov edx,DWORD[12+rbp]
1656 jz NEAR $L$cbc_slow_enc_tail
1658 ALIGN 4
1659 $L$cbc_slow_enc_loop:
1660 xor eax,DWORD[r8]
1661 xor ebx,DWORD[4+r8]
1662 xor ecx,DWORD[8+r8]
1663 xor edx,DWORD[12+r8]
1664 mov r15,QWORD[rsp]
1665 mov QWORD[24+rsp],r8
1666 mov QWORD[32+rsp],r9
1667 mov QWORD[40+rsp],r10
1669 call _x86_64_AES_encrypt_compact
1671 mov r8,QWORD[24+rsp]
1672 mov r9,QWORD[32+rsp]
1673 mov r10,QWORD[40+rsp]
1674 mov DWORD[r9],eax
1675 mov DWORD[4+r9],ebx
1676 mov DWORD[8+r9],ecx
1677 mov DWORD[12+r9],edx
1679 lea r8,[16+r8]
1680 lea r9,[16+r9]
1681 sub r10,16
1682 test r10,-16
1683 jnz NEAR $L$cbc_slow_enc_loop
1684 test r10,15
1685 jnz NEAR $L$cbc_slow_enc_tail
1686 mov rbp,QWORD[56+rsp]
1687 mov DWORD[rbp],eax
1688 mov DWORD[4+rbp],ebx
1689 mov DWORD[8+rbp],ecx
1690 mov DWORD[12+rbp],edx
1692 jmp NEAR $L$cbc_exit
1694 ALIGN 4
1695 $L$cbc_slow_enc_tail:
1696 mov r11,rax
1697 mov r12,rcx
1698 mov rcx,r10
1699 mov rsi,r8
1700 mov rdi,r9
1701 DD 0x9066A4F3
1702 mov rcx,16
1703 sub rcx,r10
1704 xor rax,rax
1705 DD 0x9066AAF3
1706 mov r8,r9
1707 mov r10,16
1708 mov rax,r11
1709 mov rcx,r12
1710 jmp NEAR $L$cbc_slow_enc_loop
1712 ALIGN 16
1713 $L$SLOW_DECRYPT:
1714 shr rax,3
1715 add r14,rax
1717 mov r11,QWORD[rbp]
1718 mov r12,QWORD[8+rbp]
1719 mov QWORD[((0+64))+rsp],r11
1720 mov QWORD[((8+64))+rsp],r12
1722 ALIGN 4
1723 $L$cbc_slow_dec_loop:
1724 mov eax,DWORD[r8]
1725 mov ebx,DWORD[4+r8]
1726 mov ecx,DWORD[8+r8]
1727 mov edx,DWORD[12+r8]
1728 mov r15,QWORD[rsp]
1729 mov QWORD[24+rsp],r8
1730 mov QWORD[32+rsp],r9
1731 mov QWORD[40+rsp],r10
1733 call _x86_64_AES_decrypt_compact
1735 mov r8,QWORD[24+rsp]
1736 mov r9,QWORD[32+rsp]
1737 mov r10,QWORD[40+rsp]
1738 xor eax,DWORD[((0+64))+rsp]
1739 xor ebx,DWORD[((4+64))+rsp]
1740 xor ecx,DWORD[((8+64))+rsp]
1741 xor edx,DWORD[((12+64))+rsp]
1743 mov r11,QWORD[r8]
1744 mov r12,QWORD[8+r8]
1745 sub r10,16
1746 jc NEAR $L$cbc_slow_dec_partial
1747 jz NEAR $L$cbc_slow_dec_done
1749 mov QWORD[((0+64))+rsp],r11
1750 mov QWORD[((8+64))+rsp],r12
1752 mov DWORD[r9],eax
1753 mov DWORD[4+r9],ebx
1754 mov DWORD[8+r9],ecx
1755 mov DWORD[12+r9],edx
1757 lea r8,[16+r8]
1758 lea r9,[16+r9]
1759 jmp NEAR $L$cbc_slow_dec_loop
1760 $L$cbc_slow_dec_done:
1761 mov rdi,QWORD[56+rsp]
1762 mov QWORD[rdi],r11
1763 mov QWORD[8+rdi],r12
1765 mov DWORD[r9],eax
1766 mov DWORD[4+r9],ebx
1767 mov DWORD[8+r9],ecx
1768 mov DWORD[12+r9],edx
1770 jmp NEAR $L$cbc_exit
1772 ALIGN 4
1773 $L$cbc_slow_dec_partial:
1774 mov rdi,QWORD[56+rsp]
1775 mov QWORD[rdi],r11
1776 mov QWORD[8+rdi],r12
1778 mov DWORD[((0+64))+rsp],eax
1779 mov DWORD[((4+64))+rsp],ebx
1780 mov DWORD[((8+64))+rsp],ecx
1781 mov DWORD[((12+64))+rsp],edx
1783 mov rdi,r9
1784 lea rsi,[64+rsp]
1785 lea rcx,[16+r10]
1786 DD 0x9066A4F3
1787 jmp NEAR $L$cbc_exit
1789 ALIGN 16
1790 $L$cbc_exit:
1791 mov rsi,QWORD[16+rsp]
1792 mov r15,QWORD[rsi]
1793 mov r14,QWORD[8+rsi]
1794 mov r13,QWORD[16+rsi]
1795 mov r12,QWORD[24+rsi]
1796 mov rbp,QWORD[32+rsi]
1797 mov rbx,QWORD[40+rsi]
1798 lea rsp,[48+rsi]
1799 $L$cbc_popfq:
1800 popfq
1801 $L$cbc_epilogue:
1802 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1803 mov rsi,QWORD[16+rsp]
1804 DB 0F3h,0C3h ;repret
1805 $L$SEH_end_asm_AES_cbc_encrypt:
1806 ALIGN 64
1807 $L$AES_Te:
1808 DD 0xa56363c6,0xa56363c6
1809 DD 0x847c7cf8,0x847c7cf8
1810 DD 0x997777ee,0x997777ee
1811 DD 0x8d7b7bf6,0x8d7b7bf6
1812 DD 0x0df2f2ff,0x0df2f2ff
1813 DD 0xbd6b6bd6,0xbd6b6bd6
1814 DD 0xb16f6fde,0xb16f6fde
1815 DD 0x54c5c591,0x54c5c591
1816 DD 0x50303060,0x50303060
1817 DD 0x03010102,0x03010102
1818 DD 0xa96767ce,0xa96767ce
1819 DD 0x7d2b2b56,0x7d2b2b56
1820 DD 0x19fefee7,0x19fefee7
1821 DD 0x62d7d7b5,0x62d7d7b5
1822 DD 0xe6abab4d,0xe6abab4d
1823 DD 0x9a7676ec,0x9a7676ec
1824 DD 0x45caca8f,0x45caca8f
1825 DD 0x9d82821f,0x9d82821f
1826 DD 0x40c9c989,0x40c9c989
1827 DD 0x877d7dfa,0x877d7dfa
1828 DD 0x15fafaef,0x15fafaef
1829 DD 0xeb5959b2,0xeb5959b2
1830 DD 0xc947478e,0xc947478e
1831 DD 0x0bf0f0fb,0x0bf0f0fb
1832 DD 0xecadad41,0xecadad41
1833 DD 0x67d4d4b3,0x67d4d4b3
1834 DD 0xfda2a25f,0xfda2a25f
1835 DD 0xeaafaf45,0xeaafaf45
1836 DD 0xbf9c9c23,0xbf9c9c23
1837 DD 0xf7a4a453,0xf7a4a453
1838 DD 0x967272e4,0x967272e4
1839 DD 0x5bc0c09b,0x5bc0c09b
1840 DD 0xc2b7b775,0xc2b7b775
1841 DD 0x1cfdfde1,0x1cfdfde1
1842 DD 0xae93933d,0xae93933d
1843 DD 0x6a26264c,0x6a26264c
1844 DD 0x5a36366c,0x5a36366c
1845 DD 0x413f3f7e,0x413f3f7e
1846 DD 0x02f7f7f5,0x02f7f7f5
1847 DD 0x4fcccc83,0x4fcccc83
1848 DD 0x5c343468,0x5c343468
1849 DD 0xf4a5a551,0xf4a5a551
1850 DD 0x34e5e5d1,0x34e5e5d1
1851 DD 0x08f1f1f9,0x08f1f1f9
1852 DD 0x937171e2,0x937171e2
1853 DD 0x73d8d8ab,0x73d8d8ab
1854 DD 0x53313162,0x53313162
1855 DD 0x3f15152a,0x3f15152a
1856 DD 0x0c040408,0x0c040408
1857 DD 0x52c7c795,0x52c7c795
1858 DD 0x65232346,0x65232346
1859 DD 0x5ec3c39d,0x5ec3c39d
1860 DD 0x28181830,0x28181830
1861 DD 0xa1969637,0xa1969637
1862 DD 0x0f05050a,0x0f05050a
1863 DD 0xb59a9a2f,0xb59a9a2f
1864 DD 0x0907070e,0x0907070e
1865 DD 0x36121224,0x36121224
1866 DD 0x9b80801b,0x9b80801b
1867 DD 0x3de2e2df,0x3de2e2df
1868 DD 0x26ebebcd,0x26ebebcd
1869 DD 0x6927274e,0x6927274e
1870 DD 0xcdb2b27f,0xcdb2b27f
1871 DD 0x9f7575ea,0x9f7575ea
1872 DD 0x1b090912,0x1b090912
1873 DD 0x9e83831d,0x9e83831d
1874 DD 0x742c2c58,0x742c2c58
1875 DD 0x2e1a1a34,0x2e1a1a34
1876 DD 0x2d1b1b36,0x2d1b1b36
1877 DD 0xb26e6edc,0xb26e6edc
1878 DD 0xee5a5ab4,0xee5a5ab4
1879 DD 0xfba0a05b,0xfba0a05b
1880 DD 0xf65252a4,0xf65252a4
1881 DD 0x4d3b3b76,0x4d3b3b76
1882 DD 0x61d6d6b7,0x61d6d6b7
1883 DD 0xceb3b37d,0xceb3b37d
1884 DD 0x7b292952,0x7b292952
1885 DD 0x3ee3e3dd,0x3ee3e3dd
1886 DD 0x712f2f5e,0x712f2f5e
1887 DD 0x97848413,0x97848413
1888 DD 0xf55353a6,0xf55353a6
1889 DD 0x68d1d1b9,0x68d1d1b9
1890 DD 0x00000000,0x00000000
1891 DD 0x2cededc1,0x2cededc1
1892 DD 0x60202040,0x60202040
1893 DD 0x1ffcfce3,0x1ffcfce3
1894 DD 0xc8b1b179,0xc8b1b179
1895 DD 0xed5b5bb6,0xed5b5bb6
1896 DD 0xbe6a6ad4,0xbe6a6ad4
1897 DD 0x46cbcb8d,0x46cbcb8d
1898 DD 0xd9bebe67,0xd9bebe67
1899 DD 0x4b393972,0x4b393972
1900 DD 0xde4a4a94,0xde4a4a94
1901 DD 0xd44c4c98,0xd44c4c98
1902 DD 0xe85858b0,0xe85858b0
1903 DD 0x4acfcf85,0x4acfcf85
1904 DD 0x6bd0d0bb,0x6bd0d0bb
1905 DD 0x2aefefc5,0x2aefefc5
1906 DD 0xe5aaaa4f,0xe5aaaa4f
1907 DD 0x16fbfbed,0x16fbfbed
1908 DD 0xc5434386,0xc5434386
1909 DD 0xd74d4d9a,0xd74d4d9a
1910 DD 0x55333366,0x55333366
1911 DD 0x94858511,0x94858511
1912 DD 0xcf45458a,0xcf45458a
1913 DD 0x10f9f9e9,0x10f9f9e9
1914 DD 0x06020204,0x06020204
1915 DD 0x817f7ffe,0x817f7ffe
1916 DD 0xf05050a0,0xf05050a0
1917 DD 0x443c3c78,0x443c3c78
1918 DD 0xba9f9f25,0xba9f9f25
1919 DD 0xe3a8a84b,0xe3a8a84b
1920 DD 0xf35151a2,0xf35151a2
1921 DD 0xfea3a35d,0xfea3a35d
1922 DD 0xc0404080,0xc0404080
1923 DD 0x8a8f8f05,0x8a8f8f05
1924 DD 0xad92923f,0xad92923f
1925 DD 0xbc9d9d21,0xbc9d9d21
1926 DD 0x48383870,0x48383870
1927 DD 0x04f5f5f1,0x04f5f5f1
1928 DD 0xdfbcbc63,0xdfbcbc63
1929 DD 0xc1b6b677,0xc1b6b677
1930 DD 0x75dadaaf,0x75dadaaf
1931 DD 0x63212142,0x63212142
1932 DD 0x30101020,0x30101020
1933 DD 0x1affffe5,0x1affffe5
1934 DD 0x0ef3f3fd,0x0ef3f3fd
1935 DD 0x6dd2d2bf,0x6dd2d2bf
1936 DD 0x4ccdcd81,0x4ccdcd81
1937 DD 0x140c0c18,0x140c0c18
1938 DD 0x35131326,0x35131326
1939 DD 0x2fececc3,0x2fececc3
1940 DD 0xe15f5fbe,0xe15f5fbe
1941 DD 0xa2979735,0xa2979735
1942 DD 0xcc444488,0xcc444488
1943 DD 0x3917172e,0x3917172e
1944 DD 0x57c4c493,0x57c4c493
1945 DD 0xf2a7a755,0xf2a7a755
1946 DD 0x827e7efc,0x827e7efc
1947 DD 0x473d3d7a,0x473d3d7a
1948 DD 0xac6464c8,0xac6464c8
1949 DD 0xe75d5dba,0xe75d5dba
1950 DD 0x2b191932,0x2b191932
1951 DD 0x957373e6,0x957373e6
1952 DD 0xa06060c0,0xa06060c0
1953 DD 0x98818119,0x98818119
1954 DD 0xd14f4f9e,0xd14f4f9e
1955 DD 0x7fdcdca3,0x7fdcdca3
1956 DD 0x66222244,0x66222244
1957 DD 0x7e2a2a54,0x7e2a2a54
1958 DD 0xab90903b,0xab90903b
1959 DD 0x8388880b,0x8388880b
1960 DD 0xca46468c,0xca46468c
1961 DD 0x29eeeec7,0x29eeeec7
1962 DD 0xd3b8b86b,0xd3b8b86b
1963 DD 0x3c141428,0x3c141428
1964 DD 0x79dedea7,0x79dedea7
1965 DD 0xe25e5ebc,0xe25e5ebc
1966 DD 0x1d0b0b16,0x1d0b0b16
1967 DD 0x76dbdbad,0x76dbdbad
1968 DD 0x3be0e0db,0x3be0e0db
1969 DD 0x56323264,0x56323264
1970 DD 0x4e3a3a74,0x4e3a3a74
1971 DD 0x1e0a0a14,0x1e0a0a14
1972 DD 0xdb494992,0xdb494992
1973 DD 0x0a06060c,0x0a06060c
1974 DD 0x6c242448,0x6c242448
1975 DD 0xe45c5cb8,0xe45c5cb8
1976 DD 0x5dc2c29f,0x5dc2c29f
1977 DD 0x6ed3d3bd,0x6ed3d3bd
1978 DD 0xefacac43,0xefacac43
1979 DD 0xa66262c4,0xa66262c4
1980 DD 0xa8919139,0xa8919139
1981 DD 0xa4959531,0xa4959531
1982 DD 0x37e4e4d3,0x37e4e4d3
1983 DD 0x8b7979f2,0x8b7979f2
1984 DD 0x32e7e7d5,0x32e7e7d5
1985 DD 0x43c8c88b,0x43c8c88b
1986 DD 0x5937376e,0x5937376e
1987 DD 0xb76d6dda,0xb76d6dda
1988 DD 0x8c8d8d01,0x8c8d8d01
1989 DD 0x64d5d5b1,0x64d5d5b1
1990 DD 0xd24e4e9c,0xd24e4e9c
1991 DD 0xe0a9a949,0xe0a9a949
1992 DD 0xb46c6cd8,0xb46c6cd8
1993 DD 0xfa5656ac,0xfa5656ac
1994 DD 0x07f4f4f3,0x07f4f4f3
1995 DD 0x25eaeacf,0x25eaeacf
1996 DD 0xaf6565ca,0xaf6565ca
1997 DD 0x8e7a7af4,0x8e7a7af4
1998 DD 0xe9aeae47,0xe9aeae47
1999 DD 0x18080810,0x18080810
2000 DD 0xd5baba6f,0xd5baba6f
2001 DD 0x887878f0,0x887878f0
2002 DD 0x6f25254a,0x6f25254a
2003 DD 0x722e2e5c,0x722e2e5c
2004 DD 0x241c1c38,0x241c1c38
2005 DD 0xf1a6a657,0xf1a6a657
2006 DD 0xc7b4b473,0xc7b4b473
2007 DD 0x51c6c697,0x51c6c697
2008 DD 0x23e8e8cb,0x23e8e8cb
2009 DD 0x7cdddda1,0x7cdddda1
2010 DD 0x9c7474e8,0x9c7474e8
2011 DD 0x211f1f3e,0x211f1f3e
2012 DD 0xdd4b4b96,0xdd4b4b96
2013 DD 0xdcbdbd61,0xdcbdbd61
2014 DD 0x868b8b0d,0x868b8b0d
2015 DD 0x858a8a0f,0x858a8a0f
2016 DD 0x907070e0,0x907070e0
2017 DD 0x423e3e7c,0x423e3e7c
2018 DD 0xc4b5b571,0xc4b5b571
2019 DD 0xaa6666cc,0xaa6666cc
2020 DD 0xd8484890,0xd8484890
2021 DD 0x05030306,0x05030306
2022 DD 0x01f6f6f7,0x01f6f6f7
2023 DD 0x120e0e1c,0x120e0e1c
2024 DD 0xa36161c2,0xa36161c2
2025 DD 0x5f35356a,0x5f35356a
2026 DD 0xf95757ae,0xf95757ae
2027 DD 0xd0b9b969,0xd0b9b969
2028 DD 0x91868617,0x91868617
2029 DD 0x58c1c199,0x58c1c199
2030 DD 0x271d1d3a,0x271d1d3a
2031 DD 0xb99e9e27,0xb99e9e27
2032 DD 0x38e1e1d9,0x38e1e1d9
2033 DD 0x13f8f8eb,0x13f8f8eb
2034 DD 0xb398982b,0xb398982b
2035 DD 0x33111122,0x33111122
2036 DD 0xbb6969d2,0xbb6969d2
2037 DD 0x70d9d9a9,0x70d9d9a9
2038 DD 0x898e8e07,0x898e8e07
2039 DD 0xa7949433,0xa7949433
2040 DD 0xb69b9b2d,0xb69b9b2d
2041 DD 0x221e1e3c,0x221e1e3c
2042 DD 0x92878715,0x92878715
2043 DD 0x20e9e9c9,0x20e9e9c9
2044 DD 0x49cece87,0x49cece87
2045 DD 0xff5555aa,0xff5555aa
2046 DD 0x78282850,0x78282850
2047 DD 0x7adfdfa5,0x7adfdfa5
2048 DD 0x8f8c8c03,0x8f8c8c03
2049 DD 0xf8a1a159,0xf8a1a159
2050 DD 0x80898909,0x80898909
2051 DD 0x170d0d1a,0x170d0d1a
2052 DD 0xdabfbf65,0xdabfbf65
2053 DD 0x31e6e6d7,0x31e6e6d7
2054 DD 0xc6424284,0xc6424284
2055 DD 0xb86868d0,0xb86868d0
2056 DD 0xc3414182,0xc3414182
2057 DD 0xb0999929,0xb0999929
2058 DD 0x772d2d5a,0x772d2d5a
2059 DD 0x110f0f1e,0x110f0f1e
2060 DD 0xcbb0b07b,0xcbb0b07b
2061 DD 0xfc5454a8,0xfc5454a8
2062 DD 0xd6bbbb6d,0xd6bbbb6d
2063 DD 0x3a16162c,0x3a16162c
2064 DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2065 DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2066 DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2067 DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2068 DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2069 DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2070 DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2071 DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2072 DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2073 DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2074 DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2075 DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2076 DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2077 DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2078 DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2079 DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2080 DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2081 DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2082 DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2083 DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2084 DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2085 DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2086 DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2087 DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2088 DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2089 DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2090 DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2091 DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2092 DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2093 DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2094 DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2095 DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2096 DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2097 DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2098 DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2099 DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2100 DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2101 DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2102 DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2103 DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2104 DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2105 DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2106 DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2107 DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2108 DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2109 DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2110 DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2111 DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2112 DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2113 DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2114 DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2115 DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2116 DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2117 DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2118 DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2119 DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2120 DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2121 DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2122 DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2123 DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2124 DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2125 DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2126 DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2127 DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2128 DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2129 DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2130 DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2131 DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2132 DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2133 DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2134 DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2135 DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2136 DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2137 DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2138 DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2139 DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2140 DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2141 DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2142 DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2143 DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2144 DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2145 DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2146 DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2147 DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2148 DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2149 DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2150 DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2151 DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2152 DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2153 DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2154 DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2155 DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2156 DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2157 DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2158 DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2159 DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2160 DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2161 DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2162 DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2163 DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2164 DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2165 DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2166 DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2167 DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2168 DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2169 DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2170 DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2171 DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2172 DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2173 DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2174 DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2175 DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2176 DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2177 DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2178 DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2179 DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2180 DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2181 DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2182 DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2183 DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2184 DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2185 DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2186 DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2187 DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2188 DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2189 DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2190 DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2191 DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2192 DD 0x00000001,0x00000002,0x00000004,0x00000008
2193 DD 0x00000010,0x00000020,0x00000040,0x00000080
2194 DD 0x0000001b,0x00000036,0x80808080,0x80808080
2195 DD 0xfefefefe,0xfefefefe,0x1b1b1b1b,0x1b1b1b1b
2196 ALIGN 64
2197 $L$AES_Td:
2198 DD 0x50a7f451,0x50a7f451
2199 DD 0x5365417e,0x5365417e
2200 DD 0xc3a4171a,0xc3a4171a
2201 DD 0x965e273a,0x965e273a
2202 DD 0xcb6bab3b,0xcb6bab3b
2203 DD 0xf1459d1f,0xf1459d1f
2204 DD 0xab58faac,0xab58faac
2205 DD 0x9303e34b,0x9303e34b
2206 DD 0x55fa3020,0x55fa3020
2207 DD 0xf66d76ad,0xf66d76ad
2208 DD 0x9176cc88,0x9176cc88
2209 DD 0x254c02f5,0x254c02f5
2210 DD 0xfcd7e54f,0xfcd7e54f
2211 DD 0xd7cb2ac5,0xd7cb2ac5
2212 DD 0x80443526,0x80443526
2213 DD 0x8fa362b5,0x8fa362b5
2214 DD 0x495ab1de,0x495ab1de
2215 DD 0x671bba25,0x671bba25
2216 DD 0x980eea45,0x980eea45
2217 DD 0xe1c0fe5d,0xe1c0fe5d
2218 DD 0x02752fc3,0x02752fc3
2219 DD 0x12f04c81,0x12f04c81
2220 DD 0xa397468d,0xa397468d
2221 DD 0xc6f9d36b,0xc6f9d36b
2222 DD 0xe75f8f03,0xe75f8f03
2223 DD 0x959c9215,0x959c9215
2224 DD 0xeb7a6dbf,0xeb7a6dbf
2225 DD 0xda595295,0xda595295
2226 DD 0x2d83bed4,0x2d83bed4
2227 DD 0xd3217458,0xd3217458
2228 DD 0x2969e049,0x2969e049
2229 DD 0x44c8c98e,0x44c8c98e
2230 DD 0x6a89c275,0x6a89c275
2231 DD 0x78798ef4,0x78798ef4
2232 DD 0x6b3e5899,0x6b3e5899
2233 DD 0xdd71b927,0xdd71b927
2234 DD 0xb64fe1be,0xb64fe1be
2235 DD 0x17ad88f0,0x17ad88f0
2236 DD 0x66ac20c9,0x66ac20c9
2237 DD 0xb43ace7d,0xb43ace7d
2238 DD 0x184adf63,0x184adf63
2239 DD 0x82311ae5,0x82311ae5
2240 DD 0x60335197,0x60335197
2241 DD 0x457f5362,0x457f5362
2242 DD 0xe07764b1,0xe07764b1
2243 DD 0x84ae6bbb,0x84ae6bbb
2244 DD 0x1ca081fe,0x1ca081fe
2245 DD 0x942b08f9,0x942b08f9
2246 DD 0x58684870,0x58684870
2247 DD 0x19fd458f,0x19fd458f
2248 DD 0x876cde94,0x876cde94
2249 DD 0xb7f87b52,0xb7f87b52
2250 DD 0x23d373ab,0x23d373ab
2251 DD 0xe2024b72,0xe2024b72
2252 DD 0x578f1fe3,0x578f1fe3
2253 DD 0x2aab5566,0x2aab5566
2254 DD 0x0728ebb2,0x0728ebb2
2255 DD 0x03c2b52f,0x03c2b52f
2256 DD 0x9a7bc586,0x9a7bc586
2257 DD 0xa50837d3,0xa50837d3
2258 DD 0xf2872830,0xf2872830
2259 DD 0xb2a5bf23,0xb2a5bf23
2260 DD 0xba6a0302,0xba6a0302
2261 DD 0x5c8216ed,0x5c8216ed
2262 DD 0x2b1ccf8a,0x2b1ccf8a
2263 DD 0x92b479a7,0x92b479a7
2264 DD 0xf0f207f3,0xf0f207f3
2265 DD 0xa1e2694e,0xa1e2694e
2266 DD 0xcdf4da65,0xcdf4da65
2267 DD 0xd5be0506,0xd5be0506
2268 DD 0x1f6234d1,0x1f6234d1
2269 DD 0x8afea6c4,0x8afea6c4
2270 DD 0x9d532e34,0x9d532e34
2271 DD 0xa055f3a2,0xa055f3a2
2272 DD 0x32e18a05,0x32e18a05
2273 DD 0x75ebf6a4,0x75ebf6a4
2274 DD 0x39ec830b,0x39ec830b
2275 DD 0xaaef6040,0xaaef6040
2276 DD 0x069f715e,0x069f715e
2277 DD 0x51106ebd,0x51106ebd
2278 DD 0xf98a213e,0xf98a213e
2279 DD 0x3d06dd96,0x3d06dd96
2280 DD 0xae053edd,0xae053edd
2281 DD 0x46bde64d,0x46bde64d
2282 DD 0xb58d5491,0xb58d5491
2283 DD 0x055dc471,0x055dc471
2284 DD 0x6fd40604,0x6fd40604
2285 DD 0xff155060,0xff155060
2286 DD 0x24fb9819,0x24fb9819
2287 DD 0x97e9bdd6,0x97e9bdd6
2288 DD 0xcc434089,0xcc434089
2289 DD 0x779ed967,0x779ed967
2290 DD 0xbd42e8b0,0xbd42e8b0
2291 DD 0x888b8907,0x888b8907
2292 DD 0x385b19e7,0x385b19e7
2293 DD 0xdbeec879,0xdbeec879
2294 DD 0x470a7ca1,0x470a7ca1
2295 DD 0xe90f427c,0xe90f427c
2296 DD 0xc91e84f8,0xc91e84f8
2297 DD 0x00000000,0x00000000
2298 DD 0x83868009,0x83868009
2299 DD 0x48ed2b32,0x48ed2b32
2300 DD 0xac70111e,0xac70111e
2301 DD 0x4e725a6c,0x4e725a6c
2302 DD 0xfbff0efd,0xfbff0efd
2303 DD 0x5638850f,0x5638850f
2304 DD 0x1ed5ae3d,0x1ed5ae3d
2305 DD 0x27392d36,0x27392d36
2306 DD 0x64d90f0a,0x64d90f0a
2307 DD 0x21a65c68,0x21a65c68
2308 DD 0xd1545b9b,0xd1545b9b
2309 DD 0x3a2e3624,0x3a2e3624
2310 DD 0xb1670a0c,0xb1670a0c
2311 DD 0x0fe75793,0x0fe75793
2312 DD 0xd296eeb4,0xd296eeb4
2313 DD 0x9e919b1b,0x9e919b1b
2314 DD 0x4fc5c080,0x4fc5c080
2315 DD 0xa220dc61,0xa220dc61
2316 DD 0x694b775a,0x694b775a
2317 DD 0x161a121c,0x161a121c
2318 DD 0x0aba93e2,0x0aba93e2
2319 DD 0xe52aa0c0,0xe52aa0c0
2320 DD 0x43e0223c,0x43e0223c
2321 DD 0x1d171b12,0x1d171b12
2322 DD 0x0b0d090e,0x0b0d090e
2323 DD 0xadc78bf2,0xadc78bf2
2324 DD 0xb9a8b62d,0xb9a8b62d
2325 DD 0xc8a91e14,0xc8a91e14
2326 DD 0x8519f157,0x8519f157
2327 DD 0x4c0775af,0x4c0775af
2328 DD 0xbbdd99ee,0xbbdd99ee
2329 DD 0xfd607fa3,0xfd607fa3
2330 DD 0x9f2601f7,0x9f2601f7
2331 DD 0xbcf5725c,0xbcf5725c
2332 DD 0xc53b6644,0xc53b6644
2333 DD 0x347efb5b,0x347efb5b
2334 DD 0x7629438b,0x7629438b
2335 DD 0xdcc623cb,0xdcc623cb
2336 DD 0x68fcedb6,0x68fcedb6
2337 DD 0x63f1e4b8,0x63f1e4b8
2338 DD 0xcadc31d7,0xcadc31d7
2339 DD 0x10856342,0x10856342
2340 DD 0x40229713,0x40229713
2341 DD 0x2011c684,0x2011c684
2342 DD 0x7d244a85,0x7d244a85
2343 DD 0xf83dbbd2,0xf83dbbd2
2344 DD 0x1132f9ae,0x1132f9ae
2345 DD 0x6da129c7,0x6da129c7
2346 DD 0x4b2f9e1d,0x4b2f9e1d
2347 DD 0xf330b2dc,0xf330b2dc
2348 DD 0xec52860d,0xec52860d
2349 DD 0xd0e3c177,0xd0e3c177
2350 DD 0x6c16b32b,0x6c16b32b
2351 DD 0x99b970a9,0x99b970a9
2352 DD 0xfa489411,0xfa489411
2353 DD 0x2264e947,0x2264e947
2354 DD 0xc48cfca8,0xc48cfca8
2355 DD 0x1a3ff0a0,0x1a3ff0a0
2356 DD 0xd82c7d56,0xd82c7d56
2357 DD 0xef903322,0xef903322
2358 DD 0xc74e4987,0xc74e4987
2359 DD 0xc1d138d9,0xc1d138d9
2360 DD 0xfea2ca8c,0xfea2ca8c
2361 DD 0x360bd498,0x360bd498
2362 DD 0xcf81f5a6,0xcf81f5a6
2363 DD 0x28de7aa5,0x28de7aa5
2364 DD 0x268eb7da,0x268eb7da
2365 DD 0xa4bfad3f,0xa4bfad3f
2366 DD 0xe49d3a2c,0xe49d3a2c
2367 DD 0x0d927850,0x0d927850
2368 DD 0x9bcc5f6a,0x9bcc5f6a
2369 DD 0x62467e54,0x62467e54
2370 DD 0xc2138df6,0xc2138df6
2371 DD 0xe8b8d890,0xe8b8d890
2372 DD 0x5ef7392e,0x5ef7392e
2373 DD 0xf5afc382,0xf5afc382
2374 DD 0xbe805d9f,0xbe805d9f
2375 DD 0x7c93d069,0x7c93d069
2376 DD 0xa92dd56f,0xa92dd56f
2377 DD 0xb31225cf,0xb31225cf
2378 DD 0x3b99acc8,0x3b99acc8
2379 DD 0xa77d1810,0xa77d1810
2380 DD 0x6e639ce8,0x6e639ce8
2381 DD 0x7bbb3bdb,0x7bbb3bdb
2382 DD 0x097826cd,0x097826cd
2383 DD 0xf418596e,0xf418596e
2384 DD 0x01b79aec,0x01b79aec
2385 DD 0xa89a4f83,0xa89a4f83
2386 DD 0x656e95e6,0x656e95e6
2387 DD 0x7ee6ffaa,0x7ee6ffaa
2388 DD 0x08cfbc21,0x08cfbc21
2389 DD 0xe6e815ef,0xe6e815ef
2390 DD 0xd99be7ba,0xd99be7ba
2391 DD 0xce366f4a,0xce366f4a
2392 DD 0xd4099fea,0xd4099fea
2393 DD 0xd67cb029,0xd67cb029
2394 DD 0xafb2a431,0xafb2a431
2395 DD 0x31233f2a,0x31233f2a
2396 DD 0x3094a5c6,0x3094a5c6
2397 DD 0xc066a235,0xc066a235
2398 DD 0x37bc4e74,0x37bc4e74
2399 DD 0xa6ca82fc,0xa6ca82fc
2400 DD 0xb0d090e0,0xb0d090e0
2401 DD 0x15d8a733,0x15d8a733
2402 DD 0x4a9804f1,0x4a9804f1
2403 DD 0xf7daec41,0xf7daec41
2404 DD 0x0e50cd7f,0x0e50cd7f
2405 DD 0x2ff69117,0x2ff69117
2406 DD 0x8dd64d76,0x8dd64d76
2407 DD 0x4db0ef43,0x4db0ef43
2408 DD 0x544daacc,0x544daacc
2409 DD 0xdf0496e4,0xdf0496e4
2410 DD 0xe3b5d19e,0xe3b5d19e
2411 DD 0x1b886a4c,0x1b886a4c
2412 DD 0xb81f2cc1,0xb81f2cc1
2413 DD 0x7f516546,0x7f516546
2414 DD 0x04ea5e9d,0x04ea5e9d
2415 DD 0x5d358c01,0x5d358c01
2416 DD 0x737487fa,0x737487fa
2417 DD 0x2e410bfb,0x2e410bfb
2418 DD 0x5a1d67b3,0x5a1d67b3
2419 DD 0x52d2db92,0x52d2db92
2420 DD 0x335610e9,0x335610e9
2421 DD 0x1347d66d,0x1347d66d
2422 DD 0x8c61d79a,0x8c61d79a
2423 DD 0x7a0ca137,0x7a0ca137
2424 DD 0x8e14f859,0x8e14f859
2425 DD 0x893c13eb,0x893c13eb
2426 DD 0xee27a9ce,0xee27a9ce
2427 DD 0x35c961b7,0x35c961b7
2428 DD 0xede51ce1,0xede51ce1
2429 DD 0x3cb1477a,0x3cb1477a
2430 DD 0x59dfd29c,0x59dfd29c
2431 DD 0x3f73f255,0x3f73f255
2432 DD 0x79ce1418,0x79ce1418
2433 DD 0xbf37c773,0xbf37c773
2434 DD 0xeacdf753,0xeacdf753
2435 DD 0x5baafd5f,0x5baafd5f
2436 DD 0x146f3ddf,0x146f3ddf
2437 DD 0x86db4478,0x86db4478
2438 DD 0x81f3afca,0x81f3afca
2439 DD 0x3ec468b9,0x3ec468b9
2440 DD 0x2c342438,0x2c342438
2441 DD 0x5f40a3c2,0x5f40a3c2
2442 DD 0x72c31d16,0x72c31d16
2443 DD 0x0c25e2bc,0x0c25e2bc
2444 DD 0x8b493c28,0x8b493c28
2445 DD 0x41950dff,0x41950dff
2446 DD 0x7101a839,0x7101a839
2447 DD 0xdeb30c08,0xdeb30c08
2448 DD 0x9ce4b4d8,0x9ce4b4d8
2449 DD 0x90c15664,0x90c15664
2450 DD 0x6184cb7b,0x6184cb7b
2451 DD 0x70b632d5,0x70b632d5
2452 DD 0x745c6c48,0x745c6c48
2453 DD 0x4257b8d0,0x4257b8d0
2454 DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2455 DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2456 DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2457 DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2458 DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2459 DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2460 DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2461 DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2462 DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2463 DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2464 DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2465 DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2466 DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2467 DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2468 DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2469 DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2470 DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2471 DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2472 DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2473 DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2474 DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2475 DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2476 DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2477 DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2478 DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2479 DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2480 DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2481 DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2482 DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2483 DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2484 DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2485 DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2486 DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe
2487 DD 0x1b1b1b1b,0x1b1b1b1b,0,0
2488 DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2489 DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2490 DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2491 DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2492 DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2493 DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2494 DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2495 DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2496 DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2497 DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2498 DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2499 DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2500 DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2501 DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2502 DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2503 DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2504 DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2505 DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2506 DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2507 DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2508 DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2509 DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2510 DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2511 DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2512 DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2513 DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2514 DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2515 DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2516 DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2517 DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2518 DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2519 DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2520 DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe
2521 DD 0x1b1b1b1b,0x1b1b1b1b,0,0
2522 DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2523 DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2524 DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2525 DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2526 DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2527 DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2528 DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2529 DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2530 DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2531 DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2532 DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2533 DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2534 DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2535 DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2536 DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2537 DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2538 DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2539 DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2540 DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2541 DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2542 DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2543 DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2544 DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2545 DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2546 DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2547 DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2548 DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2549 DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2550 DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2551 DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2552 DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2553 DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2554 DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe
2555 DD 0x1b1b1b1b,0x1b1b1b1b,0,0
2556 DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2557 DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2558 DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2559 DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2560 DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2561 DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2562 DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2563 DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2564 DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2565 DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2566 DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2567 DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2568 DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2569 DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2570 DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2571 DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2572 DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2573 DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2574 DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2575 DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2576 DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2577 DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2578 DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2579 DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2580 DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2581 DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2582 DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2583 DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2584 DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2585 DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2586 DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2587 DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2588 DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe
2589 DD 0x1b1b1b1b,0x1b1b1b1b,0,0
2590 DB 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32
2591 DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
2592 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
2593 DB 62,0
2594 ALIGN 64
2595 EXTERN __imp_RtlVirtualUnwind
2597 ALIGN 16
2598 block_se_handler:
2599 push rsi
2600 push rdi
2601 push rbx
2602 push rbp
2603 push r12
2604 push r13
2605 push r14
2606 push r15
2607 pushfq
2608 sub rsp,64
2610 mov rax,QWORD[120+r8]
2611 mov rbx,QWORD[248+r8]
2613 mov rsi,QWORD[8+r9]
2614 mov r11,QWORD[56+r9]
2616 mov r10d,DWORD[r11]
2617 lea r10,[r10*1+rsi]
2618 cmp rbx,r10
2619 jb NEAR $L$in_block_prologue
2621 mov rax,QWORD[152+r8]
2623 mov r10d,DWORD[4+r11]
2624 lea r10,[r10*1+rsi]
2625 cmp rbx,r10
2626 jae NEAR $L$in_block_prologue
2628 mov rax,QWORD[24+rax]
2629 lea rax,[48+rax]
2631 mov rbx,QWORD[((-8))+rax]
2632 mov rbp,QWORD[((-16))+rax]
2633 mov r12,QWORD[((-24))+rax]
2634 mov r13,QWORD[((-32))+rax]
2635 mov r14,QWORD[((-40))+rax]
2636 mov r15,QWORD[((-48))+rax]
2637 mov QWORD[144+r8],rbx
2638 mov QWORD[160+r8],rbp
2639 mov QWORD[216+r8],r12
2640 mov QWORD[224+r8],r13
2641 mov QWORD[232+r8],r14
2642 mov QWORD[240+r8],r15
2644 $L$in_block_prologue:
2645 mov rdi,QWORD[8+rax]
2646 mov rsi,QWORD[16+rax]
2647 mov QWORD[152+r8],rax
2648 mov QWORD[168+r8],rsi
2649 mov QWORD[176+r8],rdi
2651 jmp NEAR $L$common_seh_exit
2655 ALIGN 16
2656 key_se_handler:
2657 push rsi
2658 push rdi
2659 push rbx
2660 push rbp
2661 push r12
2662 push r13
2663 push r14
2664 push r15
2665 pushfq
2666 sub rsp,64
2668 mov rax,QWORD[120+r8]
2669 mov rbx,QWORD[248+r8]
2671 mov rsi,QWORD[8+r9]
2672 mov r11,QWORD[56+r9]
2674 mov r10d,DWORD[r11]
2675 lea r10,[r10*1+rsi]
2676 cmp rbx,r10
2677 jb NEAR $L$in_key_prologue
2679 mov rax,QWORD[152+r8]
2681 mov r10d,DWORD[4+r11]
2682 lea r10,[r10*1+rsi]
2683 cmp rbx,r10
2684 jae NEAR $L$in_key_prologue
2686 lea rax,[56+rax]
2688 mov rbx,QWORD[((-8))+rax]
2689 mov rbp,QWORD[((-16))+rax]
2690 mov r12,QWORD[((-24))+rax]
2691 mov r13,QWORD[((-32))+rax]
2692 mov r14,QWORD[((-40))+rax]
2693 mov r15,QWORD[((-48))+rax]
2694 mov QWORD[144+r8],rbx
2695 mov QWORD[160+r8],rbp
2696 mov QWORD[216+r8],r12
2697 mov QWORD[224+r8],r13
2698 mov QWORD[232+r8],r14
2699 mov QWORD[240+r8],r15
2701 $L$in_key_prologue:
2702 mov rdi,QWORD[8+rax]
2703 mov rsi,QWORD[16+rax]
2704 mov QWORD[152+r8],rax
2705 mov QWORD[168+r8],rsi
2706 mov QWORD[176+r8],rdi
2708 jmp NEAR $L$common_seh_exit
2712 ALIGN 16
2713 cbc_se_handler:
2714 push rsi
2715 push rdi
2716 push rbx
2717 push rbp
2718 push r12
2719 push r13
2720 push r14
2721 push r15
2722 pushfq
2723 sub rsp,64
2725 mov rax,QWORD[120+r8]
2726 mov rbx,QWORD[248+r8]
2728 lea r10,[$L$cbc_prologue]
2729 cmp rbx,r10
2730 jb NEAR $L$in_cbc_prologue
2732 lea r10,[$L$cbc_fast_body]
2733 cmp rbx,r10
2734 jb NEAR $L$in_cbc_frame_setup
2736 lea r10,[$L$cbc_slow_prologue]
2737 cmp rbx,r10
2738 jb NEAR $L$in_cbc_body
2740 lea r10,[$L$cbc_slow_body]
2741 cmp rbx,r10
2742 jb NEAR $L$in_cbc_frame_setup
2744 $L$in_cbc_body:
2745 mov rax,QWORD[152+r8]
2747 lea r10,[$L$cbc_epilogue]
2748 cmp rbx,r10
2749 jae NEAR $L$in_cbc_prologue
2751 lea rax,[8+rax]
2753 lea r10,[$L$cbc_popfq]
2754 cmp rbx,r10
2755 jae NEAR $L$in_cbc_prologue
2757 mov rax,QWORD[8+rax]
2758 lea rax,[56+rax]
2760 $L$in_cbc_frame_setup:
2761 mov rbx,QWORD[((-16))+rax]
2762 mov rbp,QWORD[((-24))+rax]
2763 mov r12,QWORD[((-32))+rax]
2764 mov r13,QWORD[((-40))+rax]
2765 mov r14,QWORD[((-48))+rax]
2766 mov r15,QWORD[((-56))+rax]
2767 mov QWORD[144+r8],rbx
2768 mov QWORD[160+r8],rbp
2769 mov QWORD[216+r8],r12
2770 mov QWORD[224+r8],r13
2771 mov QWORD[232+r8],r14
2772 mov QWORD[240+r8],r15
2774 $L$in_cbc_prologue:
2775 mov rdi,QWORD[8+rax]
2776 mov rsi,QWORD[16+rax]
2777 mov QWORD[152+r8],rax
2778 mov QWORD[168+r8],rsi
2779 mov QWORD[176+r8],rdi
2781 $L$common_seh_exit:
2783 mov rdi,QWORD[40+r9]
2784 mov rsi,r8
2785 mov ecx,154
2786 DD 0xa548f3fc
2788 mov rsi,r9
2789 xor rcx,rcx
2790 mov rdx,QWORD[8+rsi]
2791 mov r8,QWORD[rsi]
2792 mov r9,QWORD[16+rsi]
2793 mov r10,QWORD[40+rsi]
2794 lea r11,[56+rsi]
2795 lea r12,[24+rsi]
2796 mov QWORD[32+rsp],r10
2797 mov QWORD[40+rsp],r11
2798 mov QWORD[48+rsp],r12
2799 mov QWORD[56+rsp],rcx
2800 call QWORD[__imp_RtlVirtualUnwind]
2802 mov eax,1
2803 add rsp,64
2804 popfq
2805 pop r15
2806 pop r14
2807 pop r13
2808 pop r12
2809 pop rbp
2810 pop rbx
2811 pop rdi
2812 pop rsi
2813 DB 0F3h,0C3h ;repret
2816 section .pdata rdata align=4
2817 ALIGN 4
2818 DD $L$SEH_begin_asm_AES_encrypt wrt ..imagebase
2819 DD $L$SEH_end_asm_AES_encrypt wrt ..imagebase
2820 DD $L$SEH_info_asm_AES_encrypt wrt ..imagebase
2822 DD $L$SEH_begin_asm_AES_decrypt wrt ..imagebase
2823 DD $L$SEH_end_asm_AES_decrypt wrt ..imagebase
2824 DD $L$SEH_info_asm_AES_decrypt wrt ..imagebase
2826 DD $L$SEH_begin_asm_AES_set_encrypt_key wrt ..imagebase
2827 DD $L$SEH_end_asm_AES_set_encrypt_key wrt ..imagebase
2828 DD $L$SEH_info_asm_AES_set_encrypt_key wrt ..imagebase
2830 DD $L$SEH_begin_asm_AES_set_decrypt_key wrt ..imagebase
2831 DD $L$SEH_end_asm_AES_set_decrypt_key wrt ..imagebase
2832 DD $L$SEH_info_asm_AES_set_decrypt_key wrt ..imagebase
2834 DD $L$SEH_begin_asm_AES_cbc_encrypt wrt ..imagebase
2835 DD $L$SEH_end_asm_AES_cbc_encrypt wrt ..imagebase
2836 DD $L$SEH_info_asm_AES_cbc_encrypt wrt ..imagebase
2838 section .xdata rdata align=8
2839 ALIGN 8
2840 $L$SEH_info_asm_AES_encrypt:
2841 DB 9,0,0,0
2842 DD block_se_handler wrt ..imagebase
2843 DD $L$enc_prologue wrt ..imagebase,$L$enc_epilogue wrt ..imagebase
2844 $L$SEH_info_asm_AES_decrypt:
2845 DB 9,0,0,0
2846 DD block_se_handler wrt ..imagebase
2847 DD $L$dec_prologue wrt ..imagebase,$L$dec_epilogue wrt ..imagebase
2848 $L$SEH_info_asm_AES_set_encrypt_key:
2849 DB 9,0,0,0
2850 DD key_se_handler wrt ..imagebase
2851 DD $L$enc_key_prologue wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase
2852 $L$SEH_info_asm_AES_set_decrypt_key:
2853 DB 9,0,0,0
2854 DD key_se_handler wrt ..imagebase
2855 DD $L$dec_key_prologue wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase
2856 $L$SEH_info_asm_AES_cbc_encrypt:
2857 DB 9,0,0,0
2858 DD cbc_se_handler wrt ..imagebase