diff options
author | Adam Langley <agl@google.com> | 2015-05-11 17:20:37 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2015-05-12 23:06:14 +0000 |
commit | e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5 (patch) | |
tree | 6e43e34595ecf887c26c32b86d8ab097fe8cac64 /win-x86_64/crypto/aes | |
parent | b3106a0cc1493bbe0505c0ec0ce3da4ca90a29ae (diff) | |
download | external_boringssl-e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5.zip external_boringssl-e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5.tar.gz external_boringssl-e9ada863a7b3e81f5d2b1e3bdd2305da902a87f5.tar.bz2 |
external/boringssl: bump revision.
This change bumps the BoringSSL revision to the current tip-of-tree.
Change-Id: I91d5bf467e16e8d86cb19a4de873985f524e5faa
Diffstat (limited to 'win-x86_64/crypto/aes')
-rw-r--r-- | win-x86_64/crypto/aes/aes-x86_64.asm | 3506 | ||||
-rw-r--r-- | win-x86_64/crypto/aes/aesni-x86_64.asm | 3678 | ||||
-rw-r--r-- | win-x86_64/crypto/aes/bsaes-x86_64.asm | 2213 | ||||
-rw-r--r-- | win-x86_64/crypto/aes/vpaes-x86_64.asm | 972 |
4 files changed, 5376 insertions, 4993 deletions
diff --git a/win-x86_64/crypto/aes/aes-x86_64.asm b/win-x86_64/crypto/aes/aes-x86_64.asm index 96cbb4b..53394f0 100644 --- a/win-x86_64/crypto/aes/aes-x86_64.asm +++ b/win-x86_64/crypto/aes/aes-x86_64.asm @@ -1,89 +1,93 @@ -OPTION DOTNAME -.text$ SEGMENT ALIGN(256) 'CODE' +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + ALIGN 16 -_x86_64_AES_encrypt PROC PRIVATE - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] +_x86_64_AES_encrypt: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] - mov r13d,DWORD PTR[240+r15] + mov r13d,DWORD[240+r15] sub r13d,1 - jmp $L$enc_loop + jmp NEAR $L$enc_loop ALIGN 16 -$L$enc_loop:: +$L$enc_loop: movzx esi,al movzx edi,bl movzx ebp,cl - mov r10d,DWORD PTR[rsi*8+r14] - mov r11d,DWORD PTR[rdi*8+r14] - mov r12d,DWORD PTR[rbp*8+r14] + mov r10d,DWORD[rsi*8+r14] + mov r11d,DWORD[rdi*8+r14] + mov r12d,DWORD[rbp*8+r14] movzx esi,bh movzx edi,ch movzx ebp,dl - xor r10d,DWORD PTR[3+rsi*8+r14] - xor r11d,DWORD PTR[3+rdi*8+r14] - mov r8d,DWORD PTR[rbp*8+r14] + xor r10d,DWORD[3+rsi*8+r14] + xor r11d,DWORD[3+rdi*8+r14] + mov r8d,DWORD[rbp*8+r14] movzx esi,dh shr ecx,16 movzx ebp,ah - xor r12d,DWORD PTR[3+rsi*8+r14] + xor r12d,DWORD[3+rsi*8+r14] shr edx,16 - xor r8d,DWORD PTR[3+rbp*8+r14] + xor r8d,DWORD[3+rbp*8+r14] shr ebx,16 - lea r15,QWORD PTR[16+r15] + lea r15,[16+r15] shr eax,16 movzx esi,cl movzx edi,dl movzx ebp,al - xor r10d,DWORD PTR[2+rsi*8+r14] - xor r11d,DWORD PTR[2+rdi*8+r14] - xor r12d,DWORD PTR[2+rbp*8+r14] + xor r10d,DWORD[2+rsi*8+r14] + xor r11d,DWORD[2+rdi*8+r14] + xor r12d,DWORD[2+rbp*8+r14] movzx esi,dh movzx edi,ah movzx ebp,bl - xor r10d,DWORD PTR[1+rsi*8+r14] - xor r11d,DWORD PTR[1+rdi*8+r14] - xor r8d,DWORD PTR[2+rbp*8+r14] + xor r10d,DWORD[1+rsi*8+r14] + xor r11d,DWORD[1+rdi*8+r14] + xor r8d,DWORD[2+rbp*8+r14] - mov edx,DWORD PTR[12+r15] + mov edx,DWORD[12+r15] movzx edi,bh movzx ebp,ch - mov eax,DWORD PTR[r15] - xor r12d,DWORD PTR[1+rdi*8+r14] - xor r8d,DWORD PTR[1+rbp*8+r14] + mov eax,DWORD[r15] + xor r12d,DWORD[1+rdi*8+r14] + xor r8d,DWORD[1+rbp*8+r14] - mov ebx,DWORD PTR[4+r15] - mov ecx,DWORD PTR[8+r15] + mov ebx,DWORD[4+r15] + mov ecx,DWORD[8+r15] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d sub r13d,1 - jnz $L$enc_loop + jnz NEAR $L$enc_loop movzx esi,al movzx edi,bl movzx ebp,cl - movzx r10d,BYTE PTR[2+rsi*8+r14] - movzx r11d,BYTE PTR[2+rdi*8+r14] - movzx r12d,BYTE PTR[2+rbp*8+r14] + movzx r10d,BYTE[2+rsi*8+r14] + movzx r11d,BYTE[2+rdi*8+r14] + movzx r12d,BYTE[2+rbp*8+r14] movzx esi,dl movzx edi,bh movzx ebp,ch - movzx r8d,BYTE PTR[2+rsi*8+r14] - mov edi,DWORD PTR[rdi*8+r14] - mov ebp,DWORD PTR[rbp*8+r14] + movzx r8d,BYTE[2+rsi*8+r14] + mov edi,DWORD[rdi*8+r14] + mov ebp,DWORD[rbp*8+r14] - and edi,00000ff00h - and ebp,00000ff00h + and edi,0x0000ff00 + and ebp,0x0000ff00 xor r10d,edi xor r11d,ebp @@ -92,11 +96,11 @@ $L$enc_loop:: movzx esi,dh movzx edi,ah shr edx,16 - mov esi,DWORD PTR[rsi*8+r14] - mov edi,DWORD PTR[rdi*8+r14] + mov esi,DWORD[rsi*8+r14] + mov edi,DWORD[rdi*8+r14] - and esi,00000ff00h - and edi,00000ff00h + and esi,0x0000ff00 + and edi,0x0000ff00 shr ebx,16 xor r12d,esi xor r8d,edi @@ -105,13 +109,13 @@ $L$enc_loop:: movzx esi,cl movzx edi,dl movzx ebp,al - mov esi,DWORD PTR[rsi*8+r14] - mov edi,DWORD PTR[rdi*8+r14] - mov ebp,DWORD PTR[rbp*8+r14] + mov esi,DWORD[rsi*8+r14] + mov edi,DWORD[rdi*8+r14] + mov ebp,DWORD[rbp*8+r14] - and esi,000ff0000h - and edi,000ff0000h - and ebp,000ff0000h + and esi,0x00ff0000 + and edi,0x00ff0000 + and ebp,0x00ff0000 xor r10d,esi xor r11d,edi @@ -120,13 +124,13 @@ $L$enc_loop:: movzx esi,bl movzx edi,dh movzx ebp,ah - mov esi,DWORD PTR[rsi*8+r14] - mov edi,DWORD PTR[2+rdi*8+r14] - mov ebp,DWORD PTR[2+rbp*8+r14] + mov esi,DWORD[rsi*8+r14] + mov edi,DWORD[2+rdi*8+r14] + mov ebp,DWORD[2+rbp*8+r14] - and esi,000ff0000h - and edi,0ff000000h - and ebp,0ff000000h + and esi,0x00ff0000 + and edi,0xff000000 + and ebp,0xff000000 xor r8d,esi xor r10d,edi @@ -134,45 +138,45 @@ $L$enc_loop:: movzx esi,bh movzx edi,ch - mov edx,DWORD PTR[((16+12))+r15] - mov esi,DWORD PTR[2+rsi*8+r14] - mov edi,DWORD PTR[2+rdi*8+r14] - mov eax,DWORD PTR[((16+0))+r15] + mov edx,DWORD[((16+12))+r15] + mov esi,DWORD[2+rsi*8+r14] + mov edi,DWORD[2+rdi*8+r14] + mov eax,DWORD[((16+0))+r15] - and esi,0ff000000h - and edi,0ff000000h + and esi,0xff000000 + and edi,0xff000000 xor r12d,esi xor r8d,edi - mov ebx,DWORD PTR[((16+4))+r15] - mov ecx,DWORD PTR[((16+8))+r15] + mov ebx,DWORD[((16+4))+r15] + mov ecx,DWORD[((16+8))+r15] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d -DB 0f3h,0c3h -_x86_64_AES_encrypt ENDP +DB 0xf3,0xc3 + ALIGN 16 -_x86_64_AES_encrypt_compact PROC PRIVATE - lea r8,QWORD PTR[128+r14] - mov edi,DWORD PTR[((0-128))+r8] - mov ebp,DWORD PTR[((32-128))+r8] - mov r10d,DWORD PTR[((64-128))+r8] - mov r11d,DWORD PTR[((96-128))+r8] - mov edi,DWORD PTR[((128-128))+r8] - mov ebp,DWORD PTR[((160-128))+r8] - mov r10d,DWORD PTR[((192-128))+r8] - mov r11d,DWORD PTR[((224-128))+r8] - jmp $L$enc_loop_compact +_x86_64_AES_encrypt_compact: + lea r8,[128+r14] + mov edi,DWORD[((0-128))+r8] + mov ebp,DWORD[((32-128))+r8] + mov r10d,DWORD[((64-128))+r8] + mov r11d,DWORD[((96-128))+r8] + mov edi,DWORD[((128-128))+r8] + mov ebp,DWORD[((160-128))+r8] + mov r10d,DWORD[((192-128))+r8] + mov r11d,DWORD[((224-128))+r8] + jmp NEAR $L$enc_loop_compact ALIGN 16 -$L$enc_loop_compact:: - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] - lea r15,QWORD PTR[16+r15] +$L$enc_loop_compact: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] + lea r15,[16+r15] movzx r10d,al movzx r11d,bl movzx r12d,cl @@ -181,17 +185,17 @@ $L$enc_loop_compact:: movzx edi,ch shr ecx,16 movzx ebp,dh - movzx r10d,BYTE PTR[r10*1+r14] - movzx r11d,BYTE PTR[r11*1+r14] - movzx r12d,BYTE PTR[r12*1+r14] - movzx r8d,BYTE PTR[r8*1+r14] + movzx r10d,BYTE[r10*1+r14] + movzx r11d,BYTE[r11*1+r14] + movzx r12d,BYTE[r12*1+r14] + movzx r8d,BYTE[r8*1+r14] - movzx r9d,BYTE PTR[rsi*1+r14] + movzx r9d,BYTE[rsi*1+r14] movzx esi,ah - movzx r13d,BYTE PTR[rdi*1+r14] + movzx r13d,BYTE[rdi*1+r14] movzx edi,cl - movzx ebp,BYTE PTR[rbp*1+r14] - movzx esi,BYTE PTR[rsi*1+r14] + movzx ebp,BYTE[rbp*1+r14] + movzx esi,BYTE[rsi*1+r14] shl r9d,8 shr edx,16 @@ -203,16 +207,16 @@ $L$enc_loop_compact:: xor r11d,r13d shl ebp,8 movzx r13d,al - movzx edi,BYTE PTR[rdi*1+r14] + movzx edi,BYTE[rdi*1+r14] xor r12d,ebp shl esi,8 movzx ebp,bl shl edi,16 xor r8d,esi - movzx r9d,BYTE PTR[r9*1+r14] + movzx r9d,BYTE[r9*1+r14] movzx esi,dh - movzx r13d,BYTE PTR[r13*1+r14] + movzx r13d,BYTE[r13*1+r14] xor r10d,edi shr ecx,8 @@ -221,11 +225,11 @@ $L$enc_loop_compact:: shr ebx,8 shl r13d,16 xor r11d,r9d - movzx ebp,BYTE PTR[rbp*1+r14] - movzx esi,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] - movzx edx,BYTE PTR[rcx*1+r14] - movzx ecx,BYTE PTR[rbx*1+r14] + movzx ebp,BYTE[rbp*1+r14] + movzx esi,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] + movzx edx,BYTE[rcx*1+r14] + movzx ecx,BYTE[rbx*1+r14] shl ebp,16 xor r12d,r13d @@ -240,24 +244,24 @@ $L$enc_loop_compact:: mov ebx,r11d xor ecx,r12d xor edx,r8d - cmp r15,QWORD PTR[16+rsp] - je $L$enc_compact_done - mov r10d,080808080h - mov r11d,080808080h + cmp r15,QWORD[16+rsp] + je NEAR $L$enc_compact_done + mov r10d,0x80808080 + mov r11d,0x80808080 and r10d,eax and r11d,ebx mov esi,r10d mov edi,r11d shr r10d,7 - lea r8d,DWORD PTR[rax*1+rax] + lea r8d,[rax*1+rax] shr r11d,7 - lea r9d,DWORD PTR[rbx*1+rbx] + lea r9d,[rbx*1+rbx] sub esi,r10d sub edi,r11d - and r8d,0fefefefeh - and r9d,0fefefefeh - and esi,01b1b1b1bh - and edi,01b1b1b1bh + and r8d,0xfefefefe + and r9d,0xfefefefe + and esi,0x1b1b1b1b + and edi,0x1b1b1b1b mov r10d,eax mov r11d,ebx xor r8d,esi @@ -265,9 +269,9 @@ $L$enc_loop_compact:: xor eax,r8d xor ebx,r9d - mov r12d,080808080h + mov r12d,0x80808080 rol eax,24 - mov ebp,080808080h + mov ebp,0x80808080 rol ebx,24 and r12d,ecx and ebp,edx @@ -277,23 +281,23 @@ $L$enc_loop_compact:: ror r10d,16 mov edi,ebp ror r11d,16 - lea r8d,DWORD PTR[rcx*1+rcx] + lea r8d,[rcx*1+rcx] shr r12d,7 xor eax,r10d shr ebp,7 xor ebx,r11d ror r10d,8 - lea r9d,DWORD PTR[rdx*1+rdx] + lea r9d,[rdx*1+rdx] ror r11d,8 sub esi,r12d sub edi,ebp xor eax,r10d xor ebx,r11d - and r8d,0fefefefeh - and r9d,0fefefefeh - and esi,01b1b1b1bh - and edi,01b1b1b1bh + and r8d,0xfefefefe + and r9d,0xfefefefe + and esi,0x1b1b1b1b + and edi,0x1b1b1b1b mov r12d,ecx mov ebp,edx xor r8d,esi @@ -304,37 +308,37 @@ $L$enc_loop_compact:: ror ebp,16 xor edx,r9d rol ecx,24 - mov esi,DWORD PTR[r14] + mov esi,DWORD[r14] rol edx,24 xor ecx,r8d - mov edi,DWORD PTR[64+r14] + mov edi,DWORD[64+r14] xor edx,r9d - mov r8d,DWORD PTR[128+r14] + mov r8d,DWORD[128+r14] xor ecx,r12d ror r12d,8 xor edx,ebp ror ebp,8 xor ecx,r12d - mov r9d,DWORD PTR[192+r14] + mov r9d,DWORD[192+r14] xor edx,ebp - jmp $L$enc_loop_compact + jmp NEAR $L$enc_loop_compact ALIGN 16 -$L$enc_compact_done:: - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] -DB 0f3h,0c3h -_x86_64_AES_encrypt_compact ENDP +$L$enc_compact_done: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] +DB 0xf3,0xc3 + ALIGN 16 -PUBLIC asm_AES_encrypt +global asm_AES_encrypt -asm_AES_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +asm_AES_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_asm_AES_encrypt:: +$L$SEH_begin_asm_AES_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -349,142 +353,141 @@ $L$SEH_begin_asm_AES_encrypt:: mov r10,rsp - lea rcx,QWORD PTR[((-63))+rdx] + lea rcx,[((-63))+rdx] and rsp,-64 sub rcx,rsp neg rcx - and rcx,03c0h + and rcx,0x3c0 sub rsp,rcx sub rsp,32 - mov QWORD PTR[16+rsp],rsi - mov QWORD PTR[24+rsp],r10 -$L$enc_prologue:: + mov QWORD[16+rsp],rsi + mov QWORD[24+rsp],r10 +$L$enc_prologue: mov r15,rdx - mov r13d,DWORD PTR[240+r15] + mov r13d,DWORD[240+r15] - mov eax,DWORD PTR[rdi] - mov ebx,DWORD PTR[4+rdi] - mov ecx,DWORD PTR[8+rdi] - mov edx,DWORD PTR[12+rdi] + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] shl r13d,4 - lea rbp,QWORD PTR[r13*1+r15] - mov QWORD PTR[rsp],r15 - mov QWORD PTR[8+rsp],rbp + lea rbp,[r13*1+r15] + mov QWORD[rsp],r15 + mov QWORD[8+rsp],rbp - lea r14,QWORD PTR[(($L$AES_Te+2048))] - lea rbp,QWORD PTR[768+rsp] + lea r14,[(($L$AES_Te+2048))] + lea rbp,[768+rsp] sub rbp,r14 - and rbp,0300h - lea r14,QWORD PTR[rbp*1+r14] + and rbp,0x300 + lea r14,[rbp*1+r14] call _x86_64_AES_encrypt_compact - mov r9,QWORD PTR[16+rsp] - mov rsi,QWORD PTR[24+rsp] - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx - - mov r15,QWORD PTR[rsi] - mov r14,QWORD PTR[8+rsi] - mov r13,QWORD PTR[16+rsi] - mov r12,QWORD PTR[24+rsi] - mov rbp,QWORD PTR[32+rsi] - mov rbx,QWORD PTR[40+rsi] - lea rsp,QWORD PTR[48+rsi] -$L$enc_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + mov r9,QWORD[16+rsp] + mov rsi,QWORD[24+rsp] + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_asm_AES_encrypt:: -asm_AES_encrypt ENDP +$L$SEH_end_asm_AES_encrypt: ALIGN 16 -_x86_64_AES_decrypt PROC PRIVATE - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] +_x86_64_AES_decrypt: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] - mov r13d,DWORD PTR[240+r15] + mov r13d,DWORD[240+r15] sub r13d,1 - jmp $L$dec_loop + jmp NEAR $L$dec_loop ALIGN 16 -$L$dec_loop:: +$L$dec_loop: movzx esi,al movzx edi,bl movzx ebp,cl - mov r10d,DWORD PTR[rsi*8+r14] - mov r11d,DWORD PTR[rdi*8+r14] - mov r12d,DWORD PTR[rbp*8+r14] + mov r10d,DWORD[rsi*8+r14] + mov r11d,DWORD[rdi*8+r14] + mov r12d,DWORD[rbp*8+r14] movzx esi,dh movzx edi,ah movzx ebp,dl - xor r10d,DWORD PTR[3+rsi*8+r14] - xor r11d,DWORD PTR[3+rdi*8+r14] - mov r8d,DWORD PTR[rbp*8+r14] + xor r10d,DWORD[3+rsi*8+r14] + xor r11d,DWORD[3+rdi*8+r14] + mov r8d,DWORD[rbp*8+r14] movzx esi,bh shr eax,16 movzx ebp,ch - xor r12d,DWORD PTR[3+rsi*8+r14] + xor r12d,DWORD[3+rsi*8+r14] shr edx,16 - xor r8d,DWORD PTR[3+rbp*8+r14] + xor r8d,DWORD[3+rbp*8+r14] shr ebx,16 - lea r15,QWORD PTR[16+r15] + lea r15,[16+r15] shr ecx,16 movzx esi,cl movzx edi,dl movzx ebp,al - xor r10d,DWORD PTR[2+rsi*8+r14] - xor r11d,DWORD PTR[2+rdi*8+r14] - xor r12d,DWORD PTR[2+rbp*8+r14] + xor r10d,DWORD[2+rsi*8+r14] + xor r11d,DWORD[2+rdi*8+r14] + xor r12d,DWORD[2+rbp*8+r14] movzx esi,bh movzx edi,ch movzx ebp,bl - xor r10d,DWORD PTR[1+rsi*8+r14] - xor r11d,DWORD PTR[1+rdi*8+r14] - xor r8d,DWORD PTR[2+rbp*8+r14] + xor r10d,DWORD[1+rsi*8+r14] + xor r11d,DWORD[1+rdi*8+r14] + xor r8d,DWORD[2+rbp*8+r14] movzx esi,dh - mov edx,DWORD PTR[12+r15] + mov edx,DWORD[12+r15] movzx ebp,ah - xor r12d,DWORD PTR[1+rsi*8+r14] - mov eax,DWORD PTR[r15] - xor r8d,DWORD PTR[1+rbp*8+r14] + xor r12d,DWORD[1+rsi*8+r14] + mov eax,DWORD[r15] + xor r8d,DWORD[1+rbp*8+r14] xor eax,r10d - mov ebx,DWORD PTR[4+r15] - mov ecx,DWORD PTR[8+r15] + mov ebx,DWORD[4+r15] + mov ecx,DWORD[8+r15] xor ecx,r12d xor ebx,r11d xor edx,r8d sub r13d,1 - jnz $L$dec_loop - lea r14,QWORD PTR[2048+r14] + jnz NEAR $L$dec_loop + lea r14,[2048+r14] movzx esi,al movzx edi,bl movzx ebp,cl - movzx r10d,BYTE PTR[rsi*1+r14] - movzx r11d,BYTE PTR[rdi*1+r14] - movzx r12d,BYTE PTR[rbp*1+r14] + movzx r10d,BYTE[rsi*1+r14] + movzx r11d,BYTE[rdi*1+r14] + movzx r12d,BYTE[rbp*1+r14] movzx esi,dl movzx edi,dh movzx ebp,ah - movzx r8d,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] - movzx ebp,BYTE PTR[rbp*1+r14] + movzx r8d,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] + movzx ebp,BYTE[rbp*1+r14] shl edi,8 shl ebp,8 @@ -496,8 +499,8 @@ $L$dec_loop:: movzx esi,bh movzx edi,ch shr eax,16 - movzx esi,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] + movzx esi,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] shl esi,8 shl edi,8 @@ -509,9 +512,9 @@ $L$dec_loop:: movzx esi,cl movzx edi,dl movzx ebp,al - movzx esi,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] - movzx ebp,BYTE PTR[rbp*1+r14] + movzx esi,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] + movzx ebp,BYTE[rbp*1+r14] shl esi,16 shl edi,16 @@ -524,9 +527,9 @@ $L$dec_loop:: movzx esi,bl movzx edi,bh movzx ebp,ch - movzx esi,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] - movzx ebp,BYTE PTR[rbp*1+r14] + movzx esi,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] + movzx ebp,BYTE[rbp*1+r14] shl esi,16 shl edi,24 @@ -538,10 +541,10 @@ $L$dec_loop:: movzx esi,dh movzx edi,ah - mov edx,DWORD PTR[((16+12))+r15] - movzx esi,BYTE PTR[rsi*1+r14] - movzx edi,BYTE PTR[rdi*1+r14] - mov eax,DWORD PTR[((16+0))+r15] + mov edx,DWORD[((16+12))+r15] + movzx esi,BYTE[rsi*1+r14] + movzx edi,BYTE[rdi*1+r14] + mov eax,DWORD[((16+0))+r15] shl esi,24 shl edi,24 @@ -549,36 +552,36 @@ $L$dec_loop:: xor r12d,esi xor r8d,edi - mov ebx,DWORD PTR[((16+4))+r15] - mov ecx,DWORD PTR[((16+8))+r15] - lea r14,QWORD PTR[((-2048))+r14] + mov ebx,DWORD[((16+4))+r15] + mov ecx,DWORD[((16+8))+r15] + lea r14,[((-2048))+r14] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d -DB 0f3h,0c3h -_x86_64_AES_decrypt ENDP +DB 0xf3,0xc3 + ALIGN 16 -_x86_64_AES_decrypt_compact PROC PRIVATE - lea r8,QWORD PTR[128+r14] - mov edi,DWORD PTR[((0-128))+r8] - mov ebp,DWORD PTR[((32-128))+r8] - mov r10d,DWORD PTR[((64-128))+r8] - mov r11d,DWORD PTR[((96-128))+r8] - mov edi,DWORD PTR[((128-128))+r8] - mov ebp,DWORD PTR[((160-128))+r8] - mov r10d,DWORD PTR[((192-128))+r8] - mov r11d,DWORD PTR[((224-128))+r8] - jmp $L$dec_loop_compact +_x86_64_AES_decrypt_compact: + lea r8,[128+r14] + mov edi,DWORD[((0-128))+r8] + mov ebp,DWORD[((32-128))+r8] + mov r10d,DWORD[((64-128))+r8] + mov r11d,DWORD[((96-128))+r8] + mov edi,DWORD[((128-128))+r8] + mov ebp,DWORD[((160-128))+r8] + mov r10d,DWORD[((192-128))+r8] + mov r11d,DWORD[((224-128))+r8] + jmp NEAR $L$dec_loop_compact ALIGN 16 -$L$dec_loop_compact:: - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] - lea r15,QWORD PTR[16+r15] +$L$dec_loop_compact: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] + lea r15,[16+r15] movzx r10d,al movzx r11d,bl movzx r12d,cl @@ -587,16 +590,16 @@ $L$dec_loop_compact:: movzx edi,ah shr edx,16 movzx ebp,bh - movzx r10d,BYTE PTR[r10*1+r14] - movzx r11d,BYTE PTR[r11*1+r14] - movzx r12d,BYTE PTR[r12*1+r14] - movzx r8d,BYTE PTR[r8*1+r14] + movzx r10d,BYTE[r10*1+r14] + movzx r11d,BYTE[r11*1+r14] + movzx r12d,BYTE[r12*1+r14] + movzx r8d,BYTE[r8*1+r14] - movzx r9d,BYTE PTR[rsi*1+r14] + movzx r9d,BYTE[rsi*1+r14] movzx esi,ch - movzx r13d,BYTE PTR[rdi*1+r14] - movzx ebp,BYTE PTR[rbp*1+r14] - movzx esi,BYTE PTR[rsi*1+r14] + movzx r13d,BYTE[rdi*1+r14] + movzx ebp,BYTE[rbp*1+r14] + movzx esi,BYTE[rsi*1+r14] shr ecx,16 shl r13d,8 @@ -611,17 +614,17 @@ $L$dec_loop_compact:: xor r11d,r13d shl esi,8 movzx r13d,al - movzx edi,BYTE PTR[rdi*1+r14] + movzx edi,BYTE[rdi*1+r14] xor r12d,ebp movzx ebp,bl shl edi,16 xor r8d,esi - movzx r9d,BYTE PTR[r9*1+r14] + movzx r9d,BYTE[r9*1+r14] movzx esi,bh - movzx ebp,BYTE PTR[rbp*1+r14] + movzx ebp,BYTE[rbp*1+r14] xor r10d,edi - movzx r13d,BYTE PTR[r13*1+r14] + movzx r13d,BYTE[r13*1+r14] movzx edi,ch shl ebp,16 @@ -633,10 +636,10 @@ $L$dec_loop_compact:: shr eax,8 xor r12d,r13d - movzx esi,BYTE PTR[rsi*1+r14] - movzx ebx,BYTE PTR[rdi*1+r14] - movzx ecx,BYTE PTR[rbp*1+r14] - movzx edx,BYTE PTR[rax*1+r14] + movzx esi,BYTE[rsi*1+r14] + movzx ebx,BYTE[rdi*1+r14] + movzx ecx,BYTE[rbp*1+r14] + movzx edx,BYTE[rax*1+r14] mov eax,r10d shl esi,24 @@ -647,16 +650,16 @@ $L$dec_loop_compact:: xor ebx,r11d xor ecx,r12d xor edx,r8d - cmp r15,QWORD PTR[16+rsp] - je $L$dec_compact_done + cmp r15,QWORD[16+rsp] + je NEAR $L$dec_compact_done - mov rsi,QWORD PTR[((256+0))+r14] + mov rsi,QWORD[((256+0))+r14] shl rbx,32 shl rdx,32 - mov rdi,QWORD PTR[((256+8))+r14] + mov rdi,QWORD[((256+8))+r14] or rax,rbx or rcx,rdx - mov rbp,QWORD PTR[((256+16))+r14] + mov rbp,QWORD[((256+16))+r14] mov r9,rsi mov r12,rsi and r9,rax @@ -664,9 +667,9 @@ $L$dec_loop_compact:: mov rbx,r9 mov rdx,r12 shr r9,7 - lea r8,QWORD PTR[rax*1+rax] + lea r8,[rax*1+rax] shr r12,7 - lea r11,QWORD PTR[rcx*1+rcx] + lea r11,[rcx*1+rcx] sub rbx,r9 sub rdx,r12 and r8,rdi @@ -683,9 +686,9 @@ $L$dec_loop_compact:: mov rbx,r10 mov rdx,r13 shr r10,7 - lea r9,QWORD PTR[r8*1+r8] + lea r9,[r8*1+r8] shr r13,7 - lea r12,QWORD PTR[r11*1+r11] + lea r12,[r11*1+r11] sub rbx,r10 sub rdx,r13 and r9,rdi @@ -707,8 +710,8 @@ $L$dec_loop_compact:: xor r11,rcx sub rbx,r10 sub rdx,r13 - lea r10,QWORD PTR[r9*1+r9] - lea r13,QWORD PTR[r12*1+r12] + lea r10,[r9*1+r9] + lea r13,[r12*1+r12] xor r9,rax xor r12,rcx and r10,rdi @@ -761,37 +764,37 @@ $L$dec_loop_compact:: shr r11,32 xor edx,r13d - mov rsi,QWORD PTR[r14] + mov rsi,QWORD[r14] rol r9d,16 - mov rdi,QWORD PTR[64+r14] + mov rdi,QWORD[64+r14] rol r12d,16 - mov rbp,QWORD PTR[128+r14] + mov rbp,QWORD[128+r14] rol r8d,16 - mov r10,QWORD PTR[192+r14] + mov r10,QWORD[192+r14] xor eax,r9d rol r11d,16 xor ecx,r12d - mov r13,QWORD PTR[256+r14] + mov r13,QWORD[256+r14] xor ebx,r8d xor edx,r11d - jmp $L$dec_loop_compact + jmp NEAR $L$dec_loop_compact ALIGN 16 -$L$dec_compact_done:: - xor eax,DWORD PTR[r15] - xor ebx,DWORD PTR[4+r15] - xor ecx,DWORD PTR[8+r15] - xor edx,DWORD PTR[12+r15] -DB 0f3h,0c3h -_x86_64_AES_decrypt_compact ENDP +$L$dec_compact_done: + xor eax,DWORD[r15] + xor ebx,DWORD[4+r15] + xor ecx,DWORD[8+r15] + xor edx,DWORD[12+r15] +DB 0xf3,0xc3 + ALIGN 16 -PUBLIC asm_AES_decrypt +global asm_AES_decrypt -asm_AES_decrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +asm_AES_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_asm_AES_decrypt:: +$L$SEH_begin_asm_AES_decrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -806,70 +809,69 @@ $L$SEH_begin_asm_AES_decrypt:: mov r10,rsp - lea rcx,QWORD PTR[((-63))+rdx] + lea rcx,[((-63))+rdx] and rsp,-64 sub rcx,rsp neg rcx - and rcx,03c0h + and rcx,0x3c0 sub rsp,rcx sub rsp,32 - mov QWORD PTR[16+rsp],rsi - mov QWORD PTR[24+rsp],r10 -$L$dec_prologue:: + mov QWORD[16+rsp],rsi + mov QWORD[24+rsp],r10 +$L$dec_prologue: mov r15,rdx - mov r13d,DWORD PTR[240+r15] + mov r13d,DWORD[240+r15] - mov eax,DWORD PTR[rdi] - mov ebx,DWORD PTR[4+rdi] - mov ecx,DWORD PTR[8+rdi] - mov edx,DWORD PTR[12+rdi] + mov eax,DWORD[rdi] + mov ebx,DWORD[4+rdi] + mov ecx,DWORD[8+rdi] + mov edx,DWORD[12+rdi] shl r13d,4 - lea rbp,QWORD PTR[r13*1+r15] - mov QWORD PTR[rsp],r15 - mov QWORD PTR[8+rsp],rbp + lea rbp,[r13*1+r15] + mov QWORD[rsp],r15 + mov QWORD[8+rsp],rbp - lea r14,QWORD PTR[(($L$AES_Td+2048))] - lea rbp,QWORD PTR[768+rsp] + lea r14,[(($L$AES_Td+2048))] + lea rbp,[768+rsp] sub rbp,r14 - and rbp,0300h - lea r14,QWORD PTR[rbp*1+r14] + and rbp,0x300 + lea r14,[rbp*1+r14] shr rbp,3 add r14,rbp call _x86_64_AES_decrypt_compact - mov r9,QWORD PTR[16+rsp] - mov rsi,QWORD PTR[24+rsp] - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx - - mov r15,QWORD PTR[rsi] - mov r14,QWORD PTR[8+rsi] - mov r13,QWORD PTR[16+rsi] - mov r12,QWORD PTR[24+rsi] - mov rbp,QWORD PTR[32+rsi] - mov rbx,QWORD PTR[40+rsi] - lea rsp,QWORD PTR[48+rsi] -$L$dec_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + mov r9,QWORD[16+rsp] + mov rsi,QWORD[24+rsp] + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_asm_AES_decrypt:: -asm_AES_decrypt ENDP +$L$SEH_end_asm_AES_decrypt: ALIGN 16 -PUBLIC asm_AES_set_encrypt_key +global asm_AES_set_encrypt_key -asm_AES_set_encrypt_key PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +asm_AES_set_encrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_asm_AES_set_encrypt_key:: +$L$SEH_begin_asm_AES_set_encrypt_key: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -882,267 +884,266 @@ $L$SEH_begin_asm_AES_set_encrypt_key:: push r14 push r15 sub rsp,8 -$L$enc_key_prologue:: +$L$enc_key_prologue: call _x86_64_AES_set_encrypt_key - mov rbp,QWORD PTR[40+rsp] - mov rbx,QWORD PTR[48+rsp] + mov rbp,QWORD[40+rsp] + mov rbx,QWORD[48+rsp] add rsp,56 -$L$enc_key_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$enc_key_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_asm_AES_set_encrypt_key:: -asm_AES_set_encrypt_key ENDP +$L$SEH_end_asm_AES_set_encrypt_key: ALIGN 16 -_x86_64_AES_set_encrypt_key PROC PRIVATE +_x86_64_AES_set_encrypt_key: mov ecx,esi mov rsi,rdi mov rdi,rdx test rsi,-1 - jz $L$badpointer + jz NEAR $L$badpointer test rdi,-1 - jz $L$badpointer + jz NEAR $L$badpointer - lea rbp,QWORD PTR[$L$AES_Te] - lea rbp,QWORD PTR[((2048+128))+rbp] + lea rbp,[$L$AES_Te] + lea rbp,[((2048+128))+rbp] - mov eax,DWORD PTR[((0-128))+rbp] - mov ebx,DWORD PTR[((32-128))+rbp] - mov r8d,DWORD PTR[((64-128))+rbp] - mov edx,DWORD PTR[((96-128))+rbp] - mov eax,DWORD PTR[((128-128))+rbp] - mov ebx,DWORD PTR[((160-128))+rbp] - mov r8d,DWORD PTR[((192-128))+rbp] - mov edx,DWORD PTR[((224-128))+rbp] + mov eax,DWORD[((0-128))+rbp] + mov ebx,DWORD[((32-128))+rbp] + mov r8d,DWORD[((64-128))+rbp] + mov edx,DWORD[((96-128))+rbp] + mov eax,DWORD[((128-128))+rbp] + mov ebx,DWORD[((160-128))+rbp] + mov r8d,DWORD[((192-128))+rbp] + mov edx,DWORD[((224-128))+rbp] cmp ecx,128 - je $L$10rounds + je NEAR $L$10rounds cmp ecx,192 - je $L$12rounds + je NEAR $L$12rounds cmp ecx,256 - je $L$14rounds + je NEAR $L$14rounds mov rax,-2 - jmp $L$exit + jmp NEAR $L$exit -$L$10rounds:: - mov rax,QWORD PTR[rsi] - mov rdx,QWORD PTR[8+rsi] - mov QWORD PTR[rdi],rax - mov QWORD PTR[8+rdi],rdx +$L$10rounds: + mov rax,QWORD[rsi] + mov rdx,QWORD[8+rsi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rdx shr rdx,32 xor ecx,ecx - jmp $L$10shortcut + jmp NEAR $L$10shortcut ALIGN 4 -$L$10loop:: - mov eax,DWORD PTR[rdi] - mov edx,DWORD PTR[12+rdi] -$L$10shortcut:: +$L$10loop: + mov eax,DWORD[rdi] + mov edx,DWORD[12+rdi] +$L$10shortcut: movzx esi,dl - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx - xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] - mov DWORD PTR[16+rdi],eax - xor eax,DWORD PTR[4+rdi] - mov DWORD PTR[20+rdi],eax - xor eax,DWORD PTR[8+rdi] - mov DWORD PTR[24+rdi],eax - xor eax,DWORD PTR[12+rdi] - mov DWORD PTR[28+rdi],eax + xor eax,DWORD[((1024-128))+rcx*4+rbp] + mov DWORD[16+rdi],eax + xor eax,DWORD[4+rdi] + mov DWORD[20+rdi],eax + xor eax,DWORD[8+rdi] + mov DWORD[24+rdi],eax + xor eax,DWORD[12+rdi] + mov DWORD[28+rdi],eax add ecx,1 - lea rdi,QWORD PTR[16+rdi] + lea rdi,[16+rdi] cmp ecx,10 - jl $L$10loop + jl NEAR $L$10loop - mov DWORD PTR[80+rdi],10 + mov DWORD[80+rdi],10 xor rax,rax - jmp $L$exit + jmp NEAR $L$exit -$L$12rounds:: - mov rax,QWORD PTR[rsi] - mov rbx,QWORD PTR[8+rsi] - mov rdx,QWORD PTR[16+rsi] - mov QWORD PTR[rdi],rax - mov QWORD PTR[8+rdi],rbx - mov QWORD PTR[16+rdi],rdx +$L$12rounds: + mov rax,QWORD[rsi] + mov rbx,QWORD[8+rsi] + mov rdx,QWORD[16+rsi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rdx shr rdx,32 xor ecx,ecx - jmp $L$12shortcut + jmp NEAR $L$12shortcut ALIGN 4 -$L$12loop:: - mov eax,DWORD PTR[rdi] - mov edx,DWORD PTR[20+rdi] -$L$12shortcut:: +$L$12loop: + mov eax,DWORD[rdi] + mov edx,DWORD[20+rdi] +$L$12shortcut: movzx esi,dl - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx - xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] - mov DWORD PTR[24+rdi],eax - xor eax,DWORD PTR[4+rdi] - mov DWORD PTR[28+rdi],eax - xor eax,DWORD PTR[8+rdi] - mov DWORD PTR[32+rdi],eax - xor eax,DWORD PTR[12+rdi] - mov DWORD PTR[36+rdi],eax + xor eax,DWORD[((1024-128))+rcx*4+rbp] + mov DWORD[24+rdi],eax + xor eax,DWORD[4+rdi] + mov DWORD[28+rdi],eax + xor eax,DWORD[8+rdi] + mov DWORD[32+rdi],eax + xor eax,DWORD[12+rdi] + mov DWORD[36+rdi],eax cmp ecx,7 - je $L$12break + je NEAR $L$12break add ecx,1 - xor eax,DWORD PTR[16+rdi] - mov DWORD PTR[40+rdi],eax - xor eax,DWORD PTR[20+rdi] - mov DWORD PTR[44+rdi],eax + xor eax,DWORD[16+rdi] + mov DWORD[40+rdi],eax + xor eax,DWORD[20+rdi] + mov DWORD[44+rdi],eax - lea rdi,QWORD PTR[24+rdi] - jmp $L$12loop -$L$12break:: - mov DWORD PTR[72+rdi],12 + lea rdi,[24+rdi] + jmp NEAR $L$12loop +$L$12break: + mov DWORD[72+rdi],12 xor rax,rax - jmp $L$exit - -$L$14rounds:: - mov rax,QWORD PTR[rsi] - mov rbx,QWORD PTR[8+rsi] - mov rcx,QWORD PTR[16+rsi] - mov rdx,QWORD PTR[24+rsi] - mov QWORD PTR[rdi],rax - mov QWORD PTR[8+rdi],rbx - mov QWORD PTR[16+rdi],rcx - mov QWORD PTR[24+rdi],rdx + jmp NEAR $L$exit + +$L$14rounds: + mov rax,QWORD[rsi] + mov rbx,QWORD[8+rsi] + mov rcx,QWORD[16+rsi] + mov rdx,QWORD[24+rsi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[16+rdi],rcx + mov QWORD[24+rdi],rdx shr rdx,32 xor ecx,ecx - jmp $L$14shortcut + jmp NEAR $L$14shortcut ALIGN 4 -$L$14loop:: - mov eax,DWORD PTR[rdi] - mov edx,DWORD PTR[28+rdi] -$L$14shortcut:: +$L$14loop: + mov eax,DWORD[rdi] + mov edx,DWORD[28+rdi] +$L$14shortcut: movzx esi,dl - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx - xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] - mov DWORD PTR[32+rdi],eax - xor eax,DWORD PTR[4+rdi] - mov DWORD PTR[36+rdi],eax - xor eax,DWORD PTR[8+rdi] - mov DWORD PTR[40+rdi],eax - xor eax,DWORD PTR[12+rdi] - mov DWORD PTR[44+rdi],eax + xor eax,DWORD[((1024-128))+rcx*4+rbp] + mov DWORD[32+rdi],eax + xor eax,DWORD[4+rdi] + mov DWORD[36+rdi],eax + xor eax,DWORD[8+rdi] + mov DWORD[40+rdi],eax + xor eax,DWORD[12+rdi] + mov DWORD[44+rdi],eax cmp ecx,6 - je $L$14break + je NEAR $L$14break add ecx,1 mov edx,eax - mov eax,DWORD PTR[16+rdi] + mov eax,DWORD[16+rdi] movzx esi,dl - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shr edx,16 shl ebx,8 movzx esi,dl xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,16 xor eax,ebx - movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] + movzx ebx,BYTE[((-128))+rsi*1+rbp] shl ebx,24 xor eax,ebx - mov DWORD PTR[48+rdi],eax - xor eax,DWORD PTR[20+rdi] - mov DWORD PTR[52+rdi],eax - xor eax,DWORD PTR[24+rdi] - mov DWORD PTR[56+rdi],eax - xor eax,DWORD PTR[28+rdi] - mov DWORD PTR[60+rdi],eax - - lea rdi,QWORD PTR[32+rdi] - jmp $L$14loop -$L$14break:: - mov DWORD PTR[48+rdi],14 + mov DWORD[48+rdi],eax + xor eax,DWORD[20+rdi] + mov DWORD[52+rdi],eax + xor eax,DWORD[24+rdi] + mov DWORD[56+rdi],eax + xor eax,DWORD[28+rdi] + mov DWORD[60+rdi],eax + + lea rdi,[32+rdi] + jmp NEAR $L$14loop +$L$14break: + mov DWORD[48+rdi],14 xor rax,rax - jmp $L$exit + jmp NEAR $L$exit -$L$badpointer:: +$L$badpointer: mov rax,-1 -$L$exit:: -DB 0f3h,0c3h -_x86_64_AES_set_encrypt_key ENDP +$L$exit: +DB 0xf3,0xc3 + ALIGN 16 -PUBLIC asm_AES_set_decrypt_key +global asm_AES_set_decrypt_key -asm_AES_set_decrypt_key PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +asm_AES_set_decrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_asm_AES_set_decrypt_key:: +$L$SEH_begin_asm_AES_set_decrypt_key: mov rdi,rcx mov rsi,rdx mov rdx,r8 @@ -1155,46 +1156,46 @@ $L$SEH_begin_asm_AES_set_decrypt_key:: push r14 push r15 push rdx -$L$dec_key_prologue:: +$L$dec_key_prologue: call _x86_64_AES_set_encrypt_key - mov r8,QWORD PTR[rsp] + mov r8,QWORD[rsp] cmp eax,0 - jne $L$abort + jne NEAR $L$abort - mov r14d,DWORD PTR[240+r8] + mov r14d,DWORD[240+r8] xor rdi,rdi - lea rcx,QWORD PTR[r14*4+rdi] + lea rcx,[r14*4+rdi] mov rsi,r8 - lea rdi,QWORD PTR[rcx*4+r8] + lea rdi,[rcx*4+r8] ALIGN 4 -$L$invert:: - mov rax,QWORD PTR[rsi] - mov rbx,QWORD PTR[8+rsi] - mov rcx,QWORD PTR[rdi] - mov rdx,QWORD PTR[8+rdi] - mov QWORD PTR[rdi],rax - mov QWORD PTR[8+rdi],rbx - mov QWORD PTR[rsi],rcx - mov QWORD PTR[8+rsi],rdx - lea rsi,QWORD PTR[16+rsi] - lea rdi,QWORD PTR[((-16))+rdi] +$L$invert: + mov rax,QWORD[rsi] + mov rbx,QWORD[8+rsi] + mov rcx,QWORD[rdi] + mov rdx,QWORD[8+rdi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + mov QWORD[rsi],rcx + mov QWORD[8+rsi],rdx + lea rsi,[16+rsi] + lea rdi,[((-16))+rdi] cmp rdi,rsi - jne $L$invert + jne NEAR $L$invert - lea rax,QWORD PTR[(($L$AES_Te+2048+1024))] + lea rax,[(($L$AES_Te+2048+1024))] - mov rsi,QWORD PTR[40+rax] - mov rdi,QWORD PTR[48+rax] - mov rbp,QWORD PTR[56+rax] + mov rsi,QWORD[40+rax] + mov rdi,QWORD[48+rax] + mov rbp,QWORD[56+rax] mov r15,r8 sub r14d,1 ALIGN 4 -$L$permute:: - lea r15,QWORD PTR[16+r15] - mov rax,QWORD PTR[r15] - mov rcx,QWORD PTR[8+r15] +$L$permute: + lea r15,[16+r15] + mov rax,QWORD[r15] + mov rcx,QWORD[8+r15] mov r9,rsi mov r12,rsi and r9,rax @@ -1202,9 +1203,9 @@ $L$permute:: mov rbx,r9 mov rdx,r12 shr r9,7 - lea r8,QWORD PTR[rax*1+rax] + lea r8,[rax*1+rax] shr r12,7 - lea r11,QWORD PTR[rcx*1+rcx] + lea r11,[rcx*1+rcx] sub rbx,r9 sub rdx,r12 and r8,rdi @@ -1221,9 +1222,9 @@ $L$permute:: mov rbx,r10 mov rdx,r13 shr r10,7 - lea r9,QWORD PTR[r8*1+r8] + lea r9,[r8*1+r8] shr r13,7 - lea r12,QWORD PTR[r11*1+r11] + lea r12,[r11*1+r11] sub rbx,r10 sub rdx,r13 and r9,rdi @@ -1245,8 +1246,8 @@ $L$permute:: xor r11,rcx sub rbx,r10 sub rdx,r13 - lea r10,QWORD PTR[r9*1+r9] - lea r13,QWORD PTR[r12*1+r12] + lea r10,[r9*1+r9] + lea r13,[r12*1+r12] xor r9,rax xor r12,rcx and r10,rdi @@ -1312,48 +1313,47 @@ $L$permute:: xor ebx,r8d xor edx,r11d - mov DWORD PTR[r15],eax - mov DWORD PTR[4+r15],ebx - mov DWORD PTR[8+r15],ecx - mov DWORD PTR[12+r15],edx + mov DWORD[r15],eax + mov DWORD[4+r15],ebx + mov DWORD[8+r15],ecx + mov DWORD[12+r15],edx sub r14d,1 - jnz $L$permute + jnz NEAR $L$permute xor rax,rax -$L$abort:: - mov r15,QWORD PTR[8+rsp] - mov r14,QWORD PTR[16+rsp] - mov r13,QWORD PTR[24+rsp] - mov r12,QWORD PTR[32+rsp] - mov rbp,QWORD PTR[40+rsp] - mov rbx,QWORD PTR[48+rsp] +$L$abort: + mov r15,QWORD[8+rsp] + mov r14,QWORD[16+rsp] + mov r13,QWORD[24+rsp] + mov r12,QWORD[32+rsp] + mov rbp,QWORD[40+rsp] + mov rbx,QWORD[48+rsp] add rsp,56 -$L$dec_key_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$dec_key_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_asm_AES_set_decrypt_key:: -asm_AES_set_decrypt_key ENDP +$L$SEH_end_asm_AES_set_decrypt_key: ALIGN 16 -PUBLIC asm_AES_cbc_encrypt +global asm_AES_cbc_encrypt -EXTERN OPENSSL_ia32cap_P:NEAR +EXTERN OPENSSL_ia32cap_P -asm_AES_cbc_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +asm_AES_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_asm_AES_cbc_encrypt:: +$L$SEH_begin_asm_AES_cbc_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] cmp rdx,0 - je $L$cbc_epilogue + je NEAR $L$cbc_epilogue pushfq push rbx push rbp @@ -1361,269 +1361,269 @@ $L$SEH_begin_asm_AES_cbc_encrypt:: push r13 push r14 push r15 -$L$cbc_prologue:: +$L$cbc_prologue: cld mov r9d,r9d - lea r14,QWORD PTR[$L$AES_Te] + lea r14,[$L$AES_Te] cmp r9,0 - jne $L$cbc_picked_te - lea r14,QWORD PTR[$L$AES_Td] -$L$cbc_picked_te:: + jne NEAR $L$cbc_picked_te + lea r14,[$L$AES_Td] +$L$cbc_picked_te: - mov r10d,DWORD PTR[OPENSSL_ia32cap_P] + mov r10d,DWORD[OPENSSL_ia32cap_P] cmp rdx,512 - jb $L$cbc_slow_prologue + jb NEAR $L$cbc_slow_prologue test rdx,15 - jnz $L$cbc_slow_prologue + jnz NEAR $L$cbc_slow_prologue bt r10d,28 - jc $L$cbc_slow_prologue + jc NEAR $L$cbc_slow_prologue - lea r15,QWORD PTR[((-88-248))+rsp] + lea r15,[((-88-248))+rsp] and r15,-64 mov r10,r14 - lea r11,QWORD PTR[2304+r14] + lea r11,[2304+r14] mov r12,r15 - and r10,0FFFh - and r11,0FFFh - and r12,0FFFh + and r10,0xFFF + and r11,0xFFF + and r12,0xFFF cmp r12,r11 - jb $L$cbc_te_break_out + jb NEAR $L$cbc_te_break_out sub r12,r11 sub r15,r12 - jmp $L$cbc_te_ok -$L$cbc_te_break_out:: + jmp NEAR $L$cbc_te_ok +$L$cbc_te_break_out: sub r12,r10 - and r12,0FFFh + and r12,0xFFF add r12,320 sub r15,r12 ALIGN 4 -$L$cbc_te_ok:: +$L$cbc_te_ok: xchg r15,rsp - mov QWORD PTR[16+rsp],r15 -$L$cbc_fast_body:: - mov QWORD PTR[24+rsp],rdi - mov QWORD PTR[32+rsp],rsi - mov QWORD PTR[40+rsp],rdx - mov QWORD PTR[48+rsp],rcx - mov QWORD PTR[56+rsp],r8 - mov DWORD PTR[((80+240))+rsp],0 + mov QWORD[16+rsp],r15 +$L$cbc_fast_body: + mov QWORD[24+rsp],rdi + mov QWORD[32+rsp],rsi + mov QWORD[40+rsp],rdx + mov QWORD[48+rsp],rcx + mov QWORD[56+rsp],r8 + mov DWORD[((80+240))+rsp],0 mov rbp,r8 mov rbx,r9 mov r9,rsi mov r8,rdi mov r15,rcx - mov eax,DWORD PTR[240+r15] + mov eax,DWORD[240+r15] mov r10,r15 sub r10,r14 - and r10,0fffh + and r10,0xfff cmp r10,2304 - jb $L$cbc_do_ecopy + jb NEAR $L$cbc_do_ecopy cmp r10,4096-248 - jb $L$cbc_skip_ecopy + jb NEAR $L$cbc_skip_ecopy ALIGN 4 -$L$cbc_do_ecopy:: +$L$cbc_do_ecopy: mov rsi,r15 - lea rdi,QWORD PTR[80+rsp] - lea r15,QWORD PTR[80+rsp] + lea rdi,[80+rsp] + lea r15,[80+rsp] mov ecx,240/8 - DD 090A548F3h - mov DWORD PTR[rdi],eax -$L$cbc_skip_ecopy:: - mov QWORD PTR[rsp],r15 + DD 0x90A548F3 + mov DWORD[rdi],eax +$L$cbc_skip_ecopy: + mov QWORD[rsp],r15 mov ecx,18 ALIGN 4 -$L$cbc_prefetch_te:: - mov r10,QWORD PTR[r14] - mov r11,QWORD PTR[32+r14] - mov r12,QWORD PTR[64+r14] - mov r13,QWORD PTR[96+r14] - lea r14,QWORD PTR[128+r14] +$L$cbc_prefetch_te: + mov r10,QWORD[r14] + mov r11,QWORD[32+r14] + mov r12,QWORD[64+r14] + mov r13,QWORD[96+r14] + lea r14,[128+r14] sub ecx,1 - jnz $L$cbc_prefetch_te - lea r14,QWORD PTR[((-2304))+r14] + jnz NEAR $L$cbc_prefetch_te + lea r14,[((-2304))+r14] cmp rbx,0 - je $L$FAST_DECRYPT + je NEAR $L$FAST_DECRYPT - mov eax,DWORD PTR[rbp] - mov ebx,DWORD PTR[4+rbp] - mov ecx,DWORD PTR[8+rbp] - mov edx,DWORD PTR[12+rbp] + mov eax,DWORD[rbp] + mov ebx,DWORD[4+rbp] + mov ecx,DWORD[8+rbp] + mov edx,DWORD[12+rbp] ALIGN 4 -$L$cbc_fast_enc_loop:: - xor eax,DWORD PTR[r8] - xor ebx,DWORD PTR[4+r8] - xor ecx,DWORD PTR[8+r8] - xor edx,DWORD PTR[12+r8] - mov r15,QWORD PTR[rsp] - mov QWORD PTR[24+rsp],r8 +$L$cbc_fast_enc_loop: + xor eax,DWORD[r8] + xor ebx,DWORD[4+r8] + xor ecx,DWORD[8+r8] + xor edx,DWORD[12+r8] + mov r15,QWORD[rsp] + mov QWORD[24+rsp],r8 call _x86_64_AES_encrypt - mov r8,QWORD PTR[24+rsp] - mov r10,QWORD PTR[40+rsp] - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx + mov r8,QWORD[24+rsp] + mov r10,QWORD[40+rsp] + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx - lea r8,QWORD PTR[16+r8] - lea r9,QWORD PTR[16+r9] + lea r8,[16+r8] + lea r9,[16+r9] sub r10,16 test r10,-16 - mov QWORD PTR[40+rsp],r10 - jnz $L$cbc_fast_enc_loop - mov rbp,QWORD PTR[56+rsp] - mov DWORD PTR[rbp],eax - mov DWORD PTR[4+rbp],ebx - mov DWORD PTR[8+rbp],ecx - mov DWORD PTR[12+rbp],edx + mov QWORD[40+rsp],r10 + jnz NEAR $L$cbc_fast_enc_loop + mov rbp,QWORD[56+rsp] + mov DWORD[rbp],eax + mov DWORD[4+rbp],ebx + mov DWORD[8+rbp],ecx + mov DWORD[12+rbp],edx - jmp $L$cbc_fast_cleanup + jmp NEAR $L$cbc_fast_cleanup ALIGN 16 -$L$FAST_DECRYPT:: +$L$FAST_DECRYPT: cmp r9,r8 - je $L$cbc_fast_dec_in_place + je NEAR $L$cbc_fast_dec_in_place - mov QWORD PTR[64+rsp],rbp + mov QWORD[64+rsp],rbp ALIGN 4 -$L$cbc_fast_dec_loop:: - mov eax,DWORD PTR[r8] - mov ebx,DWORD PTR[4+r8] - mov ecx,DWORD PTR[8+r8] - mov edx,DWORD PTR[12+r8] - mov r15,QWORD PTR[rsp] - mov QWORD PTR[24+rsp],r8 +$L$cbc_fast_dec_loop: + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov r15,QWORD[rsp] + mov QWORD[24+rsp],r8 call _x86_64_AES_decrypt - mov rbp,QWORD PTR[64+rsp] - mov r8,QWORD PTR[24+rsp] - mov r10,QWORD PTR[40+rsp] - xor eax,DWORD PTR[rbp] - xor ebx,DWORD PTR[4+rbp] - xor ecx,DWORD PTR[8+rbp] - xor edx,DWORD PTR[12+rbp] + mov rbp,QWORD[64+rsp] + mov r8,QWORD[24+rsp] + mov r10,QWORD[40+rsp] + xor eax,DWORD[rbp] + xor ebx,DWORD[4+rbp] + xor ecx,DWORD[8+rbp] + xor edx,DWORD[12+rbp] mov rbp,r8 sub r10,16 - mov QWORD PTR[40+rsp],r10 - mov QWORD PTR[64+rsp],rbp - - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx - - lea r8,QWORD PTR[16+r8] - lea r9,QWORD PTR[16+r9] - jnz $L$cbc_fast_dec_loop - mov r12,QWORD PTR[56+rsp] - mov r10,QWORD PTR[rbp] - mov r11,QWORD PTR[8+rbp] - mov QWORD PTR[r12],r10 - mov QWORD PTR[8+r12],r11 - jmp $L$cbc_fast_cleanup + mov QWORD[40+rsp],r10 + mov QWORD[64+rsp],rbp + + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + + lea r8,[16+r8] + lea r9,[16+r9] + jnz NEAR $L$cbc_fast_dec_loop + mov r12,QWORD[56+rsp] + mov r10,QWORD[rbp] + mov r11,QWORD[8+rbp] + mov QWORD[r12],r10 + mov QWORD[8+r12],r11 + jmp NEAR $L$cbc_fast_cleanup ALIGN 16 -$L$cbc_fast_dec_in_place:: - mov r10,QWORD PTR[rbp] - mov r11,QWORD PTR[8+rbp] - mov QWORD PTR[((0+64))+rsp],r10 - mov QWORD PTR[((8+64))+rsp],r11 +$L$cbc_fast_dec_in_place: + mov r10,QWORD[rbp] + mov r11,QWORD[8+rbp] + mov QWORD[((0+64))+rsp],r10 + mov QWORD[((8+64))+rsp],r11 ALIGN 4 -$L$cbc_fast_dec_in_place_loop:: - mov eax,DWORD PTR[r8] - mov ebx,DWORD PTR[4+r8] - mov ecx,DWORD PTR[8+r8] - mov edx,DWORD PTR[12+r8] - mov r15,QWORD PTR[rsp] - mov QWORD PTR[24+rsp],r8 +$L$cbc_fast_dec_in_place_loop: + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov r15,QWORD[rsp] + mov QWORD[24+rsp],r8 call _x86_64_AES_decrypt - mov r8,QWORD PTR[24+rsp] - mov r10,QWORD PTR[40+rsp] - xor eax,DWORD PTR[((0+64))+rsp] - xor ebx,DWORD PTR[((4+64))+rsp] - xor ecx,DWORD PTR[((8+64))+rsp] - xor edx,DWORD PTR[((12+64))+rsp] + mov r8,QWORD[24+rsp] + mov r10,QWORD[40+rsp] + xor eax,DWORD[((0+64))+rsp] + xor ebx,DWORD[((4+64))+rsp] + xor ecx,DWORD[((8+64))+rsp] + xor edx,DWORD[((12+64))+rsp] - mov r11,QWORD PTR[r8] - mov r12,QWORD PTR[8+r8] + mov r11,QWORD[r8] + mov r12,QWORD[8+r8] sub r10,16 - jz $L$cbc_fast_dec_in_place_done - - mov QWORD PTR[((0+64))+rsp],r11 - mov QWORD PTR[((8+64))+rsp],r12 - - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx - - lea r8,QWORD PTR[16+r8] - lea r9,QWORD PTR[16+r9] - mov QWORD PTR[40+rsp],r10 - jmp $L$cbc_fast_dec_in_place_loop -$L$cbc_fast_dec_in_place_done:: - mov rdi,QWORD PTR[56+rsp] - mov QWORD PTR[rdi],r11 - mov QWORD PTR[8+rdi],r12 - - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx + jz NEAR $L$cbc_fast_dec_in_place_done + + mov QWORD[((0+64))+rsp],r11 + mov QWORD[((8+64))+rsp],r12 + + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx + + lea r8,[16+r8] + lea r9,[16+r9] + mov QWORD[40+rsp],r10 + jmp NEAR $L$cbc_fast_dec_in_place_loop +$L$cbc_fast_dec_in_place_done: + mov rdi,QWORD[56+rsp] + mov QWORD[rdi],r11 + mov QWORD[8+rdi],r12 + + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx ALIGN 4 -$L$cbc_fast_cleanup:: - cmp DWORD PTR[((80+240))+rsp],0 - lea rdi,QWORD PTR[80+rsp] - je $L$cbc_exit +$L$cbc_fast_cleanup: + cmp DWORD[((80+240))+rsp],0 + lea rdi,[80+rsp] + je NEAR $L$cbc_exit mov ecx,240/8 xor rax,rax - DD 090AB48F3h + DD 0x90AB48F3 - jmp $L$cbc_exit + jmp NEAR $L$cbc_exit ALIGN 16 -$L$cbc_slow_prologue:: +$L$cbc_slow_prologue: - lea rbp,QWORD PTR[((-88))+rsp] + lea rbp,[((-88))+rsp] and rbp,-64 - lea r10,QWORD PTR[((-88-63))+rcx] + lea r10,[((-88-63))+rcx] sub r10,rbp neg r10 - and r10,03c0h + and r10,0x3c0 sub rbp,r10 xchg rbp,rsp - mov QWORD PTR[16+rsp],rbp -$L$cbc_slow_body:: + mov QWORD[16+rsp],rbp +$L$cbc_slow_body: - mov QWORD PTR[56+rsp],r8 + mov QWORD[56+rsp],r8 mov rbp,r8 mov rbx,r9 mov r9,rsi @@ -1631,972 +1631,971 @@ $L$cbc_slow_body:: mov r15,rcx mov r10,rdx - mov eax,DWORD PTR[240+r15] - mov QWORD PTR[rsp],r15 + mov eax,DWORD[240+r15] + mov QWORD[rsp],r15 shl eax,4 - lea rax,QWORD PTR[rax*1+r15] - mov QWORD PTR[8+rsp],rax + lea rax,[rax*1+r15] + mov QWORD[8+rsp],rax - lea r14,QWORD PTR[2048+r14] - lea rax,QWORD PTR[((768-8))+rsp] + lea r14,[2048+r14] + lea rax,[((768-8))+rsp] sub rax,r14 - and rax,0300h - lea r14,QWORD PTR[rax*1+r14] + and rax,0x300 + lea r14,[rax*1+r14] cmp rbx,0 - je $L$SLOW_DECRYPT + je NEAR $L$SLOW_DECRYPT test r10,-16 - mov eax,DWORD PTR[rbp] - mov ebx,DWORD PTR[4+rbp] - mov ecx,DWORD PTR[8+rbp] - mov edx,DWORD PTR[12+rbp] - jz $L$cbc_slow_enc_tail + mov eax,DWORD[rbp] + mov ebx,DWORD[4+rbp] + mov ecx,DWORD[8+rbp] + mov edx,DWORD[12+rbp] + jz NEAR $L$cbc_slow_enc_tail ALIGN 4 -$L$cbc_slow_enc_loop:: - xor eax,DWORD PTR[r8] - xor ebx,DWORD PTR[4+r8] - xor ecx,DWORD PTR[8+r8] - xor edx,DWORD PTR[12+r8] - mov r15,QWORD PTR[rsp] - mov QWORD PTR[24+rsp],r8 - mov QWORD PTR[32+rsp],r9 - mov QWORD PTR[40+rsp],r10 +$L$cbc_slow_enc_loop: + xor eax,DWORD[r8] + xor ebx,DWORD[4+r8] + xor ecx,DWORD[8+r8] + xor edx,DWORD[12+r8] + mov r15,QWORD[rsp] + mov QWORD[24+rsp],r8 + mov QWORD[32+rsp],r9 + mov QWORD[40+rsp],r10 call _x86_64_AES_encrypt_compact - mov r8,QWORD PTR[24+rsp] - mov r9,QWORD PTR[32+rsp] - mov r10,QWORD PTR[40+rsp] - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx + mov r8,QWORD[24+rsp] + mov r9,QWORD[32+rsp] + mov r10,QWORD[40+rsp] + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx - lea r8,QWORD PTR[16+r8] - lea r9,QWORD PTR[16+r9] + lea r8,[16+r8] + lea r9,[16+r9] sub r10,16 test r10,-16 - jnz $L$cbc_slow_enc_loop + jnz NEAR $L$cbc_slow_enc_loop test r10,15 - jnz $L$cbc_slow_enc_tail - mov rbp,QWORD PTR[56+rsp] - mov DWORD PTR[rbp],eax - mov DWORD PTR[4+rbp],ebx - mov DWORD PTR[8+rbp],ecx - mov DWORD PTR[12+rbp],edx + jnz NEAR $L$cbc_slow_enc_tail + mov rbp,QWORD[56+rsp] + mov DWORD[rbp],eax + mov DWORD[4+rbp],ebx + mov DWORD[8+rbp],ecx + mov DWORD[12+rbp],edx - jmp $L$cbc_exit + jmp NEAR $L$cbc_exit ALIGN 4 -$L$cbc_slow_enc_tail:: +$L$cbc_slow_enc_tail: mov r11,rax mov r12,rcx mov rcx,r10 mov rsi,r8 mov rdi,r9 - DD 09066A4F3h + DD 0x9066A4F3 mov rcx,16 sub rcx,r10 xor rax,rax - DD 09066AAF3h + DD 0x9066AAF3 mov r8,r9 mov r10,16 mov rax,r11 mov rcx,r12 - jmp $L$cbc_slow_enc_loop + jmp NEAR $L$cbc_slow_enc_loop ALIGN 16 -$L$SLOW_DECRYPT:: +$L$SLOW_DECRYPT: shr rax,3 add r14,rax - mov r11,QWORD PTR[rbp] - mov r12,QWORD PTR[8+rbp] - mov QWORD PTR[((0+64))+rsp],r11 - mov QWORD PTR[((8+64))+rsp],r12 + mov r11,QWORD[rbp] + mov r12,QWORD[8+rbp] + mov QWORD[((0+64))+rsp],r11 + mov QWORD[((8+64))+rsp],r12 ALIGN 4 -$L$cbc_slow_dec_loop:: - mov eax,DWORD PTR[r8] - mov ebx,DWORD PTR[4+r8] - mov ecx,DWORD PTR[8+r8] - mov edx,DWORD PTR[12+r8] - mov r15,QWORD PTR[rsp] - mov QWORD PTR[24+rsp],r8 - mov QWORD PTR[32+rsp],r9 - mov QWORD PTR[40+rsp],r10 +$L$cbc_slow_dec_loop: + mov eax,DWORD[r8] + mov ebx,DWORD[4+r8] + mov ecx,DWORD[8+r8] + mov edx,DWORD[12+r8] + mov r15,QWORD[rsp] + mov QWORD[24+rsp],r8 + mov QWORD[32+rsp],r9 + mov QWORD[40+rsp],r10 call _x86_64_AES_decrypt_compact - mov r8,QWORD PTR[24+rsp] - mov r9,QWORD PTR[32+rsp] - mov r10,QWORD PTR[40+rsp] - xor eax,DWORD PTR[((0+64))+rsp] - xor ebx,DWORD PTR[((4+64))+rsp] - xor ecx,DWORD PTR[((8+64))+rsp] - xor edx,DWORD PTR[((12+64))+rsp] + mov r8,QWORD[24+rsp] + mov r9,QWORD[32+rsp] + mov r10,QWORD[40+rsp] + xor eax,DWORD[((0+64))+rsp] + xor ebx,DWORD[((4+64))+rsp] + xor ecx,DWORD[((8+64))+rsp] + xor edx,DWORD[((12+64))+rsp] - mov r11,QWORD PTR[r8] - mov r12,QWORD PTR[8+r8] + mov r11,QWORD[r8] + mov r12,QWORD[8+r8] sub r10,16 - jc $L$cbc_slow_dec_partial - jz $L$cbc_slow_dec_done + jc NEAR $L$cbc_slow_dec_partial + jz NEAR $L$cbc_slow_dec_done - mov QWORD PTR[((0+64))+rsp],r11 - mov QWORD PTR[((8+64))+rsp],r12 + mov QWORD[((0+64))+rsp],r11 + mov QWORD[((8+64))+rsp],r12 - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx - lea r8,QWORD PTR[16+r8] - lea r9,QWORD PTR[16+r9] - jmp $L$cbc_slow_dec_loop -$L$cbc_slow_dec_done:: - mov rdi,QWORD PTR[56+rsp] - mov QWORD PTR[rdi],r11 - mov QWORD PTR[8+rdi],r12 + lea r8,[16+r8] + lea r9,[16+r9] + jmp NEAR $L$cbc_slow_dec_loop +$L$cbc_slow_dec_done: + mov rdi,QWORD[56+rsp] + mov QWORD[rdi],r11 + mov QWORD[8+rdi],r12 - mov DWORD PTR[r9],eax - mov DWORD PTR[4+r9],ebx - mov DWORD PTR[8+r9],ecx - mov DWORD PTR[12+r9],edx + mov DWORD[r9],eax + mov DWORD[4+r9],ebx + mov DWORD[8+r9],ecx + mov DWORD[12+r9],edx - jmp $L$cbc_exit + jmp NEAR $L$cbc_exit ALIGN 4 -$L$cbc_slow_dec_partial:: - mov rdi,QWORD PTR[56+rsp] - mov QWORD PTR[rdi],r11 - mov QWORD PTR[8+rdi],r12 +$L$cbc_slow_dec_partial: + mov rdi,QWORD[56+rsp] + mov QWORD[rdi],r11 + mov QWORD[8+rdi],r12 - mov DWORD PTR[((0+64))+rsp],eax - mov DWORD PTR[((4+64))+rsp],ebx - mov DWORD PTR[((8+64))+rsp],ecx - mov DWORD PTR[((12+64))+rsp],edx + mov DWORD[((0+64))+rsp],eax + mov DWORD[((4+64))+rsp],ebx + mov DWORD[((8+64))+rsp],ecx + mov DWORD[((12+64))+rsp],edx mov rdi,r9 - lea rsi,QWORD PTR[64+rsp] - lea rcx,QWORD PTR[16+r10] - DD 09066A4F3h - jmp $L$cbc_exit + lea rsi,[64+rsp] + lea rcx,[16+r10] + DD 0x9066A4F3 + jmp NEAR $L$cbc_exit ALIGN 16 -$L$cbc_exit:: - mov rsi,QWORD PTR[16+rsp] - mov r15,QWORD PTR[rsi] - mov r14,QWORD PTR[8+rsi] - mov r13,QWORD PTR[16+rsi] - mov r12,QWORD PTR[24+rsi] - mov rbp,QWORD PTR[32+rsi] - mov rbx,QWORD PTR[40+rsi] - lea rsp,QWORD PTR[48+rsi] -$L$cbc_popfq:: +$L$cbc_exit: + mov rsi,QWORD[16+rsp] + mov r15,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r13,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + mov rbp,QWORD[32+rsi] + mov rbx,QWORD[40+rsi] + lea rsp,[48+rsi] +$L$cbc_popfq: popfq -$L$cbc_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$cbc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_asm_AES_cbc_encrypt:: -asm_AES_cbc_encrypt ENDP +$L$SEH_end_asm_AES_cbc_encrypt: ALIGN 64 -$L$AES_Te:: - DD 0a56363c6h,0a56363c6h - DD 0847c7cf8h,0847c7cf8h - DD 0997777eeh,0997777eeh - DD 08d7b7bf6h,08d7b7bf6h - DD 00df2f2ffh,00df2f2ffh - DD 0bd6b6bd6h,0bd6b6bd6h - DD 0b16f6fdeh,0b16f6fdeh - DD 054c5c591h,054c5c591h - DD 050303060h,050303060h - DD 003010102h,003010102h - DD 0a96767ceh,0a96767ceh - DD 07d2b2b56h,07d2b2b56h - DD 019fefee7h,019fefee7h - DD 062d7d7b5h,062d7d7b5h - DD 0e6abab4dh,0e6abab4dh - DD 09a7676ech,09a7676ech - DD 045caca8fh,045caca8fh - DD 09d82821fh,09d82821fh - DD 040c9c989h,040c9c989h - DD 0877d7dfah,0877d7dfah - DD 015fafaefh,015fafaefh - DD 0eb5959b2h,0eb5959b2h - DD 0c947478eh,0c947478eh - DD 00bf0f0fbh,00bf0f0fbh - DD 0ecadad41h,0ecadad41h - DD 067d4d4b3h,067d4d4b3h - DD 0fda2a25fh,0fda2a25fh - DD 0eaafaf45h,0eaafaf45h - DD 0bf9c9c23h,0bf9c9c23h - DD 0f7a4a453h,0f7a4a453h - DD 0967272e4h,0967272e4h - DD 05bc0c09bh,05bc0c09bh - DD 0c2b7b775h,0c2b7b775h - DD 01cfdfde1h,01cfdfde1h - DD 0ae93933dh,0ae93933dh - DD 06a26264ch,06a26264ch - DD 05a36366ch,05a36366ch - DD 0413f3f7eh,0413f3f7eh - DD 002f7f7f5h,002f7f7f5h - DD 04fcccc83h,04fcccc83h - DD 05c343468h,05c343468h - DD 0f4a5a551h,0f4a5a551h - DD 034e5e5d1h,034e5e5d1h - DD 008f1f1f9h,008f1f1f9h - DD 0937171e2h,0937171e2h - DD 073d8d8abh,073d8d8abh - DD 053313162h,053313162h - DD 03f15152ah,03f15152ah - DD 00c040408h,00c040408h - DD 052c7c795h,052c7c795h - DD 065232346h,065232346h - DD 05ec3c39dh,05ec3c39dh - DD 028181830h,028181830h - DD 0a1969637h,0a1969637h - DD 00f05050ah,00f05050ah - DD 0b59a9a2fh,0b59a9a2fh - DD 00907070eh,00907070eh - DD 036121224h,036121224h - DD 09b80801bh,09b80801bh - DD 03de2e2dfh,03de2e2dfh - DD 026ebebcdh,026ebebcdh - DD 06927274eh,06927274eh - DD 0cdb2b27fh,0cdb2b27fh - DD 09f7575eah,09f7575eah - DD 01b090912h,01b090912h - DD 09e83831dh,09e83831dh - DD 0742c2c58h,0742c2c58h - DD 02e1a1a34h,02e1a1a34h - DD 02d1b1b36h,02d1b1b36h - DD 0b26e6edch,0b26e6edch - DD 0ee5a5ab4h,0ee5a5ab4h - DD 0fba0a05bh,0fba0a05bh - DD 0f65252a4h,0f65252a4h - DD 04d3b3b76h,04d3b3b76h - DD 061d6d6b7h,061d6d6b7h - DD 0ceb3b37dh,0ceb3b37dh - DD 07b292952h,07b292952h - DD 03ee3e3ddh,03ee3e3ddh - DD 0712f2f5eh,0712f2f5eh - DD 097848413h,097848413h - DD 0f55353a6h,0f55353a6h - DD 068d1d1b9h,068d1d1b9h - DD 000000000h,000000000h - DD 02cededc1h,02cededc1h - DD 060202040h,060202040h - DD 01ffcfce3h,01ffcfce3h - DD 0c8b1b179h,0c8b1b179h - DD 0ed5b5bb6h,0ed5b5bb6h - DD 0be6a6ad4h,0be6a6ad4h - DD 046cbcb8dh,046cbcb8dh - DD 0d9bebe67h,0d9bebe67h - DD 04b393972h,04b393972h - DD 0de4a4a94h,0de4a4a94h - DD 0d44c4c98h,0d44c4c98h - DD 0e85858b0h,0e85858b0h - DD 04acfcf85h,04acfcf85h - DD 06bd0d0bbh,06bd0d0bbh - DD 02aefefc5h,02aefefc5h - DD 0e5aaaa4fh,0e5aaaa4fh - DD 016fbfbedh,016fbfbedh - DD 0c5434386h,0c5434386h - DD 0d74d4d9ah,0d74d4d9ah - DD 055333366h,055333366h - DD 094858511h,094858511h - DD 0cf45458ah,0cf45458ah - DD 010f9f9e9h,010f9f9e9h - DD 006020204h,006020204h - DD 0817f7ffeh,0817f7ffeh - DD 0f05050a0h,0f05050a0h - DD 0443c3c78h,0443c3c78h - DD 0ba9f9f25h,0ba9f9f25h - DD 0e3a8a84bh,0e3a8a84bh - DD 0f35151a2h,0f35151a2h - DD 0fea3a35dh,0fea3a35dh - DD 0c0404080h,0c0404080h - DD 08a8f8f05h,08a8f8f05h - DD 0ad92923fh,0ad92923fh - DD 0bc9d9d21h,0bc9d9d21h - DD 048383870h,048383870h - DD 004f5f5f1h,004f5f5f1h - DD 0dfbcbc63h,0dfbcbc63h - DD 0c1b6b677h,0c1b6b677h - DD 075dadaafh,075dadaafh - DD 063212142h,063212142h - DD 030101020h,030101020h - DD 01affffe5h,01affffe5h - DD 00ef3f3fdh,00ef3f3fdh - DD 06dd2d2bfh,06dd2d2bfh - DD 04ccdcd81h,04ccdcd81h - DD 0140c0c18h,0140c0c18h - DD 035131326h,035131326h - DD 02fececc3h,02fececc3h - DD 0e15f5fbeh,0e15f5fbeh - DD 0a2979735h,0a2979735h - DD 0cc444488h,0cc444488h - DD 03917172eh,03917172eh - DD 057c4c493h,057c4c493h - DD 0f2a7a755h,0f2a7a755h - DD 0827e7efch,0827e7efch - DD 0473d3d7ah,0473d3d7ah - DD 0ac6464c8h,0ac6464c8h - DD 0e75d5dbah,0e75d5dbah - DD 02b191932h,02b191932h - DD 0957373e6h,0957373e6h - DD 0a06060c0h,0a06060c0h - DD 098818119h,098818119h - DD 0d14f4f9eh,0d14f4f9eh - DD 07fdcdca3h,07fdcdca3h - DD 066222244h,066222244h - DD 07e2a2a54h,07e2a2a54h - DD 0ab90903bh,0ab90903bh - DD 08388880bh,08388880bh - DD 0ca46468ch,0ca46468ch - DD 029eeeec7h,029eeeec7h - DD 0d3b8b86bh,0d3b8b86bh - DD 03c141428h,03c141428h - DD 079dedea7h,079dedea7h - DD 0e25e5ebch,0e25e5ebch - DD 01d0b0b16h,01d0b0b16h - DD 076dbdbadh,076dbdbadh - DD 03be0e0dbh,03be0e0dbh - DD 056323264h,056323264h - DD 04e3a3a74h,04e3a3a74h - DD 01e0a0a14h,01e0a0a14h - DD 0db494992h,0db494992h - DD 00a06060ch,00a06060ch - DD 06c242448h,06c242448h - DD 0e45c5cb8h,0e45c5cb8h - DD 05dc2c29fh,05dc2c29fh - DD 06ed3d3bdh,06ed3d3bdh - DD 0efacac43h,0efacac43h - DD 0a66262c4h,0a66262c4h - DD 0a8919139h,0a8919139h - DD 0a4959531h,0a4959531h - DD 037e4e4d3h,037e4e4d3h - DD 08b7979f2h,08b7979f2h - DD 032e7e7d5h,032e7e7d5h - DD 043c8c88bh,043c8c88bh - DD 05937376eh,05937376eh - DD 0b76d6ddah,0b76d6ddah - DD 08c8d8d01h,08c8d8d01h - DD 064d5d5b1h,064d5d5b1h - DD 0d24e4e9ch,0d24e4e9ch - DD 0e0a9a949h,0e0a9a949h - DD 0b46c6cd8h,0b46c6cd8h - DD 0fa5656ach,0fa5656ach - DD 007f4f4f3h,007f4f4f3h - DD 025eaeacfh,025eaeacfh - DD 0af6565cah,0af6565cah - DD 08e7a7af4h,08e7a7af4h - DD 0e9aeae47h,0e9aeae47h - DD 018080810h,018080810h - DD 0d5baba6fh,0d5baba6fh - DD 0887878f0h,0887878f0h - DD 06f25254ah,06f25254ah - DD 0722e2e5ch,0722e2e5ch - DD 0241c1c38h,0241c1c38h - DD 0f1a6a657h,0f1a6a657h - DD 0c7b4b473h,0c7b4b473h - DD 051c6c697h,051c6c697h - DD 023e8e8cbh,023e8e8cbh - DD 07cdddda1h,07cdddda1h - DD 09c7474e8h,09c7474e8h - DD 0211f1f3eh,0211f1f3eh - DD 0dd4b4b96h,0dd4b4b96h - DD 0dcbdbd61h,0dcbdbd61h - DD 0868b8b0dh,0868b8b0dh - DD 0858a8a0fh,0858a8a0fh - DD 0907070e0h,0907070e0h - DD 0423e3e7ch,0423e3e7ch - DD 0c4b5b571h,0c4b5b571h - DD 0aa6666cch,0aa6666cch - DD 0d8484890h,0d8484890h - DD 005030306h,005030306h - DD 001f6f6f7h,001f6f6f7h - DD 0120e0e1ch,0120e0e1ch - DD 0a36161c2h,0a36161c2h - DD 05f35356ah,05f35356ah - DD 0f95757aeh,0f95757aeh - DD 0d0b9b969h,0d0b9b969h - DD 091868617h,091868617h - DD 058c1c199h,058c1c199h - DD 0271d1d3ah,0271d1d3ah - DD 0b99e9e27h,0b99e9e27h - DD 038e1e1d9h,038e1e1d9h - DD 013f8f8ebh,013f8f8ebh - DD 0b398982bh,0b398982bh - DD 033111122h,033111122h - DD 0bb6969d2h,0bb6969d2h - DD 070d9d9a9h,070d9d9a9h - DD 0898e8e07h,0898e8e07h - DD 0a7949433h,0a7949433h - DD 0b69b9b2dh,0b69b9b2dh - DD 0221e1e3ch,0221e1e3ch - DD 092878715h,092878715h - DD 020e9e9c9h,020e9e9c9h - DD 049cece87h,049cece87h - DD 0ff5555aah,0ff5555aah - DD 078282850h,078282850h - DD 07adfdfa5h,07adfdfa5h - DD 08f8c8c03h,08f8c8c03h - DD 0f8a1a159h,0f8a1a159h - DD 080898909h,080898909h - DD 0170d0d1ah,0170d0d1ah - DD 0dabfbf65h,0dabfbf65h - DD 031e6e6d7h,031e6e6d7h - DD 0c6424284h,0c6424284h - DD 0b86868d0h,0b86868d0h - DD 0c3414182h,0c3414182h - DD 0b0999929h,0b0999929h - DD 0772d2d5ah,0772d2d5ah - DD 0110f0f1eh,0110f0f1eh - DD 0cbb0b07bh,0cbb0b07bh - DD 0fc5454a8h,0fc5454a8h - DD 0d6bbbb6dh,0d6bbbb6dh - DD 03a16162ch,03a16162ch -DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h -DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h -DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h -DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h -DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch -DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h -DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah -DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h -DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h -DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h -DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh -DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh -DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h -DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h -DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h -DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h -DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h -DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h -DB 060h,081h,04fh,0dch,022h,02ah,090h,088h -DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh -DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch -DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h -DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h -DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h -DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h -DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah -DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh -DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh -DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h -DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh -DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h -DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h -DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h -DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h -DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h -DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h -DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch -DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h -DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah -DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h -DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h -DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h -DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh -DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh -DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h -DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h -DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h -DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h -DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h -DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h -DB 060h,081h,04fh,0dch,022h,02ah,090h,088h -DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh -DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch -DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h -DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h -DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h -DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h -DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah -DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh -DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh -DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h -DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh -DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h -DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h -DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h -DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h -DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h -DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h -DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch -DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h -DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah -DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h -DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h -DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h -DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh -DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh -DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h -DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h -DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h -DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h -DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h -DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h -DB 060h,081h,04fh,0dch,022h,02ah,090h,088h -DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh -DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch -DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h -DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h -DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h -DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h -DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah -DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh -DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh -DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h -DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh -DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h -DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h -DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h -DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h -DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h -DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h -DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch -DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h -DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah -DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h -DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h -DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h -DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh -DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh -DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h -DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h -DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h -DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h -DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h -DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h -DB 060h,081h,04fh,0dch,022h,02ah,090h,088h -DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh -DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch -DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h -DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h -DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h -DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h -DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah -DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh -DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh -DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h -DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh -DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h -DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h - DD 000000001h,000000002h,000000004h,000000008h - DD 000000010h,000000020h,000000040h,000000080h - DD 00000001bh,000000036h,080808080h,080808080h - DD 0fefefefeh,0fefefefeh,01b1b1b1bh,01b1b1b1bh +$L$AES_Te: + DD 0xa56363c6,0xa56363c6 + DD 0x847c7cf8,0x847c7cf8 + DD 0x997777ee,0x997777ee + DD 0x8d7b7bf6,0x8d7b7bf6 + DD 0x0df2f2ff,0x0df2f2ff + DD 0xbd6b6bd6,0xbd6b6bd6 + DD 0xb16f6fde,0xb16f6fde + DD 0x54c5c591,0x54c5c591 + DD 0x50303060,0x50303060 + DD 0x03010102,0x03010102 + DD 0xa96767ce,0xa96767ce + DD 0x7d2b2b56,0x7d2b2b56 + DD 0x19fefee7,0x19fefee7 + DD 0x62d7d7b5,0x62d7d7b5 + DD 0xe6abab4d,0xe6abab4d + DD 0x9a7676ec,0x9a7676ec + DD 0x45caca8f,0x45caca8f + DD 0x9d82821f,0x9d82821f + DD 0x40c9c989,0x40c9c989 + DD 0x877d7dfa,0x877d7dfa + DD 0x15fafaef,0x15fafaef + DD 0xeb5959b2,0xeb5959b2 + DD 0xc947478e,0xc947478e + DD 0x0bf0f0fb,0x0bf0f0fb + DD 0xecadad41,0xecadad41 + DD 0x67d4d4b3,0x67d4d4b3 + DD 0xfda2a25f,0xfda2a25f + DD 0xeaafaf45,0xeaafaf45 + DD 0xbf9c9c23,0xbf9c9c23 + DD 0xf7a4a453,0xf7a4a453 + DD 0x967272e4,0x967272e4 + DD 0x5bc0c09b,0x5bc0c09b + DD 0xc2b7b775,0xc2b7b775 + DD 0x1cfdfde1,0x1cfdfde1 + DD 0xae93933d,0xae93933d + DD 0x6a26264c,0x6a26264c + DD 0x5a36366c,0x5a36366c + DD 0x413f3f7e,0x413f3f7e + DD 0x02f7f7f5,0x02f7f7f5 + DD 0x4fcccc83,0x4fcccc83 + DD 0x5c343468,0x5c343468 + DD 0xf4a5a551,0xf4a5a551 + DD 0x34e5e5d1,0x34e5e5d1 + DD 0x08f1f1f9,0x08f1f1f9 + DD 0x937171e2,0x937171e2 + DD 0x73d8d8ab,0x73d8d8ab + DD 0x53313162,0x53313162 + DD 0x3f15152a,0x3f15152a + DD 0x0c040408,0x0c040408 + DD 0x52c7c795,0x52c7c795 + DD 0x65232346,0x65232346 + DD 0x5ec3c39d,0x5ec3c39d + DD 0x28181830,0x28181830 + DD 0xa1969637,0xa1969637 + DD 0x0f05050a,0x0f05050a + DD 0xb59a9a2f,0xb59a9a2f + DD 0x0907070e,0x0907070e + DD 0x36121224,0x36121224 + DD 0x9b80801b,0x9b80801b + DD 0x3de2e2df,0x3de2e2df + DD 0x26ebebcd,0x26ebebcd + DD 0x6927274e,0x6927274e + DD 0xcdb2b27f,0xcdb2b27f + DD 0x9f7575ea,0x9f7575ea + DD 0x1b090912,0x1b090912 + DD 0x9e83831d,0x9e83831d + DD 0x742c2c58,0x742c2c58 + DD 0x2e1a1a34,0x2e1a1a34 + DD 0x2d1b1b36,0x2d1b1b36 + DD 0xb26e6edc,0xb26e6edc + DD 0xee5a5ab4,0xee5a5ab4 + DD 0xfba0a05b,0xfba0a05b + DD 0xf65252a4,0xf65252a4 + DD 0x4d3b3b76,0x4d3b3b76 + DD 0x61d6d6b7,0x61d6d6b7 + DD 0xceb3b37d,0xceb3b37d + DD 0x7b292952,0x7b292952 + DD 0x3ee3e3dd,0x3ee3e3dd + DD 0x712f2f5e,0x712f2f5e + DD 0x97848413,0x97848413 + DD 0xf55353a6,0xf55353a6 + DD 0x68d1d1b9,0x68d1d1b9 + DD 0x00000000,0x00000000 + DD 0x2cededc1,0x2cededc1 + DD 0x60202040,0x60202040 + DD 0x1ffcfce3,0x1ffcfce3 + DD 0xc8b1b179,0xc8b1b179 + DD 0xed5b5bb6,0xed5b5bb6 + DD 0xbe6a6ad4,0xbe6a6ad4 + DD 0x46cbcb8d,0x46cbcb8d + DD 0xd9bebe67,0xd9bebe67 + DD 0x4b393972,0x4b393972 + DD 0xde4a4a94,0xde4a4a94 + DD 0xd44c4c98,0xd44c4c98 + DD 0xe85858b0,0xe85858b0 + DD 0x4acfcf85,0x4acfcf85 + DD 0x6bd0d0bb,0x6bd0d0bb + DD 0x2aefefc5,0x2aefefc5 + DD 0xe5aaaa4f,0xe5aaaa4f + DD 0x16fbfbed,0x16fbfbed + DD 0xc5434386,0xc5434386 + DD 0xd74d4d9a,0xd74d4d9a + DD 0x55333366,0x55333366 + DD 0x94858511,0x94858511 + DD 0xcf45458a,0xcf45458a + DD 0x10f9f9e9,0x10f9f9e9 + DD 0x06020204,0x06020204 + DD 0x817f7ffe,0x817f7ffe + DD 0xf05050a0,0xf05050a0 + DD 0x443c3c78,0x443c3c78 + DD 0xba9f9f25,0xba9f9f25 + DD 0xe3a8a84b,0xe3a8a84b + DD 0xf35151a2,0xf35151a2 + DD 0xfea3a35d,0xfea3a35d + DD 0xc0404080,0xc0404080 + DD 0x8a8f8f05,0x8a8f8f05 + DD 0xad92923f,0xad92923f + DD 0xbc9d9d21,0xbc9d9d21 + DD 0x48383870,0x48383870 + DD 0x04f5f5f1,0x04f5f5f1 + DD 0xdfbcbc63,0xdfbcbc63 + DD 0xc1b6b677,0xc1b6b677 + DD 0x75dadaaf,0x75dadaaf + DD 0x63212142,0x63212142 + DD 0x30101020,0x30101020 + DD 0x1affffe5,0x1affffe5 + DD 0x0ef3f3fd,0x0ef3f3fd + DD 0x6dd2d2bf,0x6dd2d2bf + DD 0x4ccdcd81,0x4ccdcd81 + DD 0x140c0c18,0x140c0c18 + DD 0x35131326,0x35131326 + DD 0x2fececc3,0x2fececc3 + DD 0xe15f5fbe,0xe15f5fbe + DD 0xa2979735,0xa2979735 + DD 0xcc444488,0xcc444488 + DD 0x3917172e,0x3917172e + DD 0x57c4c493,0x57c4c493 + DD 0xf2a7a755,0xf2a7a755 + DD 0x827e7efc,0x827e7efc + DD 0x473d3d7a,0x473d3d7a + DD 0xac6464c8,0xac6464c8 + DD 0xe75d5dba,0xe75d5dba + DD 0x2b191932,0x2b191932 + DD 0x957373e6,0x957373e6 + DD 0xa06060c0,0xa06060c0 + DD 0x98818119,0x98818119 + DD 0xd14f4f9e,0xd14f4f9e + DD 0x7fdcdca3,0x7fdcdca3 + DD 0x66222244,0x66222244 + DD 0x7e2a2a54,0x7e2a2a54 + DD 0xab90903b,0xab90903b + DD 0x8388880b,0x8388880b + DD 0xca46468c,0xca46468c + DD 0x29eeeec7,0x29eeeec7 + DD 0xd3b8b86b,0xd3b8b86b + DD 0x3c141428,0x3c141428 + DD 0x79dedea7,0x79dedea7 + DD 0xe25e5ebc,0xe25e5ebc + DD 0x1d0b0b16,0x1d0b0b16 + DD 0x76dbdbad,0x76dbdbad + DD 0x3be0e0db,0x3be0e0db + DD 0x56323264,0x56323264 + DD 0x4e3a3a74,0x4e3a3a74 + DD 0x1e0a0a14,0x1e0a0a14 + DD 0xdb494992,0xdb494992 + DD 0x0a06060c,0x0a06060c + DD 0x6c242448,0x6c242448 + DD 0xe45c5cb8,0xe45c5cb8 + DD 0x5dc2c29f,0x5dc2c29f + DD 0x6ed3d3bd,0x6ed3d3bd + DD 0xefacac43,0xefacac43 + DD 0xa66262c4,0xa66262c4 + DD 0xa8919139,0xa8919139 + DD 0xa4959531,0xa4959531 + DD 0x37e4e4d3,0x37e4e4d3 + DD 0x8b7979f2,0x8b7979f2 + DD 0x32e7e7d5,0x32e7e7d5 + DD 0x43c8c88b,0x43c8c88b + DD 0x5937376e,0x5937376e + DD 0xb76d6dda,0xb76d6dda + DD 0x8c8d8d01,0x8c8d8d01 + DD 0x64d5d5b1,0x64d5d5b1 + DD 0xd24e4e9c,0xd24e4e9c + DD 0xe0a9a949,0xe0a9a949 + DD 0xb46c6cd8,0xb46c6cd8 + DD 0xfa5656ac,0xfa5656ac + DD 0x07f4f4f3,0x07f4f4f3 + DD 0x25eaeacf,0x25eaeacf + DD 0xaf6565ca,0xaf6565ca + DD 0x8e7a7af4,0x8e7a7af4 + DD 0xe9aeae47,0xe9aeae47 + DD 0x18080810,0x18080810 + DD 0xd5baba6f,0xd5baba6f + DD 0x887878f0,0x887878f0 + DD 0x6f25254a,0x6f25254a + DD 0x722e2e5c,0x722e2e5c + DD 0x241c1c38,0x241c1c38 + DD 0xf1a6a657,0xf1a6a657 + DD 0xc7b4b473,0xc7b4b473 + DD 0x51c6c697,0x51c6c697 + DD 0x23e8e8cb,0x23e8e8cb + DD 0x7cdddda1,0x7cdddda1 + DD 0x9c7474e8,0x9c7474e8 + DD 0x211f1f3e,0x211f1f3e + DD 0xdd4b4b96,0xdd4b4b96 + DD 0xdcbdbd61,0xdcbdbd61 + DD 0x868b8b0d,0x868b8b0d + DD 0x858a8a0f,0x858a8a0f + DD 0x907070e0,0x907070e0 + DD 0x423e3e7c,0x423e3e7c + DD 0xc4b5b571,0xc4b5b571 + DD 0xaa6666cc,0xaa6666cc + DD 0xd8484890,0xd8484890 + DD 0x05030306,0x05030306 + DD 0x01f6f6f7,0x01f6f6f7 + DD 0x120e0e1c,0x120e0e1c + DD 0xa36161c2,0xa36161c2 + DD 0x5f35356a,0x5f35356a + DD 0xf95757ae,0xf95757ae + DD 0xd0b9b969,0xd0b9b969 + DD 0x91868617,0x91868617 + DD 0x58c1c199,0x58c1c199 + DD 0x271d1d3a,0x271d1d3a + DD 0xb99e9e27,0xb99e9e27 + DD 0x38e1e1d9,0x38e1e1d9 + DD 0x13f8f8eb,0x13f8f8eb + DD 0xb398982b,0xb398982b + DD 0x33111122,0x33111122 + DD 0xbb6969d2,0xbb6969d2 + DD 0x70d9d9a9,0x70d9d9a9 + DD 0x898e8e07,0x898e8e07 + DD 0xa7949433,0xa7949433 + DD 0xb69b9b2d,0xb69b9b2d + DD 0x221e1e3c,0x221e1e3c + DD 0x92878715,0x92878715 + DD 0x20e9e9c9,0x20e9e9c9 + DD 0x49cece87,0x49cece87 + DD 0xff5555aa,0xff5555aa + DD 0x78282850,0x78282850 + DD 0x7adfdfa5,0x7adfdfa5 + DD 0x8f8c8c03,0x8f8c8c03 + DD 0xf8a1a159,0xf8a1a159 + DD 0x80898909,0x80898909 + DD 0x170d0d1a,0x170d0d1a + DD 0xdabfbf65,0xdabfbf65 + DD 0x31e6e6d7,0x31e6e6d7 + DD 0xc6424284,0xc6424284 + DD 0xb86868d0,0xb86868d0 + DD 0xc3414182,0xc3414182 + DD 0xb0999929,0xb0999929 + DD 0x772d2d5a,0x772d2d5a + DD 0x110f0f1e,0x110f0f1e + DD 0xcbb0b07b,0xcbb0b07b + DD 0xfc5454a8,0xfc5454a8 + DD 0xd6bbbb6d,0xd6bbbb6d + DD 0x3a16162c,0x3a16162c +DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 +DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 +DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 +DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 +DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc +DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 +DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a +DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 +DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 +DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 +DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b +DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf +DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 +DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 +DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 +DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 +DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 +DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 +DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 +DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb +DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c +DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 +DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 +DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 +DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 +DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a +DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e +DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e +DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 +DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf +DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 +DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 +DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 +DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 +DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 +DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 +DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc +DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 +DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a +DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 +DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 +DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 +DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b +DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf +DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 +DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 +DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 +DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 +DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 +DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 +DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 +DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb +DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c +DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 +DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 +DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 +DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 +DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a +DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e +DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e +DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 +DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf +DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 +DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 +DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 +DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 +DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 +DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 +DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc +DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 +DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a +DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 +DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 +DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 +DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b +DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf +DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 +DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 +DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 +DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 +DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 +DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 +DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 +DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb +DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c +DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 +DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 +DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 +DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 +DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a +DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e +DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e +DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 +DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf +DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 +DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 +DB 0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5 +DB 0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76 +DB 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0 +DB 0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0 +DB 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc +DB 0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15 +DB 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a +DB 0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75 +DB 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0 +DB 0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84 +DB 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b +DB 0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf +DB 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85 +DB 0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8 +DB 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5 +DB 0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2 +DB 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17 +DB 0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73 +DB 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88 +DB 0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb +DB 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c +DB 0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79 +DB 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9 +DB 0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08 +DB 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6 +DB 0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a +DB 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e +DB 0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e +DB 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94 +DB 0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf +DB 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68 +DB 0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16 + DD 0x00000001,0x00000002,0x00000004,0x00000008 + DD 0x00000010,0x00000020,0x00000040,0x00000080 + DD 0x0000001b,0x00000036,0x80808080,0x80808080 + DD 0xfefefefe,0xfefefefe,0x1b1b1b1b,0x1b1b1b1b ALIGN 64 -$L$AES_Td:: - DD 050a7f451h,050a7f451h - DD 05365417eh,05365417eh - DD 0c3a4171ah,0c3a4171ah - DD 0965e273ah,0965e273ah - DD 0cb6bab3bh,0cb6bab3bh - DD 0f1459d1fh,0f1459d1fh - DD 0ab58faach,0ab58faach - DD 09303e34bh,09303e34bh - DD 055fa3020h,055fa3020h - DD 0f66d76adh,0f66d76adh - DD 09176cc88h,09176cc88h - DD 0254c02f5h,0254c02f5h - DD 0fcd7e54fh,0fcd7e54fh - DD 0d7cb2ac5h,0d7cb2ac5h - DD 080443526h,080443526h - DD 08fa362b5h,08fa362b5h - DD 0495ab1deh,0495ab1deh - DD 0671bba25h,0671bba25h - DD 0980eea45h,0980eea45h - DD 0e1c0fe5dh,0e1c0fe5dh - DD 002752fc3h,002752fc3h - DD 012f04c81h,012f04c81h - DD 0a397468dh,0a397468dh - DD 0c6f9d36bh,0c6f9d36bh - DD 0e75f8f03h,0e75f8f03h - DD 0959c9215h,0959c9215h - DD 0eb7a6dbfh,0eb7a6dbfh - DD 0da595295h,0da595295h - DD 02d83bed4h,02d83bed4h - DD 0d3217458h,0d3217458h - DD 02969e049h,02969e049h - DD 044c8c98eh,044c8c98eh - DD 06a89c275h,06a89c275h - DD 078798ef4h,078798ef4h - DD 06b3e5899h,06b3e5899h - DD 0dd71b927h,0dd71b927h - DD 0b64fe1beh,0b64fe1beh - DD 017ad88f0h,017ad88f0h - DD 066ac20c9h,066ac20c9h - DD 0b43ace7dh,0b43ace7dh - DD 0184adf63h,0184adf63h - DD 082311ae5h,082311ae5h - DD 060335197h,060335197h - DD 0457f5362h,0457f5362h - DD 0e07764b1h,0e07764b1h - DD 084ae6bbbh,084ae6bbbh - DD 01ca081feh,01ca081feh - DD 0942b08f9h,0942b08f9h - DD 058684870h,058684870h - DD 019fd458fh,019fd458fh - DD 0876cde94h,0876cde94h - DD 0b7f87b52h,0b7f87b52h - DD 023d373abh,023d373abh - DD 0e2024b72h,0e2024b72h - DD 0578f1fe3h,0578f1fe3h - DD 02aab5566h,02aab5566h - DD 00728ebb2h,00728ebb2h - DD 003c2b52fh,003c2b52fh - DD 09a7bc586h,09a7bc586h - DD 0a50837d3h,0a50837d3h - DD 0f2872830h,0f2872830h - DD 0b2a5bf23h,0b2a5bf23h - DD 0ba6a0302h,0ba6a0302h - DD 05c8216edh,05c8216edh - DD 02b1ccf8ah,02b1ccf8ah - DD 092b479a7h,092b479a7h - DD 0f0f207f3h,0f0f207f3h - DD 0a1e2694eh,0a1e2694eh - DD 0cdf4da65h,0cdf4da65h - DD 0d5be0506h,0d5be0506h - DD 01f6234d1h,01f6234d1h - DD 08afea6c4h,08afea6c4h - DD 09d532e34h,09d532e34h - DD 0a055f3a2h,0a055f3a2h - DD 032e18a05h,032e18a05h - DD 075ebf6a4h,075ebf6a4h - DD 039ec830bh,039ec830bh - DD 0aaef6040h,0aaef6040h - DD 0069f715eh,0069f715eh - DD 051106ebdh,051106ebdh - DD 0f98a213eh,0f98a213eh - DD 03d06dd96h,03d06dd96h - DD 0ae053eddh,0ae053eddh - DD 046bde64dh,046bde64dh - DD 0b58d5491h,0b58d5491h - DD 0055dc471h,0055dc471h - DD 06fd40604h,06fd40604h - DD 0ff155060h,0ff155060h - DD 024fb9819h,024fb9819h - DD 097e9bdd6h,097e9bdd6h - DD 0cc434089h,0cc434089h - DD 0779ed967h,0779ed967h - DD 0bd42e8b0h,0bd42e8b0h - DD 0888b8907h,0888b8907h - DD 0385b19e7h,0385b19e7h - DD 0dbeec879h,0dbeec879h - DD 0470a7ca1h,0470a7ca1h - DD 0e90f427ch,0e90f427ch - DD 0c91e84f8h,0c91e84f8h - DD 000000000h,000000000h - DD 083868009h,083868009h - DD 048ed2b32h,048ed2b32h - DD 0ac70111eh,0ac70111eh - DD 04e725a6ch,04e725a6ch - DD 0fbff0efdh,0fbff0efdh - DD 05638850fh,05638850fh - DD 01ed5ae3dh,01ed5ae3dh - DD 027392d36h,027392d36h - DD 064d90f0ah,064d90f0ah - DD 021a65c68h,021a65c68h - DD 0d1545b9bh,0d1545b9bh - DD 03a2e3624h,03a2e3624h - DD 0b1670a0ch,0b1670a0ch - DD 00fe75793h,00fe75793h - DD 0d296eeb4h,0d296eeb4h - DD 09e919b1bh,09e919b1bh - DD 04fc5c080h,04fc5c080h - DD 0a220dc61h,0a220dc61h - DD 0694b775ah,0694b775ah - DD 0161a121ch,0161a121ch - DD 00aba93e2h,00aba93e2h - DD 0e52aa0c0h,0e52aa0c0h - DD 043e0223ch,043e0223ch - DD 01d171b12h,01d171b12h - DD 00b0d090eh,00b0d090eh - DD 0adc78bf2h,0adc78bf2h - DD 0b9a8b62dh,0b9a8b62dh - DD 0c8a91e14h,0c8a91e14h - DD 08519f157h,08519f157h - DD 04c0775afh,04c0775afh - DD 0bbdd99eeh,0bbdd99eeh - DD 0fd607fa3h,0fd607fa3h - DD 09f2601f7h,09f2601f7h - DD 0bcf5725ch,0bcf5725ch - DD 0c53b6644h,0c53b6644h - DD 0347efb5bh,0347efb5bh - DD 07629438bh,07629438bh - DD 0dcc623cbh,0dcc623cbh - DD 068fcedb6h,068fcedb6h - DD 063f1e4b8h,063f1e4b8h - DD 0cadc31d7h,0cadc31d7h - DD 010856342h,010856342h - DD 040229713h,040229713h - DD 02011c684h,02011c684h - DD 07d244a85h,07d244a85h - DD 0f83dbbd2h,0f83dbbd2h - DD 01132f9aeh,01132f9aeh - DD 06da129c7h,06da129c7h - DD 04b2f9e1dh,04b2f9e1dh - DD 0f330b2dch,0f330b2dch - DD 0ec52860dh,0ec52860dh - DD 0d0e3c177h,0d0e3c177h - DD 06c16b32bh,06c16b32bh - DD 099b970a9h,099b970a9h - DD 0fa489411h,0fa489411h - DD 02264e947h,02264e947h - DD 0c48cfca8h,0c48cfca8h - DD 01a3ff0a0h,01a3ff0a0h - DD 0d82c7d56h,0d82c7d56h - DD 0ef903322h,0ef903322h - DD 0c74e4987h,0c74e4987h - DD 0c1d138d9h,0c1d138d9h - DD 0fea2ca8ch,0fea2ca8ch - DD 0360bd498h,0360bd498h - DD 0cf81f5a6h,0cf81f5a6h - DD 028de7aa5h,028de7aa5h - DD 0268eb7dah,0268eb7dah - DD 0a4bfad3fh,0a4bfad3fh - DD 0e49d3a2ch,0e49d3a2ch - DD 00d927850h,00d927850h - DD 09bcc5f6ah,09bcc5f6ah - DD 062467e54h,062467e54h - DD 0c2138df6h,0c2138df6h - DD 0e8b8d890h,0e8b8d890h - DD 05ef7392eh,05ef7392eh - DD 0f5afc382h,0f5afc382h - DD 0be805d9fh,0be805d9fh - DD 07c93d069h,07c93d069h - DD 0a92dd56fh,0a92dd56fh - DD 0b31225cfh,0b31225cfh - DD 03b99acc8h,03b99acc8h - DD 0a77d1810h,0a77d1810h - DD 06e639ce8h,06e639ce8h - DD 07bbb3bdbh,07bbb3bdbh - DD 0097826cdh,0097826cdh - DD 0f418596eh,0f418596eh - DD 001b79aech,001b79aech - DD 0a89a4f83h,0a89a4f83h - DD 0656e95e6h,0656e95e6h - DD 07ee6ffaah,07ee6ffaah - DD 008cfbc21h,008cfbc21h - DD 0e6e815efh,0e6e815efh - DD 0d99be7bah,0d99be7bah - DD 0ce366f4ah,0ce366f4ah - DD 0d4099feah,0d4099feah - DD 0d67cb029h,0d67cb029h - DD 0afb2a431h,0afb2a431h - DD 031233f2ah,031233f2ah - DD 03094a5c6h,03094a5c6h - DD 0c066a235h,0c066a235h - DD 037bc4e74h,037bc4e74h - DD 0a6ca82fch,0a6ca82fch - DD 0b0d090e0h,0b0d090e0h - DD 015d8a733h,015d8a733h - DD 04a9804f1h,04a9804f1h - DD 0f7daec41h,0f7daec41h - DD 00e50cd7fh,00e50cd7fh - DD 02ff69117h,02ff69117h - DD 08dd64d76h,08dd64d76h - DD 04db0ef43h,04db0ef43h - DD 0544daacch,0544daacch - DD 0df0496e4h,0df0496e4h - DD 0e3b5d19eh,0e3b5d19eh - DD 01b886a4ch,01b886a4ch - DD 0b81f2cc1h,0b81f2cc1h - DD 07f516546h,07f516546h - DD 004ea5e9dh,004ea5e9dh - DD 05d358c01h,05d358c01h - DD 0737487fah,0737487fah - DD 02e410bfbh,02e410bfbh - DD 05a1d67b3h,05a1d67b3h - DD 052d2db92h,052d2db92h - DD 0335610e9h,0335610e9h - DD 01347d66dh,01347d66dh - DD 08c61d79ah,08c61d79ah - DD 07a0ca137h,07a0ca137h - DD 08e14f859h,08e14f859h - DD 0893c13ebh,0893c13ebh - DD 0ee27a9ceh,0ee27a9ceh - DD 035c961b7h,035c961b7h - DD 0ede51ce1h,0ede51ce1h - DD 03cb1477ah,03cb1477ah - DD 059dfd29ch,059dfd29ch - DD 03f73f255h,03f73f255h - DD 079ce1418h,079ce1418h - DD 0bf37c773h,0bf37c773h - DD 0eacdf753h,0eacdf753h - DD 05baafd5fh,05baafd5fh - DD 0146f3ddfh,0146f3ddfh - DD 086db4478h,086db4478h - DD 081f3afcah,081f3afcah - DD 03ec468b9h,03ec468b9h - DD 02c342438h,02c342438h - DD 05f40a3c2h,05f40a3c2h - DD 072c31d16h,072c31d16h - DD 00c25e2bch,00c25e2bch - DD 08b493c28h,08b493c28h - DD 041950dffh,041950dffh - DD 07101a839h,07101a839h - DD 0deb30c08h,0deb30c08h - DD 09ce4b4d8h,09ce4b4d8h - DD 090c15664h,090c15664h - DD 06184cb7bh,06184cb7bh - DD 070b632d5h,070b632d5h - DD 0745c6c48h,0745c6c48h - DD 04257b8d0h,04257b8d0h -DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h -DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh -DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h -DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh -DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh -DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh -DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h -DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h -DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h -DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h -DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah -DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h -DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah -DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h -DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h -DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh -DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah -DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h -DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h -DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh -DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h -DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh -DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h -DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h -DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h -DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh -DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh -DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh -DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h -DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h -DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h -DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh - DD 080808080h,080808080h,0fefefefeh,0fefefefeh - DD 01b1b1b1bh,01b1b1b1bh,0,0 -DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h -DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh -DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h -DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh -DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh -DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh -DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h -DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h -DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h -DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h -DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah -DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h -DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah -DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h -DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h -DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh -DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah -DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h -DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h -DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh -DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h -DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh -DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h -DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h -DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h -DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh -DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh -DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh -DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h -DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h -DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h -DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh - DD 080808080h,080808080h,0fefefefeh,0fefefefeh - DD 01b1b1b1bh,01b1b1b1bh,0,0 -DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h -DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh -DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h -DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh -DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh -DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh -DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h -DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h -DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h -DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h -DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah -DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h -DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah -DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h -DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h -DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh -DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah -DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h -DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h -DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh -DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h -DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh -DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h -DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h -DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h -DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh -DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh -DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh -DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h -DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h -DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h -DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh - DD 080808080h,080808080h,0fefefefeh,0fefefefeh - DD 01b1b1b1bh,01b1b1b1bh,0,0 -DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h -DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh -DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h -DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh -DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh -DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh -DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h -DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h -DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h -DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h -DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah -DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h -DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah -DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h -DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h -DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh -DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah -DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h -DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h -DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh -DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h -DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh -DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h -DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h -DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h -DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh -DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh -DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh -DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h -DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h -DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h -DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh - DD 080808080h,080808080h,0fefefefeh,0fefefefeh - DD 01b1b1b1bh,01b1b1b1bh,0,0 +$L$AES_Td: + DD 0x50a7f451,0x50a7f451 + DD 0x5365417e,0x5365417e + DD 0xc3a4171a,0xc3a4171a + DD 0x965e273a,0x965e273a + DD 0xcb6bab3b,0xcb6bab3b + DD 0xf1459d1f,0xf1459d1f + DD 0xab58faac,0xab58faac + DD 0x9303e34b,0x9303e34b + DD 0x55fa3020,0x55fa3020 + DD 0xf66d76ad,0xf66d76ad + DD 0x9176cc88,0x9176cc88 + DD 0x254c02f5,0x254c02f5 + DD 0xfcd7e54f,0xfcd7e54f + DD 0xd7cb2ac5,0xd7cb2ac5 + DD 0x80443526,0x80443526 + DD 0x8fa362b5,0x8fa362b5 + DD 0x495ab1de,0x495ab1de + DD 0x671bba25,0x671bba25 + DD 0x980eea45,0x980eea45 + DD 0xe1c0fe5d,0xe1c0fe5d + DD 0x02752fc3,0x02752fc3 + DD 0x12f04c81,0x12f04c81 + DD 0xa397468d,0xa397468d + DD 0xc6f9d36b,0xc6f9d36b + DD 0xe75f8f03,0xe75f8f03 + DD 0x959c9215,0x959c9215 + DD 0xeb7a6dbf,0xeb7a6dbf + DD 0xda595295,0xda595295 + DD 0x2d83bed4,0x2d83bed4 + DD 0xd3217458,0xd3217458 + DD 0x2969e049,0x2969e049 + DD 0x44c8c98e,0x44c8c98e + DD 0x6a89c275,0x6a89c275 + DD 0x78798ef4,0x78798ef4 + DD 0x6b3e5899,0x6b3e5899 + DD 0xdd71b927,0xdd71b927 + DD 0xb64fe1be,0xb64fe1be + DD 0x17ad88f0,0x17ad88f0 + DD 0x66ac20c9,0x66ac20c9 + DD 0xb43ace7d,0xb43ace7d + DD 0x184adf63,0x184adf63 + DD 0x82311ae5,0x82311ae5 + DD 0x60335197,0x60335197 + DD 0x457f5362,0x457f5362 + DD 0xe07764b1,0xe07764b1 + DD 0x84ae6bbb,0x84ae6bbb + DD 0x1ca081fe,0x1ca081fe + DD 0x942b08f9,0x942b08f9 + DD 0x58684870,0x58684870 + DD 0x19fd458f,0x19fd458f + DD 0x876cde94,0x876cde94 + DD 0xb7f87b52,0xb7f87b52 + DD 0x23d373ab,0x23d373ab + DD 0xe2024b72,0xe2024b72 + DD 0x578f1fe3,0x578f1fe3 + DD 0x2aab5566,0x2aab5566 + DD 0x0728ebb2,0x0728ebb2 + DD 0x03c2b52f,0x03c2b52f + DD 0x9a7bc586,0x9a7bc586 + DD 0xa50837d3,0xa50837d3 + DD 0xf2872830,0xf2872830 + DD 0xb2a5bf23,0xb2a5bf23 + DD 0xba6a0302,0xba6a0302 + DD 0x5c8216ed,0x5c8216ed + DD 0x2b1ccf8a,0x2b1ccf8a + DD 0x92b479a7,0x92b479a7 + DD 0xf0f207f3,0xf0f207f3 + DD 0xa1e2694e,0xa1e2694e + DD 0xcdf4da65,0xcdf4da65 + DD 0xd5be0506,0xd5be0506 + DD 0x1f6234d1,0x1f6234d1 + DD 0x8afea6c4,0x8afea6c4 + DD 0x9d532e34,0x9d532e34 + DD 0xa055f3a2,0xa055f3a2 + DD 0x32e18a05,0x32e18a05 + DD 0x75ebf6a4,0x75ebf6a4 + DD 0x39ec830b,0x39ec830b + DD 0xaaef6040,0xaaef6040 + DD 0x069f715e,0x069f715e + DD 0x51106ebd,0x51106ebd + DD 0xf98a213e,0xf98a213e + DD 0x3d06dd96,0x3d06dd96 + DD 0xae053edd,0xae053edd + DD 0x46bde64d,0x46bde64d + DD 0xb58d5491,0xb58d5491 + DD 0x055dc471,0x055dc471 + DD 0x6fd40604,0x6fd40604 + DD 0xff155060,0xff155060 + DD 0x24fb9819,0x24fb9819 + DD 0x97e9bdd6,0x97e9bdd6 + DD 0xcc434089,0xcc434089 + DD 0x779ed967,0x779ed967 + DD 0xbd42e8b0,0xbd42e8b0 + DD 0x888b8907,0x888b8907 + DD 0x385b19e7,0x385b19e7 + DD 0xdbeec879,0xdbeec879 + DD 0x470a7ca1,0x470a7ca1 + DD 0xe90f427c,0xe90f427c + DD 0xc91e84f8,0xc91e84f8 + DD 0x00000000,0x00000000 + DD 0x83868009,0x83868009 + DD 0x48ed2b32,0x48ed2b32 + DD 0xac70111e,0xac70111e + DD 0x4e725a6c,0x4e725a6c + DD 0xfbff0efd,0xfbff0efd + DD 0x5638850f,0x5638850f + DD 0x1ed5ae3d,0x1ed5ae3d + DD 0x27392d36,0x27392d36 + DD 0x64d90f0a,0x64d90f0a + DD 0x21a65c68,0x21a65c68 + DD 0xd1545b9b,0xd1545b9b + DD 0x3a2e3624,0x3a2e3624 + DD 0xb1670a0c,0xb1670a0c + DD 0x0fe75793,0x0fe75793 + DD 0xd296eeb4,0xd296eeb4 + DD 0x9e919b1b,0x9e919b1b + DD 0x4fc5c080,0x4fc5c080 + DD 0xa220dc61,0xa220dc61 + DD 0x694b775a,0x694b775a + DD 0x161a121c,0x161a121c + DD 0x0aba93e2,0x0aba93e2 + DD 0xe52aa0c0,0xe52aa0c0 + DD 0x43e0223c,0x43e0223c + DD 0x1d171b12,0x1d171b12 + DD 0x0b0d090e,0x0b0d090e + DD 0xadc78bf2,0xadc78bf2 + DD 0xb9a8b62d,0xb9a8b62d + DD 0xc8a91e14,0xc8a91e14 + DD 0x8519f157,0x8519f157 + DD 0x4c0775af,0x4c0775af + DD 0xbbdd99ee,0xbbdd99ee + DD 0xfd607fa3,0xfd607fa3 + DD 0x9f2601f7,0x9f2601f7 + DD 0xbcf5725c,0xbcf5725c + DD 0xc53b6644,0xc53b6644 + DD 0x347efb5b,0x347efb5b + DD 0x7629438b,0x7629438b + DD 0xdcc623cb,0xdcc623cb + DD 0x68fcedb6,0x68fcedb6 + DD 0x63f1e4b8,0x63f1e4b8 + DD 0xcadc31d7,0xcadc31d7 + DD 0x10856342,0x10856342 + DD 0x40229713,0x40229713 + DD 0x2011c684,0x2011c684 + DD 0x7d244a85,0x7d244a85 + DD 0xf83dbbd2,0xf83dbbd2 + DD 0x1132f9ae,0x1132f9ae + DD 0x6da129c7,0x6da129c7 + DD 0x4b2f9e1d,0x4b2f9e1d + DD 0xf330b2dc,0xf330b2dc + DD 0xec52860d,0xec52860d + DD 0xd0e3c177,0xd0e3c177 + DD 0x6c16b32b,0x6c16b32b + DD 0x99b970a9,0x99b970a9 + DD 0xfa489411,0xfa489411 + DD 0x2264e947,0x2264e947 + DD 0xc48cfca8,0xc48cfca8 + DD 0x1a3ff0a0,0x1a3ff0a0 + DD 0xd82c7d56,0xd82c7d56 + DD 0xef903322,0xef903322 + DD 0xc74e4987,0xc74e4987 + DD 0xc1d138d9,0xc1d138d9 + DD 0xfea2ca8c,0xfea2ca8c + DD 0x360bd498,0x360bd498 + DD 0xcf81f5a6,0xcf81f5a6 + DD 0x28de7aa5,0x28de7aa5 + DD 0x268eb7da,0x268eb7da + DD 0xa4bfad3f,0xa4bfad3f + DD 0xe49d3a2c,0xe49d3a2c + DD 0x0d927850,0x0d927850 + DD 0x9bcc5f6a,0x9bcc5f6a + DD 0x62467e54,0x62467e54 + DD 0xc2138df6,0xc2138df6 + DD 0xe8b8d890,0xe8b8d890 + DD 0x5ef7392e,0x5ef7392e + DD 0xf5afc382,0xf5afc382 + DD 0xbe805d9f,0xbe805d9f + DD 0x7c93d069,0x7c93d069 + DD 0xa92dd56f,0xa92dd56f + DD 0xb31225cf,0xb31225cf + DD 0x3b99acc8,0x3b99acc8 + DD 0xa77d1810,0xa77d1810 + DD 0x6e639ce8,0x6e639ce8 + DD 0x7bbb3bdb,0x7bbb3bdb + DD 0x097826cd,0x097826cd + DD 0xf418596e,0xf418596e + DD 0x01b79aec,0x01b79aec + DD 0xa89a4f83,0xa89a4f83 + DD 0x656e95e6,0x656e95e6 + DD 0x7ee6ffaa,0x7ee6ffaa + DD 0x08cfbc21,0x08cfbc21 + DD 0xe6e815ef,0xe6e815ef + DD 0xd99be7ba,0xd99be7ba + DD 0xce366f4a,0xce366f4a + DD 0xd4099fea,0xd4099fea + DD 0xd67cb029,0xd67cb029 + DD 0xafb2a431,0xafb2a431 + DD 0x31233f2a,0x31233f2a + DD 0x3094a5c6,0x3094a5c6 + DD 0xc066a235,0xc066a235 + DD 0x37bc4e74,0x37bc4e74 + DD 0xa6ca82fc,0xa6ca82fc + DD 0xb0d090e0,0xb0d090e0 + DD 0x15d8a733,0x15d8a733 + DD 0x4a9804f1,0x4a9804f1 + DD 0xf7daec41,0xf7daec41 + DD 0x0e50cd7f,0x0e50cd7f + DD 0x2ff69117,0x2ff69117 + DD 0x8dd64d76,0x8dd64d76 + DD 0x4db0ef43,0x4db0ef43 + DD 0x544daacc,0x544daacc + DD 0xdf0496e4,0xdf0496e4 + DD 0xe3b5d19e,0xe3b5d19e + DD 0x1b886a4c,0x1b886a4c + DD 0xb81f2cc1,0xb81f2cc1 + DD 0x7f516546,0x7f516546 + DD 0x04ea5e9d,0x04ea5e9d + DD 0x5d358c01,0x5d358c01 + DD 0x737487fa,0x737487fa + DD 0x2e410bfb,0x2e410bfb + DD 0x5a1d67b3,0x5a1d67b3 + DD 0x52d2db92,0x52d2db92 + DD 0x335610e9,0x335610e9 + DD 0x1347d66d,0x1347d66d + DD 0x8c61d79a,0x8c61d79a + DD 0x7a0ca137,0x7a0ca137 + DD 0x8e14f859,0x8e14f859 + DD 0x893c13eb,0x893c13eb + DD 0xee27a9ce,0xee27a9ce + DD 0x35c961b7,0x35c961b7 + DD 0xede51ce1,0xede51ce1 + DD 0x3cb1477a,0x3cb1477a + DD 0x59dfd29c,0x59dfd29c + DD 0x3f73f255,0x3f73f255 + DD 0x79ce1418,0x79ce1418 + DD 0xbf37c773,0xbf37c773 + DD 0xeacdf753,0xeacdf753 + DD 0x5baafd5f,0x5baafd5f + DD 0x146f3ddf,0x146f3ddf + DD 0x86db4478,0x86db4478 + DD 0x81f3afca,0x81f3afca + DD 0x3ec468b9,0x3ec468b9 + DD 0x2c342438,0x2c342438 + DD 0x5f40a3c2,0x5f40a3c2 + DD 0x72c31d16,0x72c31d16 + DD 0x0c25e2bc,0x0c25e2bc + DD 0x8b493c28,0x8b493c28 + DD 0x41950dff,0x41950dff + DD 0x7101a839,0x7101a839 + DD 0xdeb30c08,0xdeb30c08 + DD 0x9ce4b4d8,0x9ce4b4d8 + DD 0x90c15664,0x90c15664 + DD 0x6184cb7b,0x6184cb7b + DD 0x70b632d5,0x70b632d5 + DD 0x745c6c48,0x745c6c48 + DD 0x4257b8d0,0x4257b8d0 +DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 +DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb +DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 +DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb +DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d +DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e +DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 +DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 +DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 +DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 +DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda +DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 +DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a +DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 +DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 +DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b +DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea +DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 +DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 +DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e +DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 +DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b +DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 +DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 +DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 +DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f +DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d +DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef +DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 +DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 +DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 +DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d + DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe + DD 0x1b1b1b1b,0x1b1b1b1b,0,0 +DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 +DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb +DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 +DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb +DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d +DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e +DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 +DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 +DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 +DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 +DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda +DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 +DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a +DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 +DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 +DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b +DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea +DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 +DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 +DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e +DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 +DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b +DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 +DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 +DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 +DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f +DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d +DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef +DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 +DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 +DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 +DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d + DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe + DD 0x1b1b1b1b,0x1b1b1b1b,0,0 +DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 +DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb +DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 +DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb +DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d +DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e +DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 +DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 +DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 +DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 +DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda +DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 +DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a +DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 +DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 +DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b +DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea +DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 +DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 +DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e +DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 +DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b +DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 +DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 +DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 +DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f +DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d +DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef +DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 +DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 +DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 +DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d + DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe + DD 0x1b1b1b1b,0x1b1b1b1b,0,0 +DB 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38 +DB 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb +DB 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87 +DB 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb +DB 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d +DB 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e +DB 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2 +DB 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25 +DB 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16 +DB 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92 +DB 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda +DB 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84 +DB 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a +DB 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06 +DB 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02 +DB 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b +DB 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea +DB 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73 +DB 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85 +DB 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e +DB 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89 +DB 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b +DB 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20 +DB 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4 +DB 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31 +DB 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f +DB 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d +DB 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef +DB 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0 +DB 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61 +DB 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26 +DB 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d + DD 0x80808080,0x80808080,0xfefefefe,0xfefefefe + DD 0x1b1b1b1b,0x1b1b1b1b,0,0 DB 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32 DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 DB 62,0 ALIGN 64 -EXTERN __imp_RtlVirtualUnwind:NEAR +EXTERN __imp_RtlVirtualUnwind ALIGN 16 -block_se_handler PROC PRIVATE +block_se_handler: push rsi push rdi push rbx @@ -2608,53 +2607,53 @@ block_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$in_block_prologue + jb NEAR $L$in_block_prologue - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$in_block_prologue - - mov rax,QWORD PTR[24+rax] - lea rax,QWORD PTR[48+rax] - - mov rbx,QWORD PTR[((-8))+rax] - mov rbp,QWORD PTR[((-16))+rax] - mov r12,QWORD PTR[((-24))+rax] - mov r13,QWORD PTR[((-32))+rax] - mov r14,QWORD PTR[((-40))+rax] - mov r15,QWORD PTR[((-48))+rax] - mov QWORD PTR[144+r8],rbx - mov QWORD PTR[160+r8],rbp - mov QWORD PTR[216+r8],r12 - mov QWORD PTR[224+r8],r13 - mov QWORD PTR[232+r8],r14 - mov QWORD PTR[240+r8],r15 - -$L$in_block_prologue:: - mov rdi,QWORD PTR[8+rax] - mov rsi,QWORD PTR[16+rax] - mov QWORD PTR[152+r8],rax - mov QWORD PTR[168+r8],rsi - mov QWORD PTR[176+r8],rdi - - jmp $L$common_seh_exit -block_se_handler ENDP + jae NEAR $L$in_block_prologue + + mov rax,QWORD[24+rax] + lea rax,[48+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_block_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + jmp NEAR $L$common_seh_exit + ALIGN 16 -key_se_handler PROC PRIVATE +key_se_handler: push rsi push rdi push rbx @@ -2666,52 +2665,52 @@ key_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$in_key_prologue + jb NEAR $L$in_key_prologue - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$in_key_prologue - - lea rax,QWORD PTR[56+rax] - - mov rbx,QWORD PTR[((-8))+rax] - mov rbp,QWORD PTR[((-16))+rax] - mov r12,QWORD PTR[((-24))+rax] - mov r13,QWORD PTR[((-32))+rax] - mov r14,QWORD PTR[((-40))+rax] - mov r15,QWORD PTR[((-48))+rax] - mov QWORD PTR[144+r8],rbx - mov QWORD PTR[160+r8],rbp - mov QWORD PTR[216+r8],r12 - mov QWORD PTR[224+r8],r13 - mov QWORD PTR[232+r8],r14 - mov QWORD PTR[240+r8],r15 - -$L$in_key_prologue:: - mov rdi,QWORD PTR[8+rax] - mov rsi,QWORD PTR[16+rax] - mov QWORD PTR[152+r8],rax - mov QWORD PTR[168+r8],rsi - mov QWORD PTR[176+r8],rdi - - jmp $L$common_seh_exit -key_se_handler ENDP + jae NEAR $L$in_key_prologue + + lea rax,[56+rax] + + mov rbx,QWORD[((-8))+rax] + mov rbp,QWORD[((-16))+rax] + mov r12,QWORD[((-24))+rax] + mov r13,QWORD[((-32))+rax] + mov r14,QWORD[((-40))+rax] + mov r15,QWORD[((-48))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_key_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + jmp NEAR $L$common_seh_exit + ALIGN 16 -cbc_se_handler PROC PRIVATE +cbc_se_handler: push rsi push rdi push rbx @@ -2723,82 +2722,82 @@ cbc_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - lea r10,QWORD PTR[$L$cbc_prologue] + lea r10,[$L$cbc_prologue] cmp rbx,r10 - jb $L$in_cbc_prologue + jb NEAR $L$in_cbc_prologue - lea r10,QWORD PTR[$L$cbc_fast_body] + lea r10,[$L$cbc_fast_body] cmp rbx,r10 - jb $L$in_cbc_frame_setup + jb NEAR $L$in_cbc_frame_setup - lea r10,QWORD PTR[$L$cbc_slow_prologue] + lea r10,[$L$cbc_slow_prologue] cmp rbx,r10 - jb $L$in_cbc_body + jb NEAR $L$in_cbc_body - lea r10,QWORD PTR[$L$cbc_slow_body] + lea r10,[$L$cbc_slow_body] cmp rbx,r10 - jb $L$in_cbc_frame_setup + jb NEAR $L$in_cbc_frame_setup -$L$in_cbc_body:: - mov rax,QWORD PTR[152+r8] +$L$in_cbc_body: + mov rax,QWORD[152+r8] - lea r10,QWORD PTR[$L$cbc_epilogue] + lea r10,[$L$cbc_epilogue] cmp rbx,r10 - jae $L$in_cbc_prologue + jae NEAR $L$in_cbc_prologue - lea rax,QWORD PTR[8+rax] + lea rax,[8+rax] - lea r10,QWORD PTR[$L$cbc_popfq] + lea r10,[$L$cbc_popfq] cmp rbx,r10 - jae $L$in_cbc_prologue - - mov rax,QWORD PTR[8+rax] - lea rax,QWORD PTR[56+rax] - -$L$in_cbc_frame_setup:: - mov rbx,QWORD PTR[((-16))+rax] - mov rbp,QWORD PTR[((-24))+rax] - mov r12,QWORD PTR[((-32))+rax] - mov r13,QWORD PTR[((-40))+rax] - mov r14,QWORD PTR[((-48))+rax] - mov r15,QWORD PTR[((-56))+rax] - mov QWORD PTR[144+r8],rbx - mov QWORD PTR[160+r8],rbp - mov QWORD PTR[216+r8],r12 - mov QWORD PTR[224+r8],r13 - mov QWORD PTR[232+r8],r14 - mov QWORD PTR[240+r8],r15 - -$L$in_cbc_prologue:: - mov rdi,QWORD PTR[8+rax] - mov rsi,QWORD PTR[16+rax] - mov QWORD PTR[152+r8],rax - mov QWORD PTR[168+r8],rsi - mov QWORD PTR[176+r8],rdi - -$L$common_seh_exit:: - - mov rdi,QWORD PTR[40+r9] + jae NEAR $L$in_cbc_prologue + + mov rax,QWORD[8+rax] + lea rax,[56+rax] + +$L$in_cbc_frame_setup: + mov rbx,QWORD[((-16))+rax] + mov rbp,QWORD[((-24))+rax] + mov r12,QWORD[((-32))+rax] + mov r13,QWORD[((-40))+rax] + mov r14,QWORD[((-48))+rax] + mov r15,QWORD[((-56))+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_cbc_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + +$L$common_seh_exit: + + mov rdi,QWORD[40+r9] mov rsi,r8 mov ecx,154 - DD 0a548f3fch + DD 0xa548f3fc mov rsi,r9 xor rcx,rcx - mov rdx,QWORD PTR[8+rsi] - mov r8,QWORD PTR[rsi] - mov r9,QWORD PTR[16+rsi] - mov r10,QWORD PTR[40+rsi] - lea r11,QWORD PTR[56+rsi] - lea r12,QWORD PTR[24+rsi] - mov QWORD PTR[32+rsp],r10 - mov QWORD PTR[40+rsp],r11 - mov QWORD PTR[48+rsp],r12 - mov QWORD PTR[56+rsp],rcx - call QWORD PTR[__imp_RtlVirtualUnwind] + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] mov eax,1 add rsp,64 @@ -2812,53 +2811,48 @@ $L$common_seh_exit:: pop rdi pop rsi DB 0F3h,0C3h ;repret -cbc_se_handler ENDP -.text$ ENDS -.pdata SEGMENT READONLY ALIGN(4) + +section .pdata rdata align=4 ALIGN 4 - DD imagerel $L$SEH_begin_asm_AES_encrypt - DD imagerel $L$SEH_end_asm_AES_encrypt - DD imagerel $L$SEH_info_asm_AES_encrypt + DD $L$SEH_begin_asm_AES_encrypt wrt ..imagebase + DD $L$SEH_end_asm_AES_encrypt wrt ..imagebase + DD $L$SEH_info_asm_AES_encrypt wrt ..imagebase - DD imagerel $L$SEH_begin_asm_AES_decrypt - DD imagerel $L$SEH_end_asm_AES_decrypt - DD imagerel $L$SEH_info_asm_AES_decrypt + DD $L$SEH_begin_asm_AES_decrypt wrt ..imagebase + DD $L$SEH_end_asm_AES_decrypt wrt ..imagebase + DD $L$SEH_info_asm_AES_decrypt wrt ..imagebase - DD imagerel $L$SEH_begin_asm_AES_set_encrypt_key - DD imagerel $L$SEH_end_asm_AES_set_encrypt_key - DD imagerel $L$SEH_info_asm_AES_set_encrypt_key + DD $L$SEH_begin_asm_AES_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_asm_AES_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_asm_AES_set_encrypt_key wrt ..imagebase - DD imagerel $L$SEH_begin_asm_AES_set_decrypt_key - DD imagerel $L$SEH_end_asm_AES_set_decrypt_key - DD imagerel $L$SEH_info_asm_AES_set_decrypt_key + DD $L$SEH_begin_asm_AES_set_decrypt_key wrt ..imagebase + DD $L$SEH_end_asm_AES_set_decrypt_key wrt ..imagebase + DD $L$SEH_info_asm_AES_set_decrypt_key wrt ..imagebase - DD imagerel $L$SEH_begin_asm_AES_cbc_encrypt - DD imagerel $L$SEH_end_asm_AES_cbc_encrypt - DD imagerel $L$SEH_info_asm_AES_cbc_encrypt + DD $L$SEH_begin_asm_AES_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_asm_AES_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_asm_AES_cbc_encrypt wrt ..imagebase -.pdata ENDS -.xdata SEGMENT READONLY ALIGN(8) +section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_asm_AES_encrypt:: +$L$SEH_info_asm_AES_encrypt: DB 9,0,0,0 - DD imagerel block_se_handler - DD imagerel $L$enc_prologue,imagerel $L$enc_epilogue -$L$SEH_info_asm_AES_decrypt:: + DD block_se_handler wrt ..imagebase + DD $L$enc_prologue wrt ..imagebase,$L$enc_epilogue wrt ..imagebase +$L$SEH_info_asm_AES_decrypt: DB 9,0,0,0 - DD imagerel block_se_handler - DD imagerel $L$dec_prologue,imagerel $L$dec_epilogue -$L$SEH_info_asm_AES_set_encrypt_key:: + DD block_se_handler wrt ..imagebase + DD $L$dec_prologue wrt ..imagebase,$L$dec_epilogue wrt ..imagebase +$L$SEH_info_asm_AES_set_encrypt_key: DB 9,0,0,0 - DD imagerel key_se_handler - DD imagerel $L$enc_key_prologue,imagerel $L$enc_key_epilogue -$L$SEH_info_asm_AES_set_decrypt_key:: + DD key_se_handler wrt ..imagebase + DD $L$enc_key_prologue wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase +$L$SEH_info_asm_AES_set_decrypt_key: DB 9,0,0,0 - DD imagerel key_se_handler - DD imagerel $L$dec_key_prologue,imagerel $L$dec_key_epilogue -$L$SEH_info_asm_AES_cbc_encrypt:: + DD key_se_handler wrt ..imagebase + DD $L$dec_key_prologue wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase +$L$SEH_info_asm_AES_cbc_encrypt: DB 9,0,0,0 - DD imagerel cbc_se_handler - -.xdata ENDS -END + DD cbc_se_handler wrt ..imagebase diff --git a/win-x86_64/crypto/aes/aesni-x86_64.asm b/win-x86_64/crypto/aes/aesni-x86_64.asm index 53d8afc..cf313d1 100644 --- a/win-x86_64/crypto/aes/aesni-x86_64.asm +++ b/win-x86_64/crypto/aes/aesni-x86_64.asm @@ -1,130 +1,140 @@ -OPTION DOTNAME -.text$ SEGMENT ALIGN(256) 'CODE' -EXTERN OPENSSL_ia32cap_P:NEAR -PUBLIC aesni_encrypt - -ALIGN 16 -aesni_encrypt PROC PUBLIC - movups xmm2,XMMWORD PTR[rcx] - mov eax,DWORD PTR[240+r8] - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[16+r8] - lea r8,QWORD PTR[32+r8] +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + +EXTERN OPENSSL_ia32cap_P +global aesni_encrypt + +ALIGN 16 +aesni_encrypt: + movups xmm2,XMMWORD[rcx] + mov eax,DWORD[240+r8] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] xorps xmm2,xmm0 -$L$oop_enc1_1:: +$L$oop_enc1_1: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[r8] - lea r8,QWORD PTR[16+r8] - jnz $L$oop_enc1_1 + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_1 DB 102,15,56,221,209 - movups XMMWORD PTR[rdx],xmm2 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[rdx],xmm2 + pxor xmm2,xmm2 DB 0F3h,0C3h ;repret -aesni_encrypt ENDP -PUBLIC aesni_decrypt + +global aesni_decrypt ALIGN 16 -aesni_decrypt PROC PUBLIC - movups xmm2,XMMWORD PTR[rcx] - mov eax,DWORD PTR[240+r8] - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[16+r8] - lea r8,QWORD PTR[32+r8] +aesni_decrypt: + movups xmm2,XMMWORD[rcx] + mov eax,DWORD[240+r8] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] xorps xmm2,xmm0 -$L$oop_dec1_2:: +$L$oop_dec1_2: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[r8] - lea r8,QWORD PTR[16+r8] - jnz $L$oop_dec1_2 + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_dec1_2 DB 102,15,56,223,209 - movups XMMWORD PTR[rdx],xmm2 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[rdx],xmm2 + pxor xmm2,xmm2 DB 0F3h,0C3h ;repret -aesni_decrypt ENDP + ALIGN 16 -_aesni_encrypt2 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_encrypt2: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax add rax,16 -$L$enc_loop2:: +$L$enc_loop2: DB 102,15,56,220,209 DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$enc_loop2 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop2 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,221,208 DB 102,15,56,221,216 DB 0F3h,0C3h ;repret -_aesni_encrypt2 ENDP + ALIGN 16 -_aesni_decrypt2 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_decrypt2: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax add rax,16 -$L$dec_loop2:: +$L$dec_loop2: DB 102,15,56,222,209 DB 102,15,56,222,217 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$dec_loop2 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop2 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,223,208 DB 102,15,56,223,216 DB 0F3h,0C3h ;repret -_aesni_decrypt2 ENDP + ALIGN 16 -_aesni_encrypt3 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_encrypt3: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax add rax,16 -$L$enc_loop3:: +$L$enc_loop3: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$enc_loop3 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop3 DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -133,32 +143,32 @@ DB 102,15,56,221,208 DB 102,15,56,221,216 DB 102,15,56,221,224 DB 0F3h,0C3h ;repret -_aesni_encrypt3 ENDP + ALIGN 16 -_aesni_decrypt3 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_decrypt3: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax add rax,16 -$L$dec_loop3:: +$L$dec_loop3: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$dec_loop3 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop3 DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -167,36 +177,36 @@ DB 102,15,56,223,208 DB 102,15,56,223,216 DB 102,15,56,223,224 DB 0F3h,0C3h ;repret -_aesni_decrypt3 ENDP + ALIGN 16 -_aesni_encrypt4 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_encrypt4: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 xorps xmm5,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax -DB 00fh,01fh,000h +DB 0x0f,0x1f,0x00 add rax,16 -$L$enc_loop4:: +$L$enc_loop4: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$enc_loop4 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop4 DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -207,36 +217,36 @@ DB 102,15,56,221,216 DB 102,15,56,221,224 DB 102,15,56,221,232 DB 0F3h,0C3h ;repret -_aesni_encrypt4 ENDP + ALIGN 16 -_aesni_decrypt4 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_decrypt4: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 xorps xmm5,xmm0 - movups xmm0,XMMWORD PTR[32+rcx] - lea rcx,QWORD PTR[32+rax*1+rcx] + movups xmm0,XMMWORD[32+rcx] + lea rcx,[32+rax*1+rcx] neg rax -DB 00fh,01fh,000h +DB 0x0f,0x1f,0x00 add rax,16 -$L$dec_loop4:: +$L$dec_loop4: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 DB 102,15,56,222,232 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$dec_loop4 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop4 DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -247,40 +257,37 @@ DB 102,15,56,223,216 DB 102,15,56,223,224 DB 102,15,56,223,232 DB 0F3h,0C3h ;repret -_aesni_decrypt4 ENDP + ALIGN 16 -_aesni_encrypt6 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_encrypt6: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 pxor xmm3,xmm0 pxor xmm4,xmm0 DB 102,15,56,220,209 - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,220,217 pxor xmm5,xmm0 pxor xmm6,xmm0 DB 102,15,56,220,225 pxor xmm7,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] add rax,16 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jmp $L$enc_loop6_enter + jmp NEAR $L$enc_loop6_enter ALIGN 16 -$L$enc_loop6:: +$L$enc_loop6: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 +$L$enc_loop6_enter: DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 -$L$enc_loop6_enter:: - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 @@ -288,8 +295,8 @@ DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$enc_loop6 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop6 DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -304,40 +311,37 @@ DB 102,15,56,221,232 DB 102,15,56,221,240 DB 102,15,56,221,248 DB 0F3h,0C3h ;repret -_aesni_encrypt6 ENDP + ALIGN 16 -_aesni_decrypt6 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_decrypt6: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 pxor xmm3,xmm0 pxor xmm4,xmm0 DB 102,15,56,222,209 - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,222,217 pxor xmm5,xmm0 pxor xmm6,xmm0 DB 102,15,56,222,225 pxor xmm7,xmm0 + movups xmm0,XMMWORD[rax*1+rcx] add rax,16 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jmp $L$dec_loop6_enter + jmp NEAR $L$dec_loop6_enter ALIGN 16 -$L$dec_loop6:: +$L$dec_loop6: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 +$L$dec_loop6_enter: DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 -$L$dec_loop6_enter:: - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -345,8 +349,8 @@ DB 102,15,56,222,224 DB 102,15,56,222,232 DB 102,15,56,222,240 DB 102,15,56,222,248 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$dec_loop6 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop6 DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -361,46 +365,41 @@ DB 102,15,56,223,232 DB 102,15,56,223,240 DB 102,15,56,223,248 DB 0F3h,0C3h ;repret -_aesni_decrypt6 ENDP + ALIGN 16 -_aesni_encrypt8 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_encrypt8: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 pxor xmm4,xmm0 pxor xmm5,xmm0 pxor xmm6,xmm0 - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,220,209 - add rax,16 pxor xmm7,xmm0 -DB 102,15,56,220,217 pxor xmm8,xmm0 +DB 102,15,56,220,217 pxor xmm9,xmm0 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,68,15,56,220,193 -DB 102,68,15,56,220,201 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jmp $L$enc_loop8_enter + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$enc_loop8_inner ALIGN 16 -$L$enc_loop8:: +$L$enc_loop8: DB 102,15,56,220,209 DB 102,15,56,220,217 +$L$enc_loop8_inner: DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 -$L$enc_loop8_enter:: - movups xmm1,XMMWORD PTR[rax*1+rcx] +$L$enc_loop8_enter: + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 @@ -410,8 +409,8 @@ DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$enc_loop8 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$enc_loop8 DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -430,46 +429,41 @@ DB 102,15,56,221,248 DB 102,68,15,56,221,192 DB 102,68,15,56,221,200 DB 0F3h,0C3h ;repret -_aesni_encrypt8 ENDP + ALIGN 16 -_aesni_decrypt8 PROC PRIVATE - movups xmm0,XMMWORD PTR[rcx] +_aesni_decrypt8: + movups xmm0,XMMWORD[rcx] shl eax,4 - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 pxor xmm4,xmm0 pxor xmm5,xmm0 pxor xmm6,xmm0 - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,222,209 - add rax,16 pxor xmm7,xmm0 -DB 102,15,56,222,217 pxor xmm8,xmm0 +DB 102,15,56,222,217 pxor xmm9,xmm0 -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 -DB 102,68,15,56,222,193 -DB 102,68,15,56,222,201 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jmp $L$dec_loop8_enter + movups xmm0,XMMWORD[rax*1+rcx] + add rax,16 + jmp NEAR $L$dec_loop8_inner ALIGN 16 -$L$dec_loop8:: +$L$dec_loop8: DB 102,15,56,222,209 DB 102,15,56,222,217 +$L$dec_loop8_inner: DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 -$L$dec_loop8_enter:: - movups xmm1,XMMWORD PTR[rax*1+rcx] +$L$dec_loop8_enter: + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -479,8 +473,8 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$dec_loop8 + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$dec_loop8 DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -499,390 +493,435 @@ DB 102,15,56,223,248 DB 102,68,15,56,223,192 DB 102,68,15,56,223,200 DB 0F3h,0C3h ;repret -_aesni_decrypt8 ENDP -PUBLIC aesni_ecb_encrypt + +global aesni_ecb_encrypt ALIGN 16 -aesni_ecb_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_ecb_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_ecb_encrypt:: +$L$SEH_begin_aesni_ecb_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] + mov r8,QWORD[40+rsp] - lea rsp,QWORD PTR[((-88))+rsp] - movaps XMMWORD PTR[rsp],xmm6 - movaps XMMWORD PTR[16+rsp],xmm7 - movaps XMMWORD PTR[32+rsp],xmm8 - movaps XMMWORD PTR[48+rsp],xmm9 -$L$ecb_enc_body:: + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ecb_enc_body: and rdx,-16 - jz $L$ecb_ret + jz NEAR $L$ecb_ret - mov eax,DWORD PTR[240+rcx] - movups xmm0,XMMWORD PTR[rcx] + mov eax,DWORD[240+rcx] + movups xmm0,XMMWORD[rcx] mov r11,rcx mov r10d,eax test r8d,r8d - jz $L$ecb_decrypt - - cmp rdx,080h - jb $L$ecb_enc_tail - - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] - movdqu xmm4,XMMWORD PTR[32+rdi] - movdqu xmm5,XMMWORD PTR[48+rdi] - movdqu xmm6,XMMWORD PTR[64+rdi] - movdqu xmm7,XMMWORD PTR[80+rdi] - movdqu xmm8,XMMWORD PTR[96+rdi] - movdqu xmm9,XMMWORD PTR[112+rdi] - lea rdi,QWORD PTR[128+rdi] - sub rdx,080h - jmp $L$ecb_enc_loop8_enter -ALIGN 16 -$L$ecb_enc_loop8:: - movups XMMWORD PTR[rsi],xmm2 + jz NEAR $L$ecb_decrypt + + cmp rdx,0x80 + jb NEAR $L$ecb_enc_tail + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + movdqu xmm8,XMMWORD[96+rdi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] + sub rdx,0x80 + jmp NEAR $L$ecb_enc_loop8_enter +ALIGN 16 +$L$ecb_enc_loop8: + movups XMMWORD[rsi],xmm2 mov rcx,r11 - movdqu xmm2,XMMWORD PTR[rdi] + movdqu xmm2,XMMWORD[rdi] mov eax,r10d - movups XMMWORD PTR[16+rsi],xmm3 - movdqu xmm3,XMMWORD PTR[16+rdi] - movups XMMWORD PTR[32+rsi],xmm4 - movdqu xmm4,XMMWORD PTR[32+rdi] - movups XMMWORD PTR[48+rsi],xmm5 - movdqu xmm5,XMMWORD PTR[48+rdi] - movups XMMWORD PTR[64+rsi],xmm6 - movdqu xmm6,XMMWORD PTR[64+rdi] - movups XMMWORD PTR[80+rsi],xmm7 - movdqu xmm7,XMMWORD PTR[80+rdi] - movups XMMWORD PTR[96+rsi],xmm8 - movdqu xmm8,XMMWORD PTR[96+rdi] - movups XMMWORD PTR[112+rsi],xmm9 - lea rsi,QWORD PTR[128+rsi] - movdqu xmm9,XMMWORD PTR[112+rdi] - lea rdi,QWORD PTR[128+rdi] -$L$ecb_enc_loop8_enter:: + movups XMMWORD[16+rsi],xmm3 + movdqu xmm3,XMMWORD[16+rdi] + movups XMMWORD[32+rsi],xmm4 + movdqu xmm4,XMMWORD[32+rdi] + movups XMMWORD[48+rsi],xmm5 + movdqu xmm5,XMMWORD[48+rdi] + movups XMMWORD[64+rsi],xmm6 + movdqu xmm6,XMMWORD[64+rdi] + movups XMMWORD[80+rsi],xmm7 + movdqu xmm7,XMMWORD[80+rdi] + movups XMMWORD[96+rsi],xmm8 + movdqu xmm8,XMMWORD[96+rdi] + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] +$L$ecb_enc_loop8_enter: call _aesni_encrypt8 - sub rdx,080h - jnc $L$ecb_enc_loop8 + sub rdx,0x80 + jnc NEAR $L$ecb_enc_loop8 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 mov rcx,r11 - movups XMMWORD PTR[16+rsi],xmm3 + movups XMMWORD[16+rsi],xmm3 mov eax,r10d - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - movups XMMWORD PTR[96+rsi],xmm8 - movups XMMWORD PTR[112+rsi],xmm9 - lea rsi,QWORD PTR[128+rsi] - add rdx,080h - jz $L$ecb_ret - -$L$ecb_enc_tail:: - movups xmm2,XMMWORD PTR[rdi] - cmp rdx,020h - jb $L$ecb_enc_one - movups xmm3,XMMWORD PTR[16+rdi] - je $L$ecb_enc_two - movups xmm4,XMMWORD PTR[32+rdi] - cmp rdx,040h - jb $L$ecb_enc_three - movups xmm5,XMMWORD PTR[48+rdi] - je $L$ecb_enc_four - movups xmm6,XMMWORD PTR[64+rdi] - cmp rdx,060h - jb $L$ecb_enc_five - movups xmm7,XMMWORD PTR[80+rdi] - je $L$ecb_enc_six - movdqu xmm8,XMMWORD PTR[96+rdi] + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + movups XMMWORD[96+rsi],xmm8 + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + add rdx,0x80 + jz NEAR $L$ecb_ret + +$L$ecb_enc_tail: + movups xmm2,XMMWORD[rdi] + cmp rdx,0x20 + jb NEAR $L$ecb_enc_one + movups xmm3,XMMWORD[16+rdi] + je NEAR $L$ecb_enc_two + movups xmm4,XMMWORD[32+rdi] + cmp rdx,0x40 + jb NEAR $L$ecb_enc_three + movups xmm5,XMMWORD[48+rdi] + je NEAR $L$ecb_enc_four + movups xmm6,XMMWORD[64+rdi] + cmp rdx,0x60 + jb NEAR $L$ecb_enc_five + movups xmm7,XMMWORD[80+rdi] + je NEAR $L$ecb_enc_six + movdqu xmm8,XMMWORD[96+rdi] + xorps xmm9,xmm9 call _aesni_encrypt8 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - movups XMMWORD PTR[96+rsi],xmm8 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_enc_one:: - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + movups XMMWORD[96+rsi],xmm8 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_one: + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_enc1_3:: +$L$oop_enc1_3: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_3 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_3 DB 102,15,56,221,209 - movups XMMWORD PTR[rsi],xmm2 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_enc_two:: +$L$ecb_enc_two: call _aesni_encrypt2 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_enc_three:: +$L$ecb_enc_three: call _aesni_encrypt3 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_enc_four:: +$L$ecb_enc_four: call _aesni_encrypt4 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_enc_five:: +$L$ecb_enc_five: xorps xmm7,xmm7 call _aesni_encrypt6 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_enc_six:: + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_enc_six: call _aesni_encrypt6 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - jmp $L$ecb_ret - -ALIGN 16 -$L$ecb_decrypt:: - cmp rdx,080h - jb $L$ecb_dec_tail - - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] - movdqu xmm4,XMMWORD PTR[32+rdi] - movdqu xmm5,XMMWORD PTR[48+rdi] - movdqu xmm6,XMMWORD PTR[64+rdi] - movdqu xmm7,XMMWORD PTR[80+rdi] - movdqu xmm8,XMMWORD PTR[96+rdi] - movdqu xmm9,XMMWORD PTR[112+rdi] - lea rdi,QWORD PTR[128+rdi] - sub rdx,080h - jmp $L$ecb_dec_loop8_enter -ALIGN 16 -$L$ecb_dec_loop8:: - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + movups XMMWORD[48+rsi],xmm5 + movups XMMWORD[64+rsi],xmm6 + movups XMMWORD[80+rsi],xmm7 + jmp NEAR $L$ecb_ret + +ALIGN 16 +$L$ecb_decrypt: + cmp rdx,0x80 + jb NEAR $L$ecb_dec_tail + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] + movdqu xmm5,XMMWORD[48+rdi] + movdqu xmm6,XMMWORD[64+rdi] + movdqu xmm7,XMMWORD[80+rdi] + movdqu xmm8,XMMWORD[96+rdi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] + sub rdx,0x80 + jmp NEAR $L$ecb_dec_loop8_enter +ALIGN 16 +$L$ecb_dec_loop8: + movups XMMWORD[rsi],xmm2 mov rcx,r11 - movdqu xmm2,XMMWORD PTR[rdi] + movdqu xmm2,XMMWORD[rdi] mov eax,r10d - movups XMMWORD PTR[16+rsi],xmm3 - movdqu xmm3,XMMWORD PTR[16+rdi] - movups XMMWORD PTR[32+rsi],xmm4 - movdqu xmm4,XMMWORD PTR[32+rdi] - movups XMMWORD PTR[48+rsi],xmm5 - movdqu xmm5,XMMWORD PTR[48+rdi] - movups XMMWORD PTR[64+rsi],xmm6 - movdqu xmm6,XMMWORD PTR[64+rdi] - movups XMMWORD PTR[80+rsi],xmm7 - movdqu xmm7,XMMWORD PTR[80+rdi] - movups XMMWORD PTR[96+rsi],xmm8 - movdqu xmm8,XMMWORD PTR[96+rdi] - movups XMMWORD PTR[112+rsi],xmm9 - lea rsi,QWORD PTR[128+rsi] - movdqu xmm9,XMMWORD PTR[112+rdi] - lea rdi,QWORD PTR[128+rdi] -$L$ecb_dec_loop8_enter:: + movups XMMWORD[16+rsi],xmm3 + movdqu xmm3,XMMWORD[16+rdi] + movups XMMWORD[32+rsi],xmm4 + movdqu xmm4,XMMWORD[32+rdi] + movups XMMWORD[48+rsi],xmm5 + movdqu xmm5,XMMWORD[48+rdi] + movups XMMWORD[64+rsi],xmm6 + movdqu xmm6,XMMWORD[64+rdi] + movups XMMWORD[80+rsi],xmm7 + movdqu xmm7,XMMWORD[80+rdi] + movups XMMWORD[96+rsi],xmm8 + movdqu xmm8,XMMWORD[96+rdi] + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] + movdqu xmm9,XMMWORD[112+rdi] + lea rdi,[128+rdi] +$L$ecb_dec_loop8_enter: call _aesni_decrypt8 - movups xmm0,XMMWORD PTR[r11] - sub rdx,080h - jnc $L$ecb_dec_loop8 + movups xmm0,XMMWORD[r11] + sub rdx,0x80 + jnc NEAR $L$ecb_dec_loop8 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 mov rcx,r11 - movups XMMWORD PTR[16+rsi],xmm3 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 mov eax,r10d - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - movups XMMWORD PTR[96+rsi],xmm8 - movups XMMWORD PTR[112+rsi],xmm9 - lea rsi,QWORD PTR[128+rsi] - add rdx,080h - jz $L$ecb_ret - -$L$ecb_dec_tail:: - movups xmm2,XMMWORD PTR[rdi] - cmp rdx,020h - jb $L$ecb_dec_one - movups xmm3,XMMWORD PTR[16+rdi] - je $L$ecb_dec_two - movups xmm4,XMMWORD PTR[32+rdi] - cmp rdx,040h - jb $L$ecb_dec_three - movups xmm5,XMMWORD PTR[48+rdi] - je $L$ecb_dec_four - movups xmm6,XMMWORD PTR[64+rdi] - cmp rdx,060h - jb $L$ecb_dec_five - movups xmm7,XMMWORD PTR[80+rdi] - je $L$ecb_dec_six - movups xmm8,XMMWORD PTR[96+rdi] - movups xmm0,XMMWORD PTR[rcx] + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + movups XMMWORD[96+rsi],xmm8 + pxor xmm8,xmm8 + movups XMMWORD[112+rsi],xmm9 + pxor xmm9,xmm9 + lea rsi,[128+rsi] + add rdx,0x80 + jz NEAR $L$ecb_ret + +$L$ecb_dec_tail: + movups xmm2,XMMWORD[rdi] + cmp rdx,0x20 + jb NEAR $L$ecb_dec_one + movups xmm3,XMMWORD[16+rdi] + je NEAR $L$ecb_dec_two + movups xmm4,XMMWORD[32+rdi] + cmp rdx,0x40 + jb NEAR $L$ecb_dec_three + movups xmm5,XMMWORD[48+rdi] + je NEAR $L$ecb_dec_four + movups xmm6,XMMWORD[64+rdi] + cmp rdx,0x60 + jb NEAR $L$ecb_dec_five + movups xmm7,XMMWORD[80+rdi] + je NEAR $L$ecb_dec_six + movups xmm8,XMMWORD[96+rdi] + movups xmm0,XMMWORD[rcx] + xorps xmm9,xmm9 call _aesni_decrypt8 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - movups XMMWORD PTR[96+rsi],xmm8 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_dec_one:: - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + movups XMMWORD[96+rsi],xmm8 + pxor xmm8,xmm8 + pxor xmm9,xmm9 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_one: + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_dec1_4:: +$L$oop_dec1_4: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_dec1_4 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_4 DB 102,15,56,223,209 - movups XMMWORD PTR[rsi],xmm2 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_dec_two:: +$L$ecb_dec_two: call _aesni_decrypt2 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - jmp $L$ecb_ret + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + jmp NEAR $L$ecb_ret ALIGN 16 -$L$ecb_dec_three:: +$L$ecb_dec_three: call _aesni_decrypt3 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_dec_four:: + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_four: call _aesni_decrypt4 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_dec_five:: + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_five: xorps xmm7,xmm7 call _aesni_decrypt6 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - jmp $L$ecb_ret -ALIGN 16 -$L$ecb_dec_six:: + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + jmp NEAR $L$ecb_ret +ALIGN 16 +$L$ecb_dec_six: call _aesni_decrypt6 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - movups XMMWORD PTR[48+rsi],xmm5 - movups XMMWORD PTR[64+rsi],xmm6 - movups XMMWORD PTR[80+rsi],xmm7 - -$L$ecb_ret:: - movaps xmm6,XMMWORD PTR[rsp] - movaps xmm7,XMMWORD PTR[16+rsp] - movaps xmm8,XMMWORD PTR[32+rsp] - movaps xmm9,XMMWORD PTR[48+rsp] - lea rsp,QWORD PTR[88+rsp] -$L$ecb_enc_ret:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + movups XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + movups XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + movups XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + +$L$ecb_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ecb_enc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_ecb_encrypt:: -aesni_ecb_encrypt ENDP -PUBLIC aesni_ccm64_encrypt_blocks +$L$SEH_end_aesni_ecb_encrypt: +global aesni_ccm64_encrypt_blocks ALIGN 16 -aesni_ccm64_encrypt_blocks PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_ccm64_encrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_ccm64_encrypt_blocks:: +$L$SEH_begin_aesni_ccm64_encrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] - lea rsp,QWORD PTR[((-88))+rsp] - movaps XMMWORD PTR[rsp],xmm6 - movaps XMMWORD PTR[16+rsp],xmm7 - movaps XMMWORD PTR[32+rsp],xmm8 - movaps XMMWORD PTR[48+rsp],xmm9 -$L$ccm64_enc_body:: - mov eax,DWORD PTR[240+rcx] - movdqu xmm6,XMMWORD PTR[r8] - movdqa xmm9,XMMWORD PTR[$L$increment64] - movdqa xmm7,XMMWORD PTR[$L$bswap_mask] + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ccm64_enc_body: + mov eax,DWORD[240+rcx] + movdqu xmm6,XMMWORD[r8] + movdqa xmm9,XMMWORD[$L$increment64] + movdqa xmm7,XMMWORD[$L$bswap_mask] shl eax,4 mov r10d,16 - lea r11,QWORD PTR[rcx] - movdqu xmm3,XMMWORD PTR[r9] + lea r11,[rcx] + movdqu xmm3,XMMWORD[r9] movdqa xmm2,xmm6 - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] DB 102,15,56,0,247 sub r10,rax - jmp $L$ccm64_enc_outer + jmp NEAR $L$ccm64_enc_outer ALIGN 16 -$L$ccm64_enc_outer:: - movups xmm0,XMMWORD PTR[r11] +$L$ccm64_enc_outer: + movups xmm0,XMMWORD[r11] mov rax,r10 - movups xmm8,XMMWORD PTR[rdi] + movups xmm8,XMMWORD[rdi] xorps xmm2,xmm0 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] xorps xmm0,xmm8 xorps xmm3,xmm0 - movups xmm0,XMMWORD PTR[32+r11] + movups xmm0,XMMWORD[32+r11] -$L$ccm64_enc2_loop:: +$L$ccm64_enc2_loop: DB 102,15,56,220,209 DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$ccm64_enc2_loop + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ccm64_enc2_loop DB 102,15,56,220,209 DB 102,15,56,220,217 paddq xmm6,xmm9 @@ -890,458 +929,505 @@ DB 102,15,56,220,217 DB 102,15,56,221,208 DB 102,15,56,221,216 - lea rdi,QWORD PTR[16+rdi] + lea rdi,[16+rdi] xorps xmm8,xmm2 movdqa xmm2,xmm6 - movups XMMWORD PTR[rsi],xmm8 + movups XMMWORD[rsi],xmm8 DB 102,15,56,0,215 - lea rsi,QWORD PTR[16+rsi] - jnz $L$ccm64_enc_outer - - movups XMMWORD PTR[r9],xmm3 - movaps xmm6,XMMWORD PTR[rsp] - movaps xmm7,XMMWORD PTR[16+rsp] - movaps xmm8,XMMWORD PTR[32+rsp] - movaps xmm9,XMMWORD PTR[48+rsp] - lea rsp,QWORD PTR[88+rsp] -$L$ccm64_enc_ret:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + lea rsi,[16+rsi] + jnz NEAR $L$ccm64_enc_outer + + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movups XMMWORD[r9],xmm3 + pxor xmm3,xmm3 + pxor xmm8,xmm8 + pxor xmm6,xmm6 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ccm64_enc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_ccm64_encrypt_blocks:: -aesni_ccm64_encrypt_blocks ENDP -PUBLIC aesni_ccm64_decrypt_blocks +$L$SEH_end_aesni_ccm64_encrypt_blocks: +global aesni_ccm64_decrypt_blocks ALIGN 16 -aesni_ccm64_decrypt_blocks PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_ccm64_decrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_ccm64_decrypt_blocks:: +$L$SEH_begin_aesni_ccm64_decrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] - - - lea rsp,QWORD PTR[((-88))+rsp] - movaps XMMWORD PTR[rsp],xmm6 - movaps XMMWORD PTR[16+rsp],xmm7 - movaps XMMWORD PTR[32+rsp],xmm8 - movaps XMMWORD PTR[48+rsp],xmm9 -$L$ccm64_dec_body:: - mov eax,DWORD PTR[240+rcx] - movups xmm6,XMMWORD PTR[r8] - movdqu xmm3,XMMWORD PTR[r9] - movdqa xmm9,XMMWORD PTR[$L$increment64] - movdqa xmm7,XMMWORD PTR[$L$bswap_mask] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + lea rsp,[((-88))+rsp] + movaps XMMWORD[rsp],xmm6 + movaps XMMWORD[16+rsp],xmm7 + movaps XMMWORD[32+rsp],xmm8 + movaps XMMWORD[48+rsp],xmm9 +$L$ccm64_dec_body: + mov eax,DWORD[240+rcx] + movups xmm6,XMMWORD[r8] + movdqu xmm3,XMMWORD[r9] + movdqa xmm9,XMMWORD[$L$increment64] + movdqa xmm7,XMMWORD[$L$bswap_mask] movaps xmm2,xmm6 mov r10d,eax mov r11,rcx DB 102,15,56,0,247 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_enc1_5:: +$L$oop_enc1_5: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_5 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_5 DB 102,15,56,221,209 shl r10d,4 mov eax,16 - movups xmm8,XMMWORD PTR[rdi] + movups xmm8,XMMWORD[rdi] paddq xmm6,xmm9 - lea rdi,QWORD PTR[16+rdi] + lea rdi,[16+rdi] sub rax,r10 - lea rcx,QWORD PTR[32+r10*1+r11] + lea rcx,[32+r10*1+r11] mov r10,rax - jmp $L$ccm64_dec_outer + jmp NEAR $L$ccm64_dec_outer ALIGN 16 -$L$ccm64_dec_outer:: +$L$ccm64_dec_outer: xorps xmm8,xmm2 movdqa xmm2,xmm6 - movups XMMWORD PTR[rsi],xmm8 - lea rsi,QWORD PTR[16+rsi] + movups XMMWORD[rsi],xmm8 + lea rsi,[16+rsi] DB 102,15,56,0,215 sub rdx,1 - jz $L$ccm64_dec_break + jz NEAR $L$ccm64_dec_break - movups xmm0,XMMWORD PTR[r11] + movups xmm0,XMMWORD[r11] mov rax,r10 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] xorps xmm8,xmm0 xorps xmm2,xmm0 xorps xmm3,xmm8 - movups xmm0,XMMWORD PTR[32+r11] - jmp $L$ccm64_dec2_loop + movups xmm0,XMMWORD[32+r11] + jmp NEAR $L$ccm64_dec2_loop ALIGN 16 -$L$ccm64_dec2_loop:: +$L$ccm64_dec2_loop: DB 102,15,56,220,209 DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR[rax*1+rcx] + movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] - jnz $L$ccm64_dec2_loop - movups xmm8,XMMWORD PTR[rdi] + movups xmm0,XMMWORD[((-16))+rax*1+rcx] + jnz NEAR $L$ccm64_dec2_loop + movups xmm8,XMMWORD[rdi] paddq xmm6,xmm9 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,221,208 DB 102,15,56,221,216 - lea rdi,QWORD PTR[16+rdi] - jmp $L$ccm64_dec_outer + lea rdi,[16+rdi] + jmp NEAR $L$ccm64_dec_outer ALIGN 16 -$L$ccm64_dec_break:: +$L$ccm64_dec_break: - mov eax,DWORD PTR[240+r11] - movups xmm0,XMMWORD PTR[r11] - movups xmm1,XMMWORD PTR[16+r11] + mov eax,DWORD[240+r11] + movups xmm0,XMMWORD[r11] + movups xmm1,XMMWORD[16+r11] xorps xmm8,xmm0 - lea r11,QWORD PTR[32+r11] + lea r11,[32+r11] xorps xmm3,xmm8 -$L$oop_enc1_6:: +$L$oop_enc1_6: DB 102,15,56,220,217 dec eax - movups xmm1,XMMWORD PTR[r11] - lea r11,QWORD PTR[16+r11] - jnz $L$oop_enc1_6 + movups xmm1,XMMWORD[r11] + lea r11,[16+r11] + jnz NEAR $L$oop_enc1_6 DB 102,15,56,221,217 - movups XMMWORD PTR[r9],xmm3 - movaps xmm6,XMMWORD PTR[rsp] - movaps xmm7,XMMWORD PTR[16+rsp] - movaps xmm8,XMMWORD PTR[32+rsp] - movaps xmm9,XMMWORD PTR[48+rsp] - lea rsp,QWORD PTR[88+rsp] -$L$ccm64_dec_ret:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movups XMMWORD[r9],xmm3 + pxor xmm3,xmm3 + pxor xmm8,xmm8 + pxor xmm6,xmm6 + movaps xmm6,XMMWORD[rsp] + movaps XMMWORD[rsp],xmm0 + movaps xmm7,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm8,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm9,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + lea rsp,[88+rsp] +$L$ccm64_dec_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_ccm64_decrypt_blocks:: -aesni_ccm64_decrypt_blocks ENDP -PUBLIC aesni_ctr32_encrypt_blocks +$L$SEH_end_aesni_ccm64_decrypt_blocks: +global aesni_ctr32_encrypt_blocks ALIGN 16 -aesni_ctr32_encrypt_blocks PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_ctr32_encrypt_blocks: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_ctr32_encrypt_blocks:: +$L$SEH_begin_aesni_ctr32_encrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] + mov r8,QWORD[40+rsp] - lea rax,QWORD PTR[rsp] + cmp rdx,1 + jne NEAR $L$ctr32_bulk + + + + movups xmm2,XMMWORD[r8] + movups xmm3,XMMWORD[rdi] + mov edx,DWORD[240+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_enc1_7: +DB 102,15,56,220,209 + dec edx + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_7 +DB 102,15,56,221,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + xorps xmm2,xmm3 + pxor xmm3,xmm3 + movups XMMWORD[rsi],xmm2 + xorps xmm2,xmm2 + jmp NEAR $L$ctr32_epilogue + +ALIGN 16 +$L$ctr32_bulk: + lea rax,[rsp] push rbp sub rsp,288 and rsp,-16 - movaps XMMWORD PTR[(-168)+rax],xmm6 - movaps XMMWORD PTR[(-152)+rax],xmm7 - movaps XMMWORD PTR[(-136)+rax],xmm8 - movaps XMMWORD PTR[(-120)+rax],xmm9 - movaps XMMWORD PTR[(-104)+rax],xmm10 - movaps XMMWORD PTR[(-88)+rax],xmm11 - movaps XMMWORD PTR[(-72)+rax],xmm12 - movaps XMMWORD PTR[(-56)+rax],xmm13 - movaps XMMWORD PTR[(-40)+rax],xmm14 - movaps XMMWORD PTR[(-24)+rax],xmm15 -$L$ctr32_body:: - lea rbp,QWORD PTR[((-8))+rax] + movaps XMMWORD[(-168)+rax],xmm6 + movaps XMMWORD[(-152)+rax],xmm7 + movaps XMMWORD[(-136)+rax],xmm8 + movaps XMMWORD[(-120)+rax],xmm9 + movaps XMMWORD[(-104)+rax],xmm10 + movaps XMMWORD[(-88)+rax],xmm11 + movaps XMMWORD[(-72)+rax],xmm12 + movaps XMMWORD[(-56)+rax],xmm13 + movaps XMMWORD[(-40)+rax],xmm14 + movaps XMMWORD[(-24)+rax],xmm15 +$L$ctr32_body: + lea rbp,[((-8))+rax] + - cmp rdx,1 - je $L$ctr32_one_shortcut - movdqu xmm2,XMMWORD PTR[r8] - movdqu xmm0,XMMWORD PTR[rcx] - mov r8d,DWORD PTR[12+r8] + + movdqu xmm2,XMMWORD[r8] + movdqu xmm0,XMMWORD[rcx] + mov r8d,DWORD[12+r8] pxor xmm2,xmm0 - mov r11d,DWORD PTR[12+rcx] - movdqa XMMWORD PTR[rsp],xmm2 + mov r11d,DWORD[12+rcx] + movdqa XMMWORD[rsp],xmm2 bswap r8d movdqa xmm3,xmm2 movdqa xmm4,xmm2 movdqa xmm5,xmm2 - movdqa XMMWORD PTR[64+rsp],xmm2 - movdqa XMMWORD PTR[80+rsp],xmm2 - movdqa XMMWORD PTR[96+rsp],xmm2 + movdqa XMMWORD[64+rsp],xmm2 + movdqa XMMWORD[80+rsp],xmm2 + movdqa XMMWORD[96+rsp],xmm2 mov r10,rdx - movdqa XMMWORD PTR[112+rsp],xmm2 + movdqa XMMWORD[112+rsp],xmm2 - lea rax,QWORD PTR[1+r8] - lea rdx,QWORD PTR[2+r8] + lea rax,[1+r8] + lea rdx,[2+r8] bswap eax bswap edx xor eax,r11d xor edx,r11d DB 102,15,58,34,216,3 - lea rax,QWORD PTR[3+r8] - movdqa XMMWORD PTR[16+rsp],xmm3 + lea rax,[3+r8] + movdqa XMMWORD[16+rsp],xmm3 DB 102,15,58,34,226,3 bswap eax mov rdx,r10 - lea r10,QWORD PTR[4+r8] - movdqa XMMWORD PTR[32+rsp],xmm4 + lea r10,[4+r8] + movdqa XMMWORD[32+rsp],xmm4 xor eax,r11d bswap r10d DB 102,15,58,34,232,3 xor r10d,r11d - movdqa XMMWORD PTR[48+rsp],xmm5 - lea r9,QWORD PTR[5+r8] - mov DWORD PTR[((64+12))+rsp],r10d + movdqa XMMWORD[48+rsp],xmm5 + lea r9,[5+r8] + mov DWORD[((64+12))+rsp],r10d bswap r9d - lea r10,QWORD PTR[6+r8] - mov eax,DWORD PTR[240+rcx] + lea r10,[6+r8] + mov eax,DWORD[240+rcx] xor r9d,r11d bswap r10d - mov DWORD PTR[((80+12))+rsp],r9d + mov DWORD[((80+12))+rsp],r9d xor r10d,r11d - lea r9,QWORD PTR[7+r8] - mov DWORD PTR[((96+12))+rsp],r10d + lea r9,[7+r8] + mov DWORD[((96+12))+rsp],r10d bswap r9d - mov r10d,DWORD PTR[((OPENSSL_ia32cap_P+4))] + mov r10d,DWORD[((OPENSSL_ia32cap_P+4))] xor r9d,r11d and r10d,71303168 - mov DWORD PTR[((112+12))+rsp],r9d + mov DWORD[((112+12))+rsp],r9d - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm1,XMMWORD[16+rcx] - movdqa xmm6,XMMWORD PTR[64+rsp] - movdqa xmm7,XMMWORD PTR[80+rsp] + movdqa xmm6,XMMWORD[64+rsp] + movdqa xmm7,XMMWORD[80+rsp] cmp rdx,8 - jb $L$ctr32_tail + jb NEAR $L$ctr32_tail sub rdx,6 cmp r10d,4194304 - je $L$ctr32_6x + je NEAR $L$ctr32_6x - lea rcx,QWORD PTR[128+rcx] + lea rcx,[128+rcx] sub rdx,2 - jmp $L$ctr32_loop8 + jmp NEAR $L$ctr32_loop8 ALIGN 16 -$L$ctr32_6x:: +$L$ctr32_6x: shl eax,4 mov r10d,48 bswap r11d - lea rcx,QWORD PTR[32+rax*1+rcx] + lea rcx,[32+rax*1+rcx] sub r10,rax - jmp $L$ctr32_loop6 + jmp NEAR $L$ctr32_loop6 ALIGN 16 -$L$ctr32_loop6:: +$L$ctr32_loop6: add r8d,6 - movups xmm0,XMMWORD PTR[((-48))+r10*1+rcx] + movups xmm0,XMMWORD[((-48))+r10*1+rcx] DB 102,15,56,220,209 mov eax,r8d xor eax,r11d DB 102,15,56,220,217 -DB 00fh,038h,0f1h,044h,024h,12 - lea eax,DWORD PTR[1+r8] +DB 0x0f,0x38,0xf1,0x44,0x24,12 + lea eax,[1+r8] DB 102,15,56,220,225 xor eax,r11d -DB 00fh,038h,0f1h,044h,024h,28 +DB 0x0f,0x38,0xf1,0x44,0x24,28 DB 102,15,56,220,233 - lea eax,DWORD PTR[2+r8] + lea eax,[2+r8] xor eax,r11d DB 102,15,56,220,241 -DB 00fh,038h,0f1h,044h,024h,44 - lea eax,DWORD PTR[3+r8] +DB 0x0f,0x38,0xf1,0x44,0x24,44 + lea eax,[3+r8] DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[((-32))+r10*1+rcx] + movups xmm1,XMMWORD[((-32))+r10*1+rcx] xor eax,r11d DB 102,15,56,220,208 -DB 00fh,038h,0f1h,044h,024h,60 - lea eax,DWORD PTR[4+r8] +DB 0x0f,0x38,0xf1,0x44,0x24,60 + lea eax,[4+r8] DB 102,15,56,220,216 xor eax,r11d -DB 00fh,038h,0f1h,044h,024h,76 +DB 0x0f,0x38,0xf1,0x44,0x24,76 DB 102,15,56,220,224 - lea eax,DWORD PTR[5+r8] + lea eax,[5+r8] xor eax,r11d DB 102,15,56,220,232 -DB 00fh,038h,0f1h,044h,024h,92 +DB 0x0f,0x38,0xf1,0x44,0x24,92 mov rax,r10 DB 102,15,56,220,240 DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR[((-16))+r10*1+rcx] + movups xmm0,XMMWORD[((-16))+r10*1+rcx] call $L$enc_loop6 - movdqu xmm8,XMMWORD PTR[rdi] - movdqu xmm9,XMMWORD PTR[16+rdi] - movdqu xmm10,XMMWORD PTR[32+rdi] - movdqu xmm11,XMMWORD PTR[48+rdi] - movdqu xmm12,XMMWORD PTR[64+rdi] - movdqu xmm13,XMMWORD PTR[80+rdi] - lea rdi,QWORD PTR[96+rdi] - movups xmm1,XMMWORD PTR[((-64))+r10*1+rcx] + movdqu xmm8,XMMWORD[rdi] + movdqu xmm9,XMMWORD[16+rdi] + movdqu xmm10,XMMWORD[32+rdi] + movdqu xmm11,XMMWORD[48+rdi] + movdqu xmm12,XMMWORD[64+rdi] + movdqu xmm13,XMMWORD[80+rdi] + lea rdi,[96+rdi] + movups xmm1,XMMWORD[((-64))+r10*1+rcx] pxor xmm8,xmm2 - movaps xmm2,XMMWORD PTR[rsp] + movaps xmm2,XMMWORD[rsp] pxor xmm9,xmm3 - movaps xmm3,XMMWORD PTR[16+rsp] + movaps xmm3,XMMWORD[16+rsp] pxor xmm10,xmm4 - movaps xmm4,XMMWORD PTR[32+rsp] + movaps xmm4,XMMWORD[32+rsp] pxor xmm11,xmm5 - movaps xmm5,XMMWORD PTR[48+rsp] + movaps xmm5,XMMWORD[48+rsp] pxor xmm12,xmm6 - movaps xmm6,XMMWORD PTR[64+rsp] + movaps xmm6,XMMWORD[64+rsp] pxor xmm13,xmm7 - movaps xmm7,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[rsi],xmm8 - movdqu XMMWORD PTR[16+rsi],xmm9 - movdqu XMMWORD PTR[32+rsi],xmm10 - movdqu XMMWORD PTR[48+rsi],xmm11 - movdqu XMMWORD PTR[64+rsi],xmm12 - movdqu XMMWORD PTR[80+rsi],xmm13 - lea rsi,QWORD PTR[96+rsi] + movaps xmm7,XMMWORD[80+rsp] + movdqu XMMWORD[rsi],xmm8 + movdqu XMMWORD[16+rsi],xmm9 + movdqu XMMWORD[32+rsi],xmm10 + movdqu XMMWORD[48+rsi],xmm11 + movdqu XMMWORD[64+rsi],xmm12 + movdqu XMMWORD[80+rsi],xmm13 + lea rsi,[96+rsi] sub rdx,6 - jnc $L$ctr32_loop6 + jnc NEAR $L$ctr32_loop6 add rdx,6 - jz $L$ctr32_done + jz NEAR $L$ctr32_done - lea eax,DWORD PTR[((-48))+r10] - lea rcx,QWORD PTR[((-80))+r10*1+rcx] + lea eax,[((-48))+r10] + lea rcx,[((-80))+r10*1+rcx] neg eax shr eax,4 - jmp $L$ctr32_tail + jmp NEAR $L$ctr32_tail ALIGN 32 -$L$ctr32_loop8:: +$L$ctr32_loop8: add r8d,8 - movdqa xmm8,XMMWORD PTR[96+rsp] + movdqa xmm8,XMMWORD[96+rsp] DB 102,15,56,220,209 mov r9d,r8d - movdqa xmm9,XMMWORD PTR[112+rsp] + movdqa xmm9,XMMWORD[112+rsp] DB 102,15,56,220,217 bswap r9d - movups xmm0,XMMWORD PTR[((32-128))+rcx] + movups xmm0,XMMWORD[((32-128))+rcx] DB 102,15,56,220,225 xor r9d,r11d nop DB 102,15,56,220,233 - mov DWORD PTR[((0+12))+rsp],r9d - lea r9,QWORD PTR[1+r8] + mov DWORD[((0+12))+rsp],r9d + lea r9,[1+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((48-128))+rcx] + movups xmm1,XMMWORD[((48-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 - mov DWORD PTR[((16+12))+rsp],r9d - lea r9,QWORD PTR[2+r8] + mov DWORD[((16+12))+rsp],r9d + lea r9,[2+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((64-128))+rcx] + movups xmm0,XMMWORD[((64-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 - mov DWORD PTR[((32+12))+rsp],r9d - lea r9,QWORD PTR[3+r8] + mov DWORD[((32+12))+rsp],r9d + lea r9,[3+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((80-128))+rcx] + movups xmm1,XMMWORD[((80-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 - mov DWORD PTR[((48+12))+rsp],r9d - lea r9,QWORD PTR[4+r8] + mov DWORD[((48+12))+rsp],r9d + lea r9,[4+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((96-128))+rcx] + movups xmm0,XMMWORD[((96-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 - mov DWORD PTR[((64+12))+rsp],r9d - lea r9,QWORD PTR[5+r8] + mov DWORD[((64+12))+rsp],r9d + lea r9,[5+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((112-128))+rcx] + movups xmm1,XMMWORD[((112-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 - mov DWORD PTR[((80+12))+rsp],r9d - lea r9,QWORD PTR[6+r8] + mov DWORD[((80+12))+rsp],r9d + lea r9,[6+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((128-128))+rcx] + movups xmm0,XMMWORD[((128-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,r11d -DB 066h,090h +DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 - mov DWORD PTR[((96+12))+rsp],r9d - lea r9,QWORD PTR[7+r8] + mov DWORD[((96+12))+rsp],r9d + lea r9,[7+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((144-128))+rcx] + movups xmm1,XMMWORD[((144-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 xor r9d,r11d - movdqu xmm10,XMMWORD PTR[rdi] + movdqu xmm10,XMMWORD[rdi] DB 102,15,56,220,232 - mov DWORD PTR[((112+12))+rsp],r9d + mov DWORD[((112+12))+rsp],r9d cmp eax,11 DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((160-128))+rcx] + movups xmm0,XMMWORD[((160-128))+rcx] - jb $L$ctr32_enc_done + jb NEAR $L$ctr32_enc_done DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -1351,7 +1437,7 @@ DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((176-128))+rcx] + movups xmm1,XMMWORD[((176-128))+rcx] DB 102,15,56,220,208 DB 102,15,56,220,216 @@ -1361,8 +1447,8 @@ DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((192-128))+rcx] - je $L$ctr32_enc_done + movups xmm0,XMMWORD[((192-128))+rcx] + je NEAR $L$ctr32_enc_done DB 102,15,56,220,209 DB 102,15,56,220,217 @@ -1372,7 +1458,7 @@ DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movups xmm1,XMMWORD PTR[((208-128))+rcx] + movups xmm1,XMMWORD[((208-128))+rcx] DB 102,15,56,220,208 DB 102,15,56,220,216 @@ -1382,20 +1468,20 @@ DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 - movups xmm0,XMMWORD PTR[((224-128))+rcx] - jmp $L$ctr32_enc_done + movups xmm0,XMMWORD[((224-128))+rcx] + jmp NEAR $L$ctr32_enc_done ALIGN 16 -$L$ctr32_enc_done:: - movdqu xmm11,XMMWORD PTR[16+rdi] +$L$ctr32_enc_done: + movdqu xmm11,XMMWORD[16+rdi] pxor xmm10,xmm0 - movdqu xmm12,XMMWORD PTR[32+rdi] + movdqu xmm12,XMMWORD[32+rdi] pxor xmm11,xmm0 - movdqu xmm13,XMMWORD PTR[48+rdi] + movdqu xmm13,XMMWORD[48+rdi] pxor xmm12,xmm0 - movdqu xmm14,XMMWORD PTR[64+rdi] + movdqu xmm14,XMMWORD[64+rdi] pxor xmm13,xmm0 - movdqu xmm15,XMMWORD PTR[80+rdi] + movdqu xmm15,XMMWORD[80+rdi] pxor xmm14,xmm0 pxor xmm15,xmm0 DB 102,15,56,220,209 @@ -1406,259 +1492,264 @@ DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 - movdqu xmm1,XMMWORD PTR[96+rdi] - lea rdi,QWORD PTR[128+rdi] + movdqu xmm1,XMMWORD[96+rdi] + lea rdi,[128+rdi] DB 102,65,15,56,221,210 pxor xmm1,xmm0 - movdqu xmm10,XMMWORD PTR[((112-128))+rdi] + movdqu xmm10,XMMWORD[((112-128))+rdi] DB 102,65,15,56,221,219 pxor xmm10,xmm0 - movdqa xmm11,XMMWORD PTR[rsp] + movdqa xmm11,XMMWORD[rsp] DB 102,65,15,56,221,228 DB 102,65,15,56,221,237 - movdqa xmm12,XMMWORD PTR[16+rsp] - movdqa xmm13,XMMWORD PTR[32+rsp] + movdqa xmm12,XMMWORD[16+rsp] + movdqa xmm13,XMMWORD[32+rsp] DB 102,65,15,56,221,246 DB 102,65,15,56,221,255 - movdqa xmm14,XMMWORD PTR[48+rsp] - movdqa xmm15,XMMWORD PTR[64+rsp] + movdqa xmm14,XMMWORD[48+rsp] + movdqa xmm15,XMMWORD[64+rsp] DB 102,68,15,56,221,193 - movdqa xmm0,XMMWORD PTR[80+rsp] - movups xmm1,XMMWORD PTR[((16-128))+rcx] + movdqa xmm0,XMMWORD[80+rsp] + movups xmm1,XMMWORD[((16-128))+rcx] DB 102,69,15,56,221,202 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 movdqa xmm2,xmm11 - movups XMMWORD PTR[16+rsi],xmm3 + movups XMMWORD[16+rsi],xmm3 movdqa xmm3,xmm12 - movups XMMWORD PTR[32+rsi],xmm4 + movups XMMWORD[32+rsi],xmm4 movdqa xmm4,xmm13 - movups XMMWORD PTR[48+rsi],xmm5 + movups XMMWORD[48+rsi],xmm5 movdqa xmm5,xmm14 - movups XMMWORD PTR[64+rsi],xmm6 + movups XMMWORD[64+rsi],xmm6 movdqa xmm6,xmm15 - movups XMMWORD PTR[80+rsi],xmm7 + movups XMMWORD[80+rsi],xmm7 movdqa xmm7,xmm0 - movups XMMWORD PTR[96+rsi],xmm8 - movups XMMWORD PTR[112+rsi],xmm9 - lea rsi,QWORD PTR[128+rsi] + movups XMMWORD[96+rsi],xmm8 + movups XMMWORD[112+rsi],xmm9 + lea rsi,[128+rsi] sub rdx,8 - jnc $L$ctr32_loop8 + jnc NEAR $L$ctr32_loop8 add rdx,8 - jz $L$ctr32_done - lea rcx,QWORD PTR[((-128))+rcx] + jz NEAR $L$ctr32_done + lea rcx,[((-128))+rcx] + +$L$ctr32_tail: -$L$ctr32_tail:: - lea rcx,QWORD PTR[16+rcx] + + lea rcx,[16+rcx] cmp rdx,4 - jb $L$ctr32_loop3 - je $L$ctr32_loop4 + jb NEAR $L$ctr32_loop3 + je NEAR $L$ctr32_loop4 + shl eax,4 - movdqa xmm8,XMMWORD PTR[96+rsp] + movdqa xmm8,XMMWORD[96+rsp] pxor xmm9,xmm9 - movups xmm0,XMMWORD PTR[16+rcx] + movups xmm0,XMMWORD[16+rcx] DB 102,15,56,220,209 DB 102,15,56,220,217 - lea rcx,QWORD PTR[((32-16))+rax*1+rcx] + lea rcx,[((32-16))+rax*1+rcx] neg rax DB 102,15,56,220,225 add rax,16 - movups xmm10,XMMWORD PTR[rdi] + movups xmm10,XMMWORD[rdi] DB 102,15,56,220,233 DB 102,15,56,220,241 - movups xmm11,XMMWORD PTR[16+rdi] - movups xmm12,XMMWORD PTR[32+rdi] + movups xmm11,XMMWORD[16+rdi] + movups xmm12,XMMWORD[32+rdi] DB 102,15,56,220,249 DB 102,68,15,56,220,193 call $L$enc_loop8_enter - movdqu xmm13,XMMWORD PTR[48+rdi] + movdqu xmm13,XMMWORD[48+rdi] pxor xmm2,xmm10 - movdqu xmm10,XMMWORD PTR[64+rdi] + movdqu xmm10,XMMWORD[64+rdi] pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 pxor xmm6,xmm10 - movdqu XMMWORD PTR[48+rsi],xmm5 - movdqu XMMWORD PTR[64+rsi],xmm6 + movdqu XMMWORD[48+rsi],xmm5 + movdqu XMMWORD[64+rsi],xmm6 cmp rdx,6 - jb $L$ctr32_done + jb NEAR $L$ctr32_done - movups xmm11,XMMWORD PTR[80+rdi] + movups xmm11,XMMWORD[80+rdi] xorps xmm7,xmm11 - movups XMMWORD PTR[80+rsi],xmm7 - je $L$ctr32_done + movups XMMWORD[80+rsi],xmm7 + je NEAR $L$ctr32_done - movups xmm12,XMMWORD PTR[96+rdi] + movups xmm12,XMMWORD[96+rdi] xorps xmm8,xmm12 - movups XMMWORD PTR[96+rsi],xmm8 - jmp $L$ctr32_done + movups XMMWORD[96+rsi],xmm8 + jmp NEAR $L$ctr32_done ALIGN 32 -$L$ctr32_loop4:: +$L$ctr32_loop4: DB 102,15,56,220,209 - lea rcx,QWORD PTR[16+rcx] + lea rcx,[16+rcx] dec eax DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 - movups xmm1,XMMWORD PTR[rcx] - jnz $L$ctr32_loop4 + movups xmm1,XMMWORD[rcx] + jnz NEAR $L$ctr32_loop4 DB 102,15,56,221,209 DB 102,15,56,221,217 - movups xmm10,XMMWORD PTR[rdi] - movups xmm11,XMMWORD PTR[16+rdi] + movups xmm10,XMMWORD[rdi] + movups xmm11,XMMWORD[16+rdi] DB 102,15,56,221,225 DB 102,15,56,221,233 - movups xmm12,XMMWORD PTR[32+rdi] - movups xmm13,XMMWORD PTR[48+rdi] + movups xmm12,XMMWORD[32+rdi] + movups xmm13,XMMWORD[48+rdi] xorps xmm2,xmm10 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 xorps xmm3,xmm11 - movups XMMWORD PTR[16+rsi],xmm3 + movups XMMWORD[16+rsi],xmm3 pxor xmm4,xmm12 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 pxor xmm5,xmm13 - movdqu XMMWORD PTR[48+rsi],xmm5 - jmp $L$ctr32_done + movdqu XMMWORD[48+rsi],xmm5 + jmp NEAR $L$ctr32_done ALIGN 32 -$L$ctr32_loop3:: +$L$ctr32_loop3: DB 102,15,56,220,209 - lea rcx,QWORD PTR[16+rcx] + lea rcx,[16+rcx] dec eax DB 102,15,56,220,217 DB 102,15,56,220,225 - movups xmm1,XMMWORD PTR[rcx] - jnz $L$ctr32_loop3 + movups xmm1,XMMWORD[rcx] + jnz NEAR $L$ctr32_loop3 DB 102,15,56,221,209 DB 102,15,56,221,217 DB 102,15,56,221,225 - movups xmm10,XMMWORD PTR[rdi] + movups xmm10,XMMWORD[rdi] xorps xmm2,xmm10 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 cmp rdx,2 - jb $L$ctr32_done + jb NEAR $L$ctr32_done - movups xmm11,XMMWORD PTR[16+rdi] + movups xmm11,XMMWORD[16+rdi] xorps xmm3,xmm11 - movups XMMWORD PTR[16+rsi],xmm3 - je $L$ctr32_done + movups XMMWORD[16+rsi],xmm3 + je NEAR $L$ctr32_done - movups xmm12,XMMWORD PTR[32+rdi] + movups xmm12,XMMWORD[32+rdi] xorps xmm4,xmm12 - movups XMMWORD PTR[32+rsi],xmm4 - jmp $L$ctr32_done - -ALIGN 16 -$L$ctr32_one_shortcut:: - movups xmm2,XMMWORD PTR[r8] - movups xmm10,XMMWORD PTR[rdi] - mov eax,DWORD PTR[240+rcx] - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] - xorps xmm2,xmm0 -$L$oop_enc1_7:: -DB 102,15,56,220,209 - dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_7 -DB 102,15,56,221,209 - xorps xmm2,xmm10 - movups XMMWORD PTR[rsi],xmm2 - jmp $L$ctr32_done - -ALIGN 16 -$L$ctr32_done:: - movaps xmm6,XMMWORD PTR[((-160))+rbp] - movaps xmm7,XMMWORD PTR[((-144))+rbp] - movaps xmm8,XMMWORD PTR[((-128))+rbp] - movaps xmm9,XMMWORD PTR[((-112))+rbp] - movaps xmm10,XMMWORD PTR[((-96))+rbp] - movaps xmm11,XMMWORD PTR[((-80))+rbp] - movaps xmm12,XMMWORD PTR[((-64))+rbp] - movaps xmm13,XMMWORD PTR[((-48))+rbp] - movaps xmm14,XMMWORD PTR[((-32))+rbp] - movaps xmm15,XMMWORD PTR[((-16))+rbp] - lea rsp,QWORD PTR[rbp] + movups XMMWORD[32+rsi],xmm4 + +$L$ctr32_done: + xorps xmm0,xmm0 + xor r11d,r11d + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-160))+rbp] + movaps XMMWORD[(-160)+rbp],xmm0 + movaps xmm7,XMMWORD[((-144))+rbp] + movaps XMMWORD[(-144)+rbp],xmm0 + movaps xmm8,XMMWORD[((-128))+rbp] + movaps XMMWORD[(-128)+rbp],xmm0 + movaps xmm9,XMMWORD[((-112))+rbp] + movaps XMMWORD[(-112)+rbp],xmm0 + movaps xmm10,XMMWORD[((-96))+rbp] + movaps XMMWORD[(-96)+rbp],xmm0 + movaps xmm11,XMMWORD[((-80))+rbp] + movaps XMMWORD[(-80)+rbp],xmm0 + movaps xmm12,XMMWORD[((-64))+rbp] + movaps XMMWORD[(-64)+rbp],xmm0 + movaps xmm13,XMMWORD[((-48))+rbp] + movaps XMMWORD[(-48)+rbp],xmm0 + movaps xmm14,XMMWORD[((-32))+rbp] + movaps XMMWORD[(-32)+rbp],xmm0 + movaps xmm15,XMMWORD[((-16))+rbp] + movaps XMMWORD[(-16)+rbp],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + movaps XMMWORD[112+rsp],xmm0 + lea rsp,[rbp] pop rbp -$L$ctr32_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$ctr32_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_ctr32_encrypt_blocks:: -aesni_ctr32_encrypt_blocks ENDP -PUBLIC aesni_xts_encrypt +$L$SEH_end_aesni_ctr32_encrypt_blocks: +global aesni_xts_encrypt ALIGN 16 -aesni_xts_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_xts_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_xts_encrypt:: +$L$SEH_begin_aesni_xts_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] - lea rax,QWORD PTR[rsp] + lea rax,[rsp] push rbp sub rsp,272 and rsp,-16 - movaps XMMWORD PTR[(-168)+rax],xmm6 - movaps XMMWORD PTR[(-152)+rax],xmm7 - movaps XMMWORD PTR[(-136)+rax],xmm8 - movaps XMMWORD PTR[(-120)+rax],xmm9 - movaps XMMWORD PTR[(-104)+rax],xmm10 - movaps XMMWORD PTR[(-88)+rax],xmm11 - movaps XMMWORD PTR[(-72)+rax],xmm12 - movaps XMMWORD PTR[(-56)+rax],xmm13 - movaps XMMWORD PTR[(-40)+rax],xmm14 - movaps XMMWORD PTR[(-24)+rax],xmm15 -$L$xts_enc_body:: - lea rbp,QWORD PTR[((-8))+rax] - movups xmm2,XMMWORD PTR[r9] - mov eax,DWORD PTR[240+r8] - mov r10d,DWORD PTR[240+rcx] - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[16+r8] - lea r8,QWORD PTR[32+r8] + movaps XMMWORD[(-168)+rax],xmm6 + movaps XMMWORD[(-152)+rax],xmm7 + movaps XMMWORD[(-136)+rax],xmm8 + movaps XMMWORD[(-120)+rax],xmm9 + movaps XMMWORD[(-104)+rax],xmm10 + movaps XMMWORD[(-88)+rax],xmm11 + movaps XMMWORD[(-72)+rax],xmm12 + movaps XMMWORD[(-56)+rax],xmm13 + movaps XMMWORD[(-40)+rax],xmm14 + movaps XMMWORD[(-24)+rax],xmm15 +$L$xts_enc_body: + lea rbp,[((-8))+rax] + movups xmm2,XMMWORD[r9] + mov eax,DWORD[240+r8] + mov r10d,DWORD[240+rcx] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] xorps xmm2,xmm0 -$L$oop_enc1_8:: +$L$oop_enc1_8: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[r8] - lea r8,QWORD PTR[16+r8] - jnz $L$oop_enc1_8 + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_8 DB 102,15,56,221,209 - movups xmm0,XMMWORD PTR[rcx] + movups xmm0,XMMWORD[rcx] mov r11,rcx mov eax,r10d shl r10d,4 mov r9,rdx and rdx,-16 - movups xmm1,XMMWORD PTR[16+r10*1+rcx] + movups xmm1,XMMWORD[16+r10*1+rcx] - movdqa xmm8,XMMWORD PTR[$L$xts_magic] + movdqa xmm8,XMMWORD[$L$xts_magic] movdqa xmm15,xmm2 - pshufd xmm9,xmm2,05fh + pshufd xmm9,xmm2,0x5f pxor xmm1,xmm0 movdqa xmm14,xmm9 paddd xmm9,xmm9 @@ -1698,76 +1789,76 @@ DB 102,15,56,221,209 pand xmm9,xmm8 pxor xmm14,xmm0 pxor xmm15,xmm9 - movaps XMMWORD PTR[96+rsp],xmm1 + movaps XMMWORD[96+rsp],xmm1 sub rdx,16*6 - jc $L$xts_enc_short + jc NEAR $L$xts_enc_short mov eax,16+96 - lea rcx,QWORD PTR[32+r10*1+r11] + lea rcx,[32+r10*1+r11] sub rax,r10 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] mov r10,rax - lea r8,QWORD PTR[$L$xts_magic] - jmp $L$xts_enc_grandloop + lea r8,[$L$xts_magic] + jmp NEAR $L$xts_enc_grandloop ALIGN 32 -$L$xts_enc_grandloop:: - movdqu xmm2,XMMWORD PTR[rdi] +$L$xts_enc_grandloop: + movdqu xmm2,XMMWORD[rdi] movdqa xmm8,xmm0 - movdqu xmm3,XMMWORD PTR[16+rdi] + movdqu xmm3,XMMWORD[16+rdi] pxor xmm2,xmm10 - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm4,XMMWORD[32+rdi] pxor xmm3,xmm11 DB 102,15,56,220,209 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] pxor xmm4,xmm12 DB 102,15,56,220,217 - movdqu xmm6,XMMWORD PTR[64+rdi] + movdqu xmm6,XMMWORD[64+rdi] pxor xmm5,xmm13 DB 102,15,56,220,225 - movdqu xmm7,XMMWORD PTR[80+rdi] + movdqu xmm7,XMMWORD[80+rdi] pxor xmm8,xmm15 - movdqa xmm9,XMMWORD PTR[96+rsp] + movdqa xmm9,XMMWORD[96+rsp] pxor xmm6,xmm14 DB 102,15,56,220,233 - movups xmm0,XMMWORD PTR[32+r11] - lea rdi,QWORD PTR[96+rdi] + movups xmm0,XMMWORD[32+r11] + lea rdi,[96+rdi] pxor xmm7,xmm8 pxor xmm10,xmm9 DB 102,15,56,220,241 pxor xmm11,xmm9 - movdqa XMMWORD PTR[rsp],xmm10 + movdqa XMMWORD[rsp],xmm10 DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[48+r11] + movups xmm1,XMMWORD[48+r11] pxor xmm12,xmm9 DB 102,15,56,220,208 pxor xmm13,xmm9 - movdqa XMMWORD PTR[16+rsp],xmm11 + movdqa XMMWORD[16+rsp],xmm11 DB 102,15,56,220,216 pxor xmm14,xmm9 - movdqa XMMWORD PTR[32+rsp],xmm12 + movdqa XMMWORD[32+rsp],xmm12 DB 102,15,56,220,224 DB 102,15,56,220,232 pxor xmm8,xmm9 - movdqa XMMWORD PTR[64+rsp],xmm14 + movdqa XMMWORD[64+rsp],xmm14 DB 102,15,56,220,240 DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR[64+r11] - movdqa XMMWORD PTR[80+rsp],xmm8 - pshufd xmm9,xmm15,05fh - jmp $L$xts_enc_loop6 + movups xmm0,XMMWORD[64+r11] + movdqa XMMWORD[80+rsp],xmm8 + pshufd xmm9,xmm15,0x5f + jmp NEAR $L$xts_enc_loop6 ALIGN 32 -$L$xts_enc_loop6:: +$L$xts_enc_loop6: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[((-64))+rax*1+rcx] + movups xmm1,XMMWORD[((-64))+rax*1+rcx] add rax,32 DB 102,15,56,220,208 @@ -1776,10 +1867,10 @@ DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR[((-80))+rax*1+rcx] - jnz $L$xts_enc_loop6 + movups xmm0,XMMWORD[((-80))+rax*1+rcx] + jnz NEAR $L$xts_enc_loop6 - movdqa xmm8,XMMWORD PTR[r8] + movdqa xmm8,XMMWORD[r8] movdqa xmm14,xmm9 paddd xmm9,xmm9 DB 102,15,56,220,209 @@ -1787,14 +1878,14 @@ DB 102,15,56,220,209 psrad xmm14,31 DB 102,15,56,220,217 pand xmm14,xmm8 - movups xmm10,XMMWORD PTR[r11] + movups xmm10,XMMWORD[r11] DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 pxor xmm15,xmm14 movaps xmm11,xmm10 DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[((-64))+rcx] + movups xmm1,XMMWORD[((-64))+rcx] movdqa xmm14,xmm9 DB 102,15,56,220,208 @@ -1811,7 +1902,7 @@ DB 102,15,56,220,240 pxor xmm15,xmm14 movdqa xmm14,xmm9 DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR[((-48))+rcx] + movups xmm0,XMMWORD[((-48))+rcx] paddd xmm9,xmm9 DB 102,15,56,220,209 @@ -1822,13 +1913,13 @@ DB 102,15,56,220,217 pand xmm14,xmm8 DB 102,15,56,220,225 DB 102,15,56,220,233 - movdqa XMMWORD PTR[48+rsp],xmm13 + movdqa XMMWORD[48+rsp],xmm13 pxor xmm15,xmm14 DB 102,15,56,220,241 movaps xmm13,xmm12 movdqa xmm14,xmm9 DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[((-32))+rcx] + movups xmm1,XMMWORD[((-32))+rcx] paddd xmm9,xmm9 DB 102,15,56,220,208 @@ -1855,10 +1946,10 @@ DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 pxor xmm15,xmm0 - movups xmm0,XMMWORD PTR[r11] + movups xmm0,XMMWORD[r11] DB 102,15,56,220,241 DB 102,15,56,220,249 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] pxor xmm14,xmm15 DB 102,15,56,221,84,36,0 @@ -1873,50 +1964,52 @@ DB 102,15,56,221,116,36,64 DB 102,15,56,221,124,36,80 pxor xmm15,xmm9 - lea rsi,QWORD PTR[96+rsi] - movups XMMWORD PTR[(-96)+rsi],xmm2 - movups XMMWORD PTR[(-80)+rsi],xmm3 - movups XMMWORD PTR[(-64)+rsi],xmm4 - movups XMMWORD PTR[(-48)+rsi],xmm5 - movups XMMWORD PTR[(-32)+rsi],xmm6 - movups XMMWORD PTR[(-16)+rsi],xmm7 + lea rsi,[96+rsi] + movups XMMWORD[(-96)+rsi],xmm2 + movups XMMWORD[(-80)+rsi],xmm3 + movups XMMWORD[(-64)+rsi],xmm4 + movups XMMWORD[(-48)+rsi],xmm5 + movups XMMWORD[(-32)+rsi],xmm6 + movups XMMWORD[(-16)+rsi],xmm7 sub rdx,16*6 - jnc $L$xts_enc_grandloop + jnc NEAR $L$xts_enc_grandloop mov eax,16+96 sub eax,r10d mov rcx,r11 shr eax,4 -$L$xts_enc_short:: +$L$xts_enc_short: + mov r10d,eax pxor xmm10,xmm0 add rdx,16*6 - jz $L$xts_enc_done + jz NEAR $L$xts_enc_done pxor xmm11,xmm0 - cmp rdx,020h - jb $L$xts_enc_one + cmp rdx,0x20 + jb NEAR $L$xts_enc_one pxor xmm12,xmm0 - je $L$xts_enc_two + je NEAR $L$xts_enc_two pxor xmm13,xmm0 - cmp rdx,040h - jb $L$xts_enc_three + cmp rdx,0x40 + jb NEAR $L$xts_enc_three pxor xmm14,xmm0 - je $L$xts_enc_four + je NEAR $L$xts_enc_four - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] pxor xmm2,xmm10 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] pxor xmm3,xmm11 - movdqu xmm6,XMMWORD PTR[64+rdi] - lea rdi,QWORD PTR[80+rdi] + movdqu xmm6,XMMWORD[64+rdi] + lea rdi,[80+rdi] pxor xmm4,xmm12 pxor xmm5,xmm13 pxor xmm6,xmm14 + pxor xmm7,xmm7 call _aesni_encrypt6 @@ -1924,43 +2017,43 @@ $L$xts_enc_short:: movdqa xmm10,xmm15 xorps xmm3,xmm11 xorps xmm4,xmm12 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 xorps xmm5,xmm13 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 xorps xmm6,xmm14 - movdqu XMMWORD PTR[32+rsi],xmm4 - movdqu XMMWORD PTR[48+rsi],xmm5 - movdqu XMMWORD PTR[64+rsi],xmm6 - lea rsi,QWORD PTR[80+rsi] - jmp $L$xts_enc_done + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_one:: - movups xmm2,XMMWORD PTR[rdi] - lea rdi,QWORD PTR[16+rdi] +$L$xts_enc_one: + movups xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] xorps xmm2,xmm10 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_enc1_9:: +$L$oop_enc1_9: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_9 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_9 DB 102,15,56,221,209 xorps xmm2,xmm10 movdqa xmm10,xmm11 - movups XMMWORD PTR[rsi],xmm2 - lea rsi,QWORD PTR[16+rsi] - jmp $L$xts_enc_done + movups XMMWORD[rsi],xmm2 + lea rsi,[16+rsi] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_two:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - lea rdi,QWORD PTR[32+rdi] +$L$xts_enc_two: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + lea rdi,[32+rdi] xorps xmm2,xmm10 xorps xmm3,xmm11 @@ -1969,17 +2062,17 @@ $L$xts_enc_two:: xorps xmm2,xmm10 movdqa xmm10,xmm12 xorps xmm3,xmm11 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - lea rsi,QWORD PTR[32+rsi] - jmp $L$xts_enc_done + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + lea rsi,[32+rsi] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_three:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - movups xmm4,XMMWORD PTR[32+rdi] - lea rdi,QWORD PTR[48+rdi] +$L$xts_enc_three: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + lea rdi,[48+rdi] xorps xmm2,xmm10 xorps xmm3,xmm11 xorps xmm4,xmm12 @@ -1990,20 +2083,20 @@ $L$xts_enc_three:: movdqa xmm10,xmm13 xorps xmm3,xmm11 xorps xmm4,xmm12 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - lea rsi,QWORD PTR[48+rsi] - jmp $L$xts_enc_done + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + lea rsi,[48+rsi] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_four:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - movups xmm4,XMMWORD PTR[32+rdi] +$L$xts_enc_four: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] xorps xmm2,xmm10 - movups xmm5,XMMWORD PTR[48+rdi] - lea rdi,QWORD PTR[64+rdi] + movups xmm5,XMMWORD[48+rdi] + lea rdi,[64+rdi] xorps xmm3,xmm11 xorps xmm4,xmm12 xorps xmm5,xmm13 @@ -2014,114 +2107,136 @@ $L$xts_enc_four:: movdqa xmm10,xmm14 pxor xmm3,xmm11 pxor xmm4,xmm12 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm5,xmm13 - movdqu XMMWORD PTR[16+rsi],xmm3 - movdqu XMMWORD PTR[32+rsi],xmm4 - movdqu XMMWORD PTR[48+rsi],xmm5 - lea rsi,QWORD PTR[64+rsi] - jmp $L$xts_enc_done + movdqu XMMWORD[16+rsi],xmm3 + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + lea rsi,[64+rsi] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_done:: +$L$xts_enc_done: and r9,15 - jz $L$xts_enc_ret + jz NEAR $L$xts_enc_ret mov rdx,r9 -$L$xts_enc_steal:: - movzx eax,BYTE PTR[rdi] - movzx ecx,BYTE PTR[((-16))+rsi] - lea rdi,QWORD PTR[1+rdi] - mov BYTE PTR[((-16))+rsi],al - mov BYTE PTR[rsi],cl - lea rsi,QWORD PTR[1+rsi] +$L$xts_enc_steal: + movzx eax,BYTE[rdi] + movzx ecx,BYTE[((-16))+rsi] + lea rdi,[1+rdi] + mov BYTE[((-16))+rsi],al + mov BYTE[rsi],cl + lea rsi,[1+rsi] sub rdx,1 - jnz $L$xts_enc_steal + jnz NEAR $L$xts_enc_steal sub rsi,r9 mov rcx,r11 mov eax,r10d - movups xmm2,XMMWORD PTR[((-16))+rsi] + movups xmm2,XMMWORD[((-16))+rsi] xorps xmm2,xmm10 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_enc1_10:: +$L$oop_enc1_10: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_10 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_10 DB 102,15,56,221,209 xorps xmm2,xmm10 - movups XMMWORD PTR[(-16)+rsi],xmm2 - -$L$xts_enc_ret:: - movaps xmm6,XMMWORD PTR[((-160))+rbp] - movaps xmm7,XMMWORD PTR[((-144))+rbp] - movaps xmm8,XMMWORD PTR[((-128))+rbp] - movaps xmm9,XMMWORD PTR[((-112))+rbp] - movaps xmm10,XMMWORD PTR[((-96))+rbp] - movaps xmm11,XMMWORD PTR[((-80))+rbp] - movaps xmm12,XMMWORD PTR[((-64))+rbp] - movaps xmm13,XMMWORD PTR[((-48))+rbp] - movaps xmm14,XMMWORD PTR[((-32))+rbp] - movaps xmm15,XMMWORD PTR[((-16))+rbp] - lea rsp,QWORD PTR[rbp] + movups XMMWORD[(-16)+rsi],xmm2 + +$L$xts_enc_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-160))+rbp] + movaps XMMWORD[(-160)+rbp],xmm0 + movaps xmm7,XMMWORD[((-144))+rbp] + movaps XMMWORD[(-144)+rbp],xmm0 + movaps xmm8,XMMWORD[((-128))+rbp] + movaps XMMWORD[(-128)+rbp],xmm0 + movaps xmm9,XMMWORD[((-112))+rbp] + movaps XMMWORD[(-112)+rbp],xmm0 + movaps xmm10,XMMWORD[((-96))+rbp] + movaps XMMWORD[(-96)+rbp],xmm0 + movaps xmm11,XMMWORD[((-80))+rbp] + movaps XMMWORD[(-80)+rbp],xmm0 + movaps xmm12,XMMWORD[((-64))+rbp] + movaps XMMWORD[(-64)+rbp],xmm0 + movaps xmm13,XMMWORD[((-48))+rbp] + movaps XMMWORD[(-48)+rbp],xmm0 + movaps xmm14,XMMWORD[((-32))+rbp] + movaps XMMWORD[(-32)+rbp],xmm0 + movaps xmm15,XMMWORD[((-16))+rbp] + movaps XMMWORD[(-16)+rbp],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + lea rsp,[rbp] pop rbp -$L$xts_enc_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$xts_enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_xts_encrypt:: -aesni_xts_encrypt ENDP -PUBLIC aesni_xts_decrypt +$L$SEH_end_aesni_xts_encrypt: +global aesni_xts_decrypt ALIGN 16 -aesni_xts_decrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_xts_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_xts_decrypt:: +$L$SEH_begin_aesni_xts_decrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] - lea rax,QWORD PTR[rsp] + lea rax,[rsp] push rbp sub rsp,272 and rsp,-16 - movaps XMMWORD PTR[(-168)+rax],xmm6 - movaps XMMWORD PTR[(-152)+rax],xmm7 - movaps XMMWORD PTR[(-136)+rax],xmm8 - movaps XMMWORD PTR[(-120)+rax],xmm9 - movaps XMMWORD PTR[(-104)+rax],xmm10 - movaps XMMWORD PTR[(-88)+rax],xmm11 - movaps XMMWORD PTR[(-72)+rax],xmm12 - movaps XMMWORD PTR[(-56)+rax],xmm13 - movaps XMMWORD PTR[(-40)+rax],xmm14 - movaps XMMWORD PTR[(-24)+rax],xmm15 -$L$xts_dec_body:: - lea rbp,QWORD PTR[((-8))+rax] - movups xmm2,XMMWORD PTR[r9] - mov eax,DWORD PTR[240+r8] - mov r10d,DWORD PTR[240+rcx] - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[16+r8] - lea r8,QWORD PTR[32+r8] + movaps XMMWORD[(-168)+rax],xmm6 + movaps XMMWORD[(-152)+rax],xmm7 + movaps XMMWORD[(-136)+rax],xmm8 + movaps XMMWORD[(-120)+rax],xmm9 + movaps XMMWORD[(-104)+rax],xmm10 + movaps XMMWORD[(-88)+rax],xmm11 + movaps XMMWORD[(-72)+rax],xmm12 + movaps XMMWORD[(-56)+rax],xmm13 + movaps XMMWORD[(-40)+rax],xmm14 + movaps XMMWORD[(-24)+rax],xmm15 +$L$xts_dec_body: + lea rbp,[((-8))+rax] + movups xmm2,XMMWORD[r9] + mov eax,DWORD[240+r8] + mov r10d,DWORD[240+rcx] + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[16+r8] + lea r8,[32+r8] xorps xmm2,xmm0 -$L$oop_enc1_11:: +$L$oop_enc1_11: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[r8] - lea r8,QWORD PTR[16+r8] - jnz $L$oop_enc1_11 + movups xmm1,XMMWORD[r8] + lea r8,[16+r8] + jnz NEAR $L$oop_enc1_11 DB 102,15,56,221,209 xor eax,eax test rdx,15 @@ -2129,18 +2244,18 @@ DB 102,15,56,221,209 shl rax,4 sub rdx,rax - movups xmm0,XMMWORD PTR[rcx] + movups xmm0,XMMWORD[rcx] mov r11,rcx mov eax,r10d shl r10d,4 mov r9,rdx and rdx,-16 - movups xmm1,XMMWORD PTR[16+r10*1+rcx] + movups xmm1,XMMWORD[16+r10*1+rcx] - movdqa xmm8,XMMWORD PTR[$L$xts_magic] + movdqa xmm8,XMMWORD[$L$xts_magic] movdqa xmm15,xmm2 - pshufd xmm9,xmm2,05fh + pshufd xmm9,xmm2,0x5f pxor xmm1,xmm0 movdqa xmm14,xmm9 paddd xmm9,xmm9 @@ -2180,76 +2295,76 @@ DB 102,15,56,221,209 pand xmm9,xmm8 pxor xmm14,xmm0 pxor xmm15,xmm9 - movaps XMMWORD PTR[96+rsp],xmm1 + movaps XMMWORD[96+rsp],xmm1 sub rdx,16*6 - jc $L$xts_dec_short + jc NEAR $L$xts_dec_short mov eax,16+96 - lea rcx,QWORD PTR[32+r10*1+r11] + lea rcx,[32+r10*1+r11] sub rax,r10 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] mov r10,rax - lea r8,QWORD PTR[$L$xts_magic] - jmp $L$xts_dec_grandloop + lea r8,[$L$xts_magic] + jmp NEAR $L$xts_dec_grandloop ALIGN 32 -$L$xts_dec_grandloop:: - movdqu xmm2,XMMWORD PTR[rdi] +$L$xts_dec_grandloop: + movdqu xmm2,XMMWORD[rdi] movdqa xmm8,xmm0 - movdqu xmm3,XMMWORD PTR[16+rdi] + movdqu xmm3,XMMWORD[16+rdi] pxor xmm2,xmm10 - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm4,XMMWORD[32+rdi] pxor xmm3,xmm11 DB 102,15,56,222,209 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] pxor xmm4,xmm12 DB 102,15,56,222,217 - movdqu xmm6,XMMWORD PTR[64+rdi] + movdqu xmm6,XMMWORD[64+rdi] pxor xmm5,xmm13 DB 102,15,56,222,225 - movdqu xmm7,XMMWORD PTR[80+rdi] + movdqu xmm7,XMMWORD[80+rdi] pxor xmm8,xmm15 - movdqa xmm9,XMMWORD PTR[96+rsp] + movdqa xmm9,XMMWORD[96+rsp] pxor xmm6,xmm14 DB 102,15,56,222,233 - movups xmm0,XMMWORD PTR[32+r11] - lea rdi,QWORD PTR[96+rdi] + movups xmm0,XMMWORD[32+r11] + lea rdi,[96+rdi] pxor xmm7,xmm8 pxor xmm10,xmm9 DB 102,15,56,222,241 pxor xmm11,xmm9 - movdqa XMMWORD PTR[rsp],xmm10 + movdqa XMMWORD[rsp],xmm10 DB 102,15,56,222,249 - movups xmm1,XMMWORD PTR[48+r11] + movups xmm1,XMMWORD[48+r11] pxor xmm12,xmm9 DB 102,15,56,222,208 pxor xmm13,xmm9 - movdqa XMMWORD PTR[16+rsp],xmm11 + movdqa XMMWORD[16+rsp],xmm11 DB 102,15,56,222,216 pxor xmm14,xmm9 - movdqa XMMWORD PTR[32+rsp],xmm12 + movdqa XMMWORD[32+rsp],xmm12 DB 102,15,56,222,224 DB 102,15,56,222,232 pxor xmm8,xmm9 - movdqa XMMWORD PTR[64+rsp],xmm14 + movdqa XMMWORD[64+rsp],xmm14 DB 102,15,56,222,240 DB 102,15,56,222,248 - movups xmm0,XMMWORD PTR[64+r11] - movdqa XMMWORD PTR[80+rsp],xmm8 - pshufd xmm9,xmm15,05fh - jmp $L$xts_dec_loop6 + movups xmm0,XMMWORD[64+r11] + movdqa XMMWORD[80+rsp],xmm8 + pshufd xmm9,xmm15,0x5f + jmp NEAR $L$xts_dec_loop6 ALIGN 32 -$L$xts_dec_loop6:: +$L$xts_dec_loop6: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 - movups xmm1,XMMWORD PTR[((-64))+rax*1+rcx] + movups xmm1,XMMWORD[((-64))+rax*1+rcx] add rax,32 DB 102,15,56,222,208 @@ -2258,10 +2373,10 @@ DB 102,15,56,222,224 DB 102,15,56,222,232 DB 102,15,56,222,240 DB 102,15,56,222,248 - movups xmm0,XMMWORD PTR[((-80))+rax*1+rcx] - jnz $L$xts_dec_loop6 + movups xmm0,XMMWORD[((-80))+rax*1+rcx] + jnz NEAR $L$xts_dec_loop6 - movdqa xmm8,XMMWORD PTR[r8] + movdqa xmm8,XMMWORD[r8] movdqa xmm14,xmm9 paddd xmm9,xmm9 DB 102,15,56,222,209 @@ -2269,14 +2384,14 @@ DB 102,15,56,222,209 psrad xmm14,31 DB 102,15,56,222,217 pand xmm14,xmm8 - movups xmm10,XMMWORD PTR[r11] + movups xmm10,XMMWORD[r11] DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 pxor xmm15,xmm14 movaps xmm11,xmm10 DB 102,15,56,222,249 - movups xmm1,XMMWORD PTR[((-64))+rcx] + movups xmm1,XMMWORD[((-64))+rcx] movdqa xmm14,xmm9 DB 102,15,56,222,208 @@ -2293,7 +2408,7 @@ DB 102,15,56,222,240 pxor xmm15,xmm14 movdqa xmm14,xmm9 DB 102,15,56,222,248 - movups xmm0,XMMWORD PTR[((-48))+rcx] + movups xmm0,XMMWORD[((-48))+rcx] paddd xmm9,xmm9 DB 102,15,56,222,209 @@ -2304,13 +2419,13 @@ DB 102,15,56,222,217 pand xmm14,xmm8 DB 102,15,56,222,225 DB 102,15,56,222,233 - movdqa XMMWORD PTR[48+rsp],xmm13 + movdqa XMMWORD[48+rsp],xmm13 pxor xmm15,xmm14 DB 102,15,56,222,241 movaps xmm13,xmm12 movdqa xmm14,xmm9 DB 102,15,56,222,249 - movups xmm1,XMMWORD PTR[((-32))+rcx] + movups xmm1,XMMWORD[((-32))+rcx] paddd xmm9,xmm9 DB 102,15,56,222,208 @@ -2337,10 +2452,10 @@ DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 pxor xmm15,xmm0 - movups xmm0,XMMWORD PTR[r11] + movups xmm0,XMMWORD[r11] DB 102,15,56,222,241 DB 102,15,56,222,249 - movups xmm1,XMMWORD PTR[16+r11] + movups xmm1,XMMWORD[16+r11] pxor xmm14,xmm15 DB 102,15,56,223,84,36,0 @@ -2355,47 +2470,48 @@ DB 102,15,56,223,116,36,64 DB 102,15,56,223,124,36,80 pxor xmm15,xmm9 - lea rsi,QWORD PTR[96+rsi] - movups XMMWORD PTR[(-96)+rsi],xmm2 - movups XMMWORD PTR[(-80)+rsi],xmm3 - movups XMMWORD PTR[(-64)+rsi],xmm4 - movups XMMWORD PTR[(-48)+rsi],xmm5 - movups XMMWORD PTR[(-32)+rsi],xmm6 - movups XMMWORD PTR[(-16)+rsi],xmm7 + lea rsi,[96+rsi] + movups XMMWORD[(-96)+rsi],xmm2 + movups XMMWORD[(-80)+rsi],xmm3 + movups XMMWORD[(-64)+rsi],xmm4 + movups XMMWORD[(-48)+rsi],xmm5 + movups XMMWORD[(-32)+rsi],xmm6 + movups XMMWORD[(-16)+rsi],xmm7 sub rdx,16*6 - jnc $L$xts_dec_grandloop + jnc NEAR $L$xts_dec_grandloop mov eax,16+96 sub eax,r10d mov rcx,r11 shr eax,4 -$L$xts_dec_short:: +$L$xts_dec_short: + mov r10d,eax pxor xmm10,xmm0 pxor xmm11,xmm0 add rdx,16*6 - jz $L$xts_dec_done + jz NEAR $L$xts_dec_done pxor xmm12,xmm0 - cmp rdx,020h - jb $L$xts_dec_one + cmp rdx,0x20 + jb NEAR $L$xts_dec_one pxor xmm13,xmm0 - je $L$xts_dec_two + je NEAR $L$xts_dec_two pxor xmm14,xmm0 - cmp rdx,040h - jb $L$xts_dec_three - je $L$xts_dec_four + cmp rdx,0x40 + jb NEAR $L$xts_dec_three + je NEAR $L$xts_dec_four - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] + movdqu xmm4,XMMWORD[32+rdi] pxor xmm2,xmm10 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] pxor xmm3,xmm11 - movdqu xmm6,XMMWORD PTR[64+rdi] - lea rdi,QWORD PTR[80+rdi] + movdqu xmm6,XMMWORD[64+rdi] + lea rdi,[80+rdi] pxor xmm4,xmm12 pxor xmm5,xmm13 pxor xmm6,xmm14 @@ -2405,54 +2521,54 @@ $L$xts_dec_short:: xorps xmm2,xmm10 xorps xmm3,xmm11 xorps xmm4,xmm12 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 xorps xmm5,xmm13 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 xorps xmm6,xmm14 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 pxor xmm14,xmm14 - movdqu XMMWORD PTR[48+rsi],xmm5 + movdqu XMMWORD[48+rsi],xmm5 pcmpgtd xmm14,xmm15 - movdqu XMMWORD PTR[64+rsi],xmm6 - lea rsi,QWORD PTR[80+rsi] - pshufd xmm11,xmm14,013h + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + pshufd xmm11,xmm14,0x13 and r9,15 - jz $L$xts_dec_ret + jz NEAR $L$xts_dec_ret movdqa xmm10,xmm15 paddq xmm15,xmm15 pand xmm11,xmm8 pxor xmm11,xmm15 - jmp $L$xts_dec_done2 + jmp NEAR $L$xts_dec_done2 ALIGN 16 -$L$xts_dec_one:: - movups xmm2,XMMWORD PTR[rdi] - lea rdi,QWORD PTR[16+rdi] +$L$xts_dec_one: + movups xmm2,XMMWORD[rdi] + lea rdi,[16+rdi] xorps xmm2,xmm10 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_dec1_12:: +$L$oop_dec1_12: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_dec1_12 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_12 DB 102,15,56,223,209 xorps xmm2,xmm10 movdqa xmm10,xmm11 - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 movdqa xmm11,xmm12 - lea rsi,QWORD PTR[16+rsi] - jmp $L$xts_dec_done + lea rsi,[16+rsi] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_two:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - lea rdi,QWORD PTR[32+rdi] +$L$xts_dec_two: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + lea rdi,[32+rdi] xorps xmm2,xmm10 xorps xmm3,xmm11 @@ -2462,17 +2578,17 @@ $L$xts_dec_two:: movdqa xmm10,xmm12 xorps xmm3,xmm11 movdqa xmm11,xmm13 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - lea rsi,QWORD PTR[32+rsi] - jmp $L$xts_dec_done + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + lea rsi,[32+rsi] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_three:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - movups xmm4,XMMWORD PTR[32+rdi] - lea rdi,QWORD PTR[48+rdi] +$L$xts_dec_three: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] + lea rdi,[48+rdi] xorps xmm2,xmm10 xorps xmm3,xmm11 xorps xmm4,xmm12 @@ -2484,20 +2600,20 @@ $L$xts_dec_three:: xorps xmm3,xmm11 movdqa xmm11,xmm14 xorps xmm4,xmm12 - movups XMMWORD PTR[rsi],xmm2 - movups XMMWORD PTR[16+rsi],xmm3 - movups XMMWORD PTR[32+rsi],xmm4 - lea rsi,QWORD PTR[48+rsi] - jmp $L$xts_dec_done + movups XMMWORD[rsi],xmm2 + movups XMMWORD[16+rsi],xmm3 + movups XMMWORD[32+rsi],xmm4 + lea rsi,[48+rsi] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_four:: - movups xmm2,XMMWORD PTR[rdi] - movups xmm3,XMMWORD PTR[16+rdi] - movups xmm4,XMMWORD PTR[32+rdi] +$L$xts_dec_four: + movups xmm2,XMMWORD[rdi] + movups xmm3,XMMWORD[16+rdi] + movups xmm4,XMMWORD[32+rdi] xorps xmm2,xmm10 - movups xmm5,XMMWORD PTR[48+rdi] - lea rdi,QWORD PTR[64+rdi] + movups xmm5,XMMWORD[48+rdi] + lea rdi,[64+rdi] xorps xmm3,xmm11 xorps xmm4,xmm12 xorps xmm5,xmm13 @@ -2509,220 +2625,275 @@ $L$xts_dec_four:: pxor xmm3,xmm11 movdqa xmm11,xmm15 pxor xmm4,xmm12 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm5,xmm13 - movdqu XMMWORD PTR[16+rsi],xmm3 - movdqu XMMWORD PTR[32+rsi],xmm4 - movdqu XMMWORD PTR[48+rsi],xmm5 - lea rsi,QWORD PTR[64+rsi] - jmp $L$xts_dec_done + movdqu XMMWORD[16+rsi],xmm3 + movdqu XMMWORD[32+rsi],xmm4 + movdqu XMMWORD[48+rsi],xmm5 + lea rsi,[64+rsi] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_done:: +$L$xts_dec_done: and r9,15 - jz $L$xts_dec_ret -$L$xts_dec_done2:: + jz NEAR $L$xts_dec_ret +$L$xts_dec_done2: mov rdx,r9 mov rcx,r11 mov eax,r10d - movups xmm2,XMMWORD PTR[rdi] + movups xmm2,XMMWORD[rdi] xorps xmm2,xmm11 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_dec1_13:: +$L$oop_dec1_13: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_dec1_13 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_13 DB 102,15,56,223,209 xorps xmm2,xmm11 - movups XMMWORD PTR[rsi],xmm2 - -$L$xts_dec_steal:: - movzx eax,BYTE PTR[16+rdi] - movzx ecx,BYTE PTR[rsi] - lea rdi,QWORD PTR[1+rdi] - mov BYTE PTR[rsi],al - mov BYTE PTR[16+rsi],cl - lea rsi,QWORD PTR[1+rsi] + movups XMMWORD[rsi],xmm2 + +$L$xts_dec_steal: + movzx eax,BYTE[16+rdi] + movzx ecx,BYTE[rsi] + lea rdi,[1+rdi] + mov BYTE[rsi],al + mov BYTE[16+rsi],cl + lea rsi,[1+rsi] sub rdx,1 - jnz $L$xts_dec_steal + jnz NEAR $L$xts_dec_steal sub rsi,r9 mov rcx,r11 mov eax,r10d - movups xmm2,XMMWORD PTR[rsi] + movups xmm2,XMMWORD[rsi] xorps xmm2,xmm10 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_dec1_14:: +$L$oop_dec1_14: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_dec1_14 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_14 DB 102,15,56,223,209 xorps xmm2,xmm10 - movups XMMWORD PTR[rsi],xmm2 - -$L$xts_dec_ret:: - movaps xmm6,XMMWORD PTR[((-160))+rbp] - movaps xmm7,XMMWORD PTR[((-144))+rbp] - movaps xmm8,XMMWORD PTR[((-128))+rbp] - movaps xmm9,XMMWORD PTR[((-112))+rbp] - movaps xmm10,XMMWORD PTR[((-96))+rbp] - movaps xmm11,XMMWORD PTR[((-80))+rbp] - movaps xmm12,XMMWORD PTR[((-64))+rbp] - movaps xmm13,XMMWORD PTR[((-48))+rbp] - movaps xmm14,XMMWORD PTR[((-32))+rbp] - movaps xmm15,XMMWORD PTR[((-16))+rbp] - lea rsp,QWORD PTR[rbp] + movups XMMWORD[rsi],xmm2 + +$L$xts_dec_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + movaps xmm6,XMMWORD[((-160))+rbp] + movaps XMMWORD[(-160)+rbp],xmm0 + movaps xmm7,XMMWORD[((-144))+rbp] + movaps XMMWORD[(-144)+rbp],xmm0 + movaps xmm8,XMMWORD[((-128))+rbp] + movaps XMMWORD[(-128)+rbp],xmm0 + movaps xmm9,XMMWORD[((-112))+rbp] + movaps XMMWORD[(-112)+rbp],xmm0 + movaps xmm10,XMMWORD[((-96))+rbp] + movaps XMMWORD[(-96)+rbp],xmm0 + movaps xmm11,XMMWORD[((-80))+rbp] + movaps XMMWORD[(-80)+rbp],xmm0 + movaps xmm12,XMMWORD[((-64))+rbp] + movaps XMMWORD[(-64)+rbp],xmm0 + movaps xmm13,XMMWORD[((-48))+rbp] + movaps XMMWORD[(-48)+rbp],xmm0 + movaps xmm14,XMMWORD[((-32))+rbp] + movaps XMMWORD[(-32)+rbp],xmm0 + movaps xmm15,XMMWORD[((-16))+rbp] + movaps XMMWORD[(-16)+rbp],xmm0 + movaps XMMWORD[rsp],xmm0 + movaps XMMWORD[16+rsp],xmm0 + movaps XMMWORD[32+rsp],xmm0 + movaps XMMWORD[48+rsp],xmm0 + movaps XMMWORD[64+rsp],xmm0 + movaps XMMWORD[80+rsp],xmm0 + movaps XMMWORD[96+rsp],xmm0 + lea rsp,[rbp] pop rbp -$L$xts_dec_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$xts_dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_xts_decrypt:: -aesni_xts_decrypt ENDP -PUBLIC aesni_cbc_encrypt +$L$SEH_end_aesni_xts_decrypt: +global aesni_cbc_encrypt ALIGN 16 -aesni_cbc_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +aesni_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_aesni_cbc_encrypt:: +$L$SEH_begin_aesni_cbc_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] test rdx,rdx - jz $L$cbc_ret + jz NEAR $L$cbc_ret - mov r10d,DWORD PTR[240+rcx] + mov r10d,DWORD[240+rcx] mov r11,rcx test r9d,r9d - jz $L$cbc_decrypt + jz NEAR $L$cbc_decrypt - movups xmm2,XMMWORD PTR[r8] + movups xmm2,XMMWORD[r8] mov eax,r10d cmp rdx,16 - jb $L$cbc_enc_tail + jb NEAR $L$cbc_enc_tail sub rdx,16 - jmp $L$cbc_enc_loop + jmp NEAR $L$cbc_enc_loop ALIGN 16 -$L$cbc_enc_loop:: - movups xmm3,XMMWORD PTR[rdi] - lea rdi,QWORD PTR[16+rdi] +$L$cbc_enc_loop: + movups xmm3,XMMWORD[rdi] + lea rdi,[16+rdi] - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] xorps xmm3,xmm0 - lea rcx,QWORD PTR[32+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm3 -$L$oop_enc1_15:: +$L$oop_enc1_15: DB 102,15,56,220,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_enc1_15 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_enc1_15 DB 102,15,56,221,209 mov eax,r10d mov rcx,r11 - movups XMMWORD PTR[rsi],xmm2 - lea rsi,QWORD PTR[16+rsi] + movups XMMWORD[rsi],xmm2 + lea rsi,[16+rsi] sub rdx,16 - jnc $L$cbc_enc_loop + jnc NEAR $L$cbc_enc_loop add rdx,16 - jnz $L$cbc_enc_tail - movups XMMWORD PTR[r8],xmm2 - jmp $L$cbc_ret - -$L$cbc_enc_tail:: + jnz NEAR $L$cbc_enc_tail + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD[r8],xmm2 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + jmp NEAR $L$cbc_ret + +$L$cbc_enc_tail: mov rcx,rdx xchg rsi,rdi - DD 09066A4F3h + DD 0x9066A4F3 mov ecx,16 sub rcx,rdx xor eax,eax - DD 09066AAF3h - lea rdi,QWORD PTR[((-16))+rdi] + DD 0x9066AAF3 + lea rdi,[((-16))+rdi] mov eax,r10d mov rsi,rdi mov rcx,r11 xor rdx,rdx - jmp $L$cbc_enc_loop + jmp NEAR $L$cbc_enc_loop ALIGN 16 -$L$cbc_decrypt:: - lea rax,QWORD PTR[rsp] +$L$cbc_decrypt: + cmp rdx,16 + jne NEAR $L$cbc_decrypt_bulk + + + + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[r8] + movdqa xmm4,xmm2 + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] + xorps xmm2,xmm0 +$L$oop_dec1_16: +DB 102,15,56,222,209 + dec r10d + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_16 +DB 102,15,56,223,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movdqu XMMWORD[r8],xmm4 + xorps xmm2,xmm3 + pxor xmm3,xmm3 + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$cbc_ret +ALIGN 16 +$L$cbc_decrypt_bulk: + lea rax,[rsp] push rbp sub rsp,176 and rsp,-16 - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$cbc_decrypt_body:: - lea rbp,QWORD PTR[((-8))+rax] - movups xmm10,XMMWORD PTR[r8] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$cbc_decrypt_body: + lea rbp,[((-8))+rax] + movups xmm10,XMMWORD[r8] mov eax,r10d - cmp rdx,050h - jbe $L$cbc_dec_tail + cmp rdx,0x50 + jbe NEAR $L$cbc_dec_tail - movups xmm0,XMMWORD PTR[rcx] - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] + movups xmm0,XMMWORD[rcx] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] movdqa xmm11,xmm2 - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm4,XMMWORD[32+rdi] movdqa xmm12,xmm3 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] movdqa xmm13,xmm4 - movdqu xmm6,XMMWORD PTR[64+rdi] + movdqu xmm6,XMMWORD[64+rdi] movdqa xmm14,xmm5 - movdqu xmm7,XMMWORD PTR[80+rdi] + movdqu xmm7,XMMWORD[80+rdi] movdqa xmm15,xmm6 - mov r9d,DWORD PTR[((OPENSSL_ia32cap_P+4))] - cmp rdx,070h - jbe $L$cbc_dec_six_or_seven + mov r9d,DWORD[((OPENSSL_ia32cap_P+4))] + cmp rdx,0x70 + jbe NEAR $L$cbc_dec_six_or_seven and r9d,71303168 - sub rdx,050h + sub rdx,0x50 cmp r9d,4194304 - je $L$cbc_dec_loop6_enter - sub rdx,020h - lea rcx,QWORD PTR[112+rcx] - jmp $L$cbc_dec_loop8_enter -ALIGN 16 -$L$cbc_dec_loop8:: - movups XMMWORD PTR[rsi],xmm9 - lea rsi,QWORD PTR[16+rsi] -$L$cbc_dec_loop8_enter:: - movdqu xmm8,XMMWORD PTR[96+rdi] + je NEAR $L$cbc_dec_loop6_enter + sub rdx,0x20 + lea rcx,[112+rcx] + jmp NEAR $L$cbc_dec_loop8_enter +ALIGN 16 +$L$cbc_dec_loop8: + movups XMMWORD[rsi],xmm9 + lea rsi,[16+rsi] +$L$cbc_dec_loop8_enter: + movdqu xmm8,XMMWORD[96+rdi] pxor xmm2,xmm0 - movdqu xmm9,XMMWORD PTR[112+rdi] + movdqu xmm9,XMMWORD[112+rdi] pxor xmm3,xmm0 - movups xmm1,XMMWORD PTR[((16-112))+rcx] + movups xmm1,XMMWORD[((16-112))+rcx] pxor xmm4,xmm0 xor r11,r11 - cmp rdx,070h + cmp rdx,0x70 pxor xmm5,xmm0 pxor xmm6,xmm0 pxor xmm7,xmm0 @@ -2730,7 +2901,7 @@ $L$cbc_dec_loop8_enter:: DB 102,15,56,222,209 pxor xmm9,xmm0 - movups xmm0,XMMWORD PTR[((32-112))+rcx] + movups xmm0,XMMWORD[((32-112))+rcx] DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 @@ -2741,7 +2912,7 @@ DB 102,68,15,56,222,193 shl r11,7 DB 102,68,15,56,222,201 add r11,rdi - movups xmm1,XMMWORD PTR[((48-112))+rcx] + movups xmm1,XMMWORD[((48-112))+rcx] DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 @@ -2750,7 +2921,7 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((64-112))+rcx] + movups xmm0,XMMWORD[((64-112))+rcx] nop DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -2760,7 +2931,7 @@ DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movups xmm1,XMMWORD PTR[((80-112))+rcx] + movups xmm1,XMMWORD[((80-112))+rcx] nop DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -2770,7 +2941,7 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((96-112))+rcx] + movups xmm0,XMMWORD[((96-112))+rcx] nop DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -2780,7 +2951,7 @@ DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movups xmm1,XMMWORD PTR[((112-112))+rcx] + movups xmm1,XMMWORD[((112-112))+rcx] nop DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -2790,7 +2961,7 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((128-112))+rcx] + movups xmm0,XMMWORD[((128-112))+rcx] nop DB 102,15,56,222,209 DB 102,15,56,222,217 @@ -2800,7 +2971,7 @@ DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movups xmm1,XMMWORD PTR[((144-112))+rcx] + movups xmm1,XMMWORD[((144-112))+rcx] cmp eax,11 DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -2810,8 +2981,8 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((160-112))+rcx] - jb $L$cbc_dec_done + movups xmm0,XMMWORD[((160-112))+rcx] + jb NEAR $L$cbc_dec_done DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 @@ -2820,7 +2991,7 @@ DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movups xmm1,XMMWORD PTR[((176-112))+rcx] + movups xmm1,XMMWORD[((176-112))+rcx] nop DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -2830,8 +3001,8 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((192-112))+rcx] - je $L$cbc_dec_done + movups xmm0,XMMWORD[((192-112))+rcx] + je NEAR $L$cbc_dec_done DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 @@ -2840,7 +3011,7 @@ DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movups xmm1,XMMWORD PTR[((208-112))+rcx] + movups xmm1,XMMWORD[((208-112))+rcx] nop DB 102,15,56,222,208 DB 102,15,56,222,216 @@ -2850,10 +3021,10 @@ DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 - movups xmm0,XMMWORD PTR[((224-112))+rcx] - jmp $L$cbc_dec_done + movups xmm0,XMMWORD[((224-112))+rcx] + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_done:: +$L$cbc_dec_done: DB 102,15,56,222,209 DB 102,15,56,222,217 pxor xmm10,xmm0 @@ -2868,121 +3039,133 @@ DB 102,15,56,222,249 pxor xmm15,xmm0 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 - movdqu xmm1,XMMWORD PTR[80+rdi] + movdqu xmm1,XMMWORD[80+rdi] DB 102,65,15,56,223,210 - movdqu xmm10,XMMWORD PTR[96+rdi] + movdqu xmm10,XMMWORD[96+rdi] pxor xmm1,xmm0 DB 102,65,15,56,223,219 pxor xmm10,xmm0 - movdqu xmm0,XMMWORD PTR[112+rdi] + movdqu xmm0,XMMWORD[112+rdi] DB 102,65,15,56,223,228 - lea rdi,QWORD PTR[128+rdi] - movdqu xmm11,XMMWORD PTR[r11] + lea rdi,[128+rdi] + movdqu xmm11,XMMWORD[r11] DB 102,65,15,56,223,237 DB 102,65,15,56,223,246 - movdqu xmm12,XMMWORD PTR[16+r11] - movdqu xmm13,XMMWORD PTR[32+r11] + movdqu xmm12,XMMWORD[16+r11] + movdqu xmm13,XMMWORD[32+r11] DB 102,65,15,56,223,255 DB 102,68,15,56,223,193 - movdqu xmm14,XMMWORD PTR[48+r11] - movdqu xmm15,XMMWORD PTR[64+r11] + movdqu xmm14,XMMWORD[48+r11] + movdqu xmm15,XMMWORD[64+r11] DB 102,69,15,56,223,202 movdqa xmm10,xmm0 - movdqu xmm1,XMMWORD PTR[80+r11] - movups xmm0,XMMWORD PTR[((-112))+rcx] + movdqu xmm1,XMMWORD[80+r11] + movups xmm0,XMMWORD[((-112))+rcx] - movups XMMWORD PTR[rsi],xmm2 + movups XMMWORD[rsi],xmm2 movdqa xmm2,xmm11 - movups XMMWORD PTR[16+rsi],xmm3 + movups XMMWORD[16+rsi],xmm3 movdqa xmm3,xmm12 - movups XMMWORD PTR[32+rsi],xmm4 + movups XMMWORD[32+rsi],xmm4 movdqa xmm4,xmm13 - movups XMMWORD PTR[48+rsi],xmm5 + movups XMMWORD[48+rsi],xmm5 movdqa xmm5,xmm14 - movups XMMWORD PTR[64+rsi],xmm6 + movups XMMWORD[64+rsi],xmm6 movdqa xmm6,xmm15 - movups XMMWORD PTR[80+rsi],xmm7 + movups XMMWORD[80+rsi],xmm7 movdqa xmm7,xmm1 - movups XMMWORD PTR[96+rsi],xmm8 - lea rsi,QWORD PTR[112+rsi] + movups XMMWORD[96+rsi],xmm8 + lea rsi,[112+rsi] - sub rdx,080h - ja $L$cbc_dec_loop8 + sub rdx,0x80 + ja NEAR $L$cbc_dec_loop8 movaps xmm2,xmm9 - lea rcx,QWORD PTR[((-112))+rcx] - add rdx,070h - jle $L$cbc_dec_tail_collected - movups XMMWORD PTR[rsi],xmm9 - lea rsi,QWORD PTR[16+rsi] - cmp rdx,050h - jbe $L$cbc_dec_tail + lea rcx,[((-112))+rcx] + add rdx,0x70 + jle NEAR $L$cbc_dec_clear_tail_collected + movups XMMWORD[rsi],xmm9 + lea rsi,[16+rsi] + cmp rdx,0x50 + jbe NEAR $L$cbc_dec_tail movaps xmm2,xmm11 -$L$cbc_dec_six_or_seven:: - cmp rdx,060h - ja $L$cbc_dec_seven +$L$cbc_dec_six_or_seven: + cmp rdx,0x60 + ja NEAR $L$cbc_dec_seven movaps xmm8,xmm7 call _aesni_decrypt6 pxor xmm2,xmm10 movaps xmm10,xmm8 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 pxor xmm6,xmm14 - movdqu XMMWORD PTR[48+rsi],xmm5 + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 pxor xmm7,xmm15 - movdqu XMMWORD PTR[64+rsi],xmm6 - lea rsi,QWORD PTR[80+rsi] + movdqu XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 + lea rsi,[80+rsi] movdqa xmm2,xmm7 - jmp $L$cbc_dec_tail_collected + pxor xmm7,xmm7 + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_seven:: - movups xmm8,XMMWORD PTR[96+rdi] +$L$cbc_dec_seven: + movups xmm8,XMMWORD[96+rdi] xorps xmm9,xmm9 call _aesni_decrypt8 - movups xmm9,XMMWORD PTR[80+rdi] + movups xmm9,XMMWORD[80+rdi] pxor xmm2,xmm10 - movups xmm10,XMMWORD PTR[96+rdi] + movups xmm10,XMMWORD[96+rdi] pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 pxor xmm6,xmm14 - movdqu XMMWORD PTR[48+rsi],xmm5 + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 pxor xmm7,xmm15 - movdqu XMMWORD PTR[64+rsi],xmm6 + movdqu XMMWORD[64+rsi],xmm6 + pxor xmm6,xmm6 pxor xmm8,xmm9 - movdqu XMMWORD PTR[80+rsi],xmm7 - lea rsi,QWORD PTR[96+rsi] + movdqu XMMWORD[80+rsi],xmm7 + pxor xmm7,xmm7 + lea rsi,[96+rsi] movdqa xmm2,xmm8 - jmp $L$cbc_dec_tail_collected + pxor xmm8,xmm8 + pxor xmm9,xmm9 + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_loop6:: - movups XMMWORD PTR[rsi],xmm7 - lea rsi,QWORD PTR[16+rsi] - movdqu xmm2,XMMWORD PTR[rdi] - movdqu xmm3,XMMWORD PTR[16+rdi] +$L$cbc_dec_loop6: + movups XMMWORD[rsi],xmm7 + lea rsi,[16+rsi] + movdqu xmm2,XMMWORD[rdi] + movdqu xmm3,XMMWORD[16+rdi] movdqa xmm11,xmm2 - movdqu xmm4,XMMWORD PTR[32+rdi] + movdqu xmm4,XMMWORD[32+rdi] movdqa xmm12,xmm3 - movdqu xmm5,XMMWORD PTR[48+rdi] + movdqu xmm5,XMMWORD[48+rdi] movdqa xmm13,xmm4 - movdqu xmm6,XMMWORD PTR[64+rdi] + movdqu xmm6,XMMWORD[64+rdi] movdqa xmm14,xmm5 - movdqu xmm7,XMMWORD PTR[80+rdi] + movdqu xmm7,XMMWORD[80+rdi] movdqa xmm15,xmm6 -$L$cbc_dec_loop6_enter:: - lea rdi,QWORD PTR[96+rdi] +$L$cbc_dec_loop6_enter: + lea rdi,[96+rdi] movdqa xmm8,xmm7 call _aesni_decrypt6 @@ -2990,48 +3173,48 @@ $L$cbc_dec_loop6_enter:: pxor xmm2,xmm10 movdqa xmm10,xmm8 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 pxor xmm6,xmm14 mov rcx,r11 - movdqu XMMWORD PTR[48+rsi],xmm5 + movdqu XMMWORD[48+rsi],xmm5 pxor xmm7,xmm15 mov eax,r10d - movdqu XMMWORD PTR[64+rsi],xmm6 - lea rsi,QWORD PTR[80+rsi] - sub rdx,060h - ja $L$cbc_dec_loop6 + movdqu XMMWORD[64+rsi],xmm6 + lea rsi,[80+rsi] + sub rdx,0x60 + ja NEAR $L$cbc_dec_loop6 movdqa xmm2,xmm7 - add rdx,050h - jle $L$cbc_dec_tail_collected - movups XMMWORD PTR[rsi],xmm7 - lea rsi,QWORD PTR[16+rsi] + add rdx,0x50 + jle NEAR $L$cbc_dec_clear_tail_collected + movups XMMWORD[rsi],xmm7 + lea rsi,[16+rsi] -$L$cbc_dec_tail:: - movups xmm2,XMMWORD PTR[rdi] - sub rdx,010h - jbe $L$cbc_dec_one +$L$cbc_dec_tail: + movups xmm2,XMMWORD[rdi] + sub rdx,0x10 + jbe NEAR $L$cbc_dec_one - movups xmm3,XMMWORD PTR[16+rdi] + movups xmm3,XMMWORD[16+rdi] movaps xmm11,xmm2 - sub rdx,010h - jbe $L$cbc_dec_two + sub rdx,0x10 + jbe NEAR $L$cbc_dec_two - movups xmm4,XMMWORD PTR[32+rdi] + movups xmm4,XMMWORD[32+rdi] movaps xmm12,xmm3 - sub rdx,010h - jbe $L$cbc_dec_three + sub rdx,0x10 + jbe NEAR $L$cbc_dec_three - movups xmm5,XMMWORD PTR[48+rdi] + movups xmm5,XMMWORD[48+rdi] movaps xmm13,xmm4 - sub rdx,010h - jbe $L$cbc_dec_four + sub rdx,0x10 + jbe NEAR $L$cbc_dec_four - movups xmm6,XMMWORD PTR[64+rdi] + movups xmm6,XMMWORD[64+rdi] movaps xmm14,xmm5 movaps xmm15,xmm6 xorps xmm7,xmm7 @@ -3039,173 +3222,209 @@ $L$cbc_dec_tail:: pxor xmm2,xmm10 movaps xmm10,xmm15 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 pxor xmm6,xmm14 - movdqu XMMWORD PTR[48+rsi],xmm5 - lea rsi,QWORD PTR[64+rsi] + movdqu XMMWORD[48+rsi],xmm5 + pxor xmm5,xmm5 + lea rsi,[64+rsi] movdqa xmm2,xmm6 - sub rdx,010h - jmp $L$cbc_dec_tail_collected + pxor xmm6,xmm6 + pxor xmm7,xmm7 + sub rdx,0x10 + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_one:: +$L$cbc_dec_one: movaps xmm11,xmm2 - movups xmm0,XMMWORD PTR[rcx] - movups xmm1,XMMWORD PTR[16+rcx] - lea rcx,QWORD PTR[32+rcx] + movups xmm0,XMMWORD[rcx] + movups xmm1,XMMWORD[16+rcx] + lea rcx,[32+rcx] xorps xmm2,xmm0 -$L$oop_dec1_16:: +$L$oop_dec1_17: DB 102,15,56,222,209 dec eax - movups xmm1,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - jnz $L$oop_dec1_16 + movups xmm1,XMMWORD[rcx] + lea rcx,[16+rcx] + jnz NEAR $L$oop_dec1_17 DB 102,15,56,223,209 xorps xmm2,xmm10 movaps xmm10,xmm11 - jmp $L$cbc_dec_tail_collected + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_two:: +$L$cbc_dec_two: movaps xmm12,xmm3 call _aesni_decrypt2 pxor xmm2,xmm10 movaps xmm10,xmm12 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 movdqa xmm2,xmm3 - lea rsi,QWORD PTR[16+rsi] - jmp $L$cbc_dec_tail_collected + pxor xmm3,xmm3 + lea rsi,[16+rsi] + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_three:: +$L$cbc_dec_three: movaps xmm13,xmm4 call _aesni_decrypt3 pxor xmm2,xmm10 movaps xmm10,xmm13 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 movdqa xmm2,xmm4 - lea rsi,QWORD PTR[32+rsi] - jmp $L$cbc_dec_tail_collected + pxor xmm4,xmm4 + lea rsi,[32+rsi] + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_four:: +$L$cbc_dec_four: movaps xmm14,xmm5 call _aesni_decrypt4 pxor xmm2,xmm10 movaps xmm10,xmm14 pxor xmm3,xmm11 - movdqu XMMWORD PTR[rsi],xmm2 + movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 - movdqu XMMWORD PTR[16+rsi],xmm3 + movdqu XMMWORD[16+rsi],xmm3 + pxor xmm3,xmm3 pxor xmm5,xmm13 - movdqu XMMWORD PTR[32+rsi],xmm4 + movdqu XMMWORD[32+rsi],xmm4 + pxor xmm4,xmm4 movdqa xmm2,xmm5 - lea rsi,QWORD PTR[48+rsi] - jmp $L$cbc_dec_tail_collected + pxor xmm5,xmm5 + lea rsi,[48+rsi] + jmp NEAR $L$cbc_dec_tail_collected ALIGN 16 -$L$cbc_dec_tail_collected:: - movups XMMWORD PTR[r8],xmm10 +$L$cbc_dec_clear_tail_collected: + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 +$L$cbc_dec_tail_collected: + movups XMMWORD[r8],xmm10 and rdx,15 - jnz $L$cbc_dec_tail_partial - movups XMMWORD PTR[rsi],xmm2 - jmp $L$cbc_dec_ret -ALIGN 16 -$L$cbc_dec_tail_partial:: - movaps XMMWORD PTR[rsp],xmm2 + jnz NEAR $L$cbc_dec_tail_partial + movups XMMWORD[rsi],xmm2 + pxor xmm2,xmm2 + jmp NEAR $L$cbc_dec_ret +ALIGN 16 +$L$cbc_dec_tail_partial: + movaps XMMWORD[rsp],xmm2 + pxor xmm2,xmm2 mov rcx,16 mov rdi,rsi sub rcx,rdx - lea rsi,QWORD PTR[rsp] - DD 09066A4F3h - -$L$cbc_dec_ret:: - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[rbp] + lea rsi,[rsp] + DD 0x9066A4F3 + movdqa XMMWORD[rsp],xmm2 + +$L$cbc_dec_ret: + xorps xmm0,xmm0 + pxor xmm1,xmm1 + movaps xmm6,XMMWORD[16+rsp] + movaps XMMWORD[16+rsp],xmm0 + movaps xmm7,XMMWORD[32+rsp] + movaps XMMWORD[32+rsp],xmm0 + movaps xmm8,XMMWORD[48+rsp] + movaps XMMWORD[48+rsp],xmm0 + movaps xmm9,XMMWORD[64+rsp] + movaps XMMWORD[64+rsp],xmm0 + movaps xmm10,XMMWORD[80+rsp] + movaps XMMWORD[80+rsp],xmm0 + movaps xmm11,XMMWORD[96+rsp] + movaps XMMWORD[96+rsp],xmm0 + movaps xmm12,XMMWORD[112+rsp] + movaps XMMWORD[112+rsp],xmm0 + movaps xmm13,XMMWORD[128+rsp] + movaps XMMWORD[128+rsp],xmm0 + movaps xmm14,XMMWORD[144+rsp] + movaps XMMWORD[144+rsp],xmm0 + movaps xmm15,XMMWORD[160+rsp] + movaps XMMWORD[160+rsp],xmm0 + lea rsp,[rbp] pop rbp -$L$cbc_ret:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] +$L$cbc_ret: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_aesni_cbc_encrypt:: -aesni_cbc_encrypt ENDP -PUBLIC aesni_set_decrypt_key +$L$SEH_end_aesni_cbc_encrypt: +global aesni_set_decrypt_key ALIGN 16 -aesni_set_decrypt_key PROC PUBLIC -DB 048h,083h,0ECh,008h +aesni_set_decrypt_key: +DB 0x48,0x83,0xEC,0x08 call __aesni_set_encrypt_key shl edx,4 test eax,eax - jnz $L$dec_key_ret - lea rcx,QWORD PTR[16+rdx*1+r8] - - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[rcx] - movups XMMWORD PTR[rcx],xmm0 - movups XMMWORD PTR[r8],xmm1 - lea r8,QWORD PTR[16+r8] - lea rcx,QWORD PTR[((-16))+rcx] - -$L$dec_key_inverse:: - movups xmm0,XMMWORD PTR[r8] - movups xmm1,XMMWORD PTR[rcx] + jnz NEAR $L$dec_key_ret + lea rcx,[16+rdx*1+r8] + + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[rcx] + movups XMMWORD[rcx],xmm0 + movups XMMWORD[r8],xmm1 + lea r8,[16+r8] + lea rcx,[((-16))+rcx] + +$L$dec_key_inverse: + movups xmm0,XMMWORD[r8] + movups xmm1,XMMWORD[rcx] DB 102,15,56,219,192 DB 102,15,56,219,201 - lea r8,QWORD PTR[16+r8] - lea rcx,QWORD PTR[((-16))+rcx] - movups XMMWORD PTR[16+rcx],xmm0 - movups XMMWORD PTR[(-16)+r8],xmm1 + lea r8,[16+r8] + lea rcx,[((-16))+rcx] + movups XMMWORD[16+rcx],xmm0 + movups XMMWORD[(-16)+r8],xmm1 cmp rcx,r8 - ja $L$dec_key_inverse + ja NEAR $L$dec_key_inverse - movups xmm0,XMMWORD PTR[r8] + movups xmm0,XMMWORD[r8] DB 102,15,56,219,192 - movups XMMWORD PTR[rcx],xmm0 -$L$dec_key_ret:: + pxor xmm1,xmm1 + movups XMMWORD[rcx],xmm0 + pxor xmm0,xmm0 +$L$dec_key_ret: add rsp,8 DB 0F3h,0C3h ;repret -$L$SEH_end_set_decrypt_key:: -aesni_set_decrypt_key ENDP -PUBLIC aesni_set_encrypt_key +$L$SEH_end_set_decrypt_key: + +global aesni_set_encrypt_key ALIGN 16 -aesni_set_encrypt_key PROC PUBLIC -__aesni_set_encrypt_key:: -DB 048h,083h,0ECh,008h +aesni_set_encrypt_key: +__aesni_set_encrypt_key: +DB 0x48,0x83,0xEC,0x08 mov rax,-1 test rcx,rcx - jz $L$enc_key_ret + jz NEAR $L$enc_key_ret test r8,r8 - jz $L$enc_key_ret + jz NEAR $L$enc_key_ret - movups xmm0,XMMWORD PTR[rcx] + mov r10d,268437504 + movups xmm0,XMMWORD[rcx] xorps xmm4,xmm4 - lea rax,QWORD PTR[16+r8] + and r10d,DWORD[((OPENSSL_ia32cap_P+4))] + lea rax,[16+r8] cmp edx,256 - je $L$14rounds + je NEAR $L$14rounds cmp edx,192 - je $L$12rounds + je NEAR $L$12rounds cmp edx,128 - jne $L$bad_keybits + jne NEAR $L$bad_keybits -$L$10rounds:: +$L$10rounds: mov edx,9 - movups XMMWORD PTR[r8],xmm0 + cmp r10d,268435456 + je NEAR $L$10rounds_alt + + movups XMMWORD[r8],xmm0 DB 102,15,58,223,200,1 call $L$key_expansion_128_cold DB 102,15,58,223,200,2 @@ -3226,16 +3445,86 @@ DB 102,15,58,223,200,27 call $L$key_expansion_128 DB 102,15,58,223,200,54 call $L$key_expansion_128 - movups XMMWORD PTR[rax],xmm0 - mov DWORD PTR[80+rax],edx + movups XMMWORD[rax],xmm0 + mov DWORD[80+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$10rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate] + mov r10d,8 + movdqa xmm4,XMMWORD[$L$key_rcon1] + movdqa xmm2,xmm0 + movdqu XMMWORD[r8],xmm0 + jmp NEAR $L$oop_key128 + +ALIGN 16 +$L$oop_key128: +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + lea rax,[16+rax] + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[(-16)+rax],xmm0 + movdqa xmm2,xmm0 + + dec r10d + jnz NEAR $L$oop_key128 + + movdqa xmm4,XMMWORD[$L$key_rcon1b] + +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[rax],xmm0 + + movdqa xmm2,xmm0 +DB 102,15,56,0,197 +DB 102,15,56,221,196 + + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + + pxor xmm0,xmm2 + movdqu XMMWORD[16+rax],xmm0 + + mov DWORD[96+rax],edx xor eax,eax - jmp $L$enc_key_ret + jmp NEAR $L$enc_key_ret ALIGN 16 -$L$12rounds:: - movq xmm2,QWORD PTR[16+rcx] +$L$12rounds: + movq xmm2,QWORD[16+rcx] mov edx,11 - movups XMMWORD PTR[r8],xmm0 + cmp r10d,268435456 + je NEAR $L$12rounds_alt + + movups XMMWORD[r8],xmm0 DB 102,15,58,223,202,1 call $L$key_expansion_192a_cold DB 102,15,58,223,202,2 @@ -3252,18 +3541,62 @@ DB 102,15,58,223,202,64 call $L$key_expansion_192a DB 102,15,58,223,202,128 call $L$key_expansion_192b - movups XMMWORD PTR[rax],xmm0 - mov DWORD PTR[48+rax],edx + movups XMMWORD[rax],xmm0 + mov DWORD[48+rax],edx xor rax,rax - jmp $L$enc_key_ret + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$12rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate192] + movdqa xmm4,XMMWORD[$L$key_rcon1] + mov r10d,8 + movdqu XMMWORD[r8],xmm0 + jmp NEAR $L$oop_key192 + +ALIGN 16 +$L$oop_key192: + movq QWORD[rax],xmm2 + movdqa xmm1,xmm2 +DB 102,15,56,0,213 +DB 102,15,56,221,212 + pslld xmm4,1 + lea rax,[24+rax] + + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + + pshufd xmm3,xmm0,0xff + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + + pxor xmm0,xmm2 + pxor xmm2,xmm3 + movdqu XMMWORD[(-16)+rax],xmm0 + + dec r10d + jnz NEAR $L$oop_key192 + + mov DWORD[32+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret ALIGN 16 -$L$14rounds:: - movups xmm2,XMMWORD PTR[16+rcx] +$L$14rounds: + movups xmm2,XMMWORD[16+rcx] mov edx,13 - lea rax,QWORD PTR[16+rax] - movups XMMWORD PTR[r8],xmm0 - movups XMMWORD PTR[16+r8],xmm2 + lea rax,[16+rax] + cmp r10d,268435456 + je NEAR $L$14rounds_alt + + movups XMMWORD[r8],xmm0 + movups XMMWORD[16+r8],xmm2 DB 102,15,58,223,202,1 call $L$key_expansion_256a_cold DB 102,15,58,223,200,1 @@ -3290,24 +3623,84 @@ DB 102,15,58,223,200,32 call $L$key_expansion_256b DB 102,15,58,223,202,64 call $L$key_expansion_256a - movups XMMWORD PTR[rax],xmm0 - mov DWORD PTR[16+rax],edx + movups XMMWORD[rax],xmm0 + mov DWORD[16+rax],edx xor rax,rax - jmp $L$enc_key_ret + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$14rounds_alt: + movdqa xmm5,XMMWORD[$L$key_rotate] + movdqa xmm4,XMMWORD[$L$key_rcon1] + mov r10d,7 + movdqu XMMWORD[r8],xmm0 + movdqa xmm1,xmm2 + movdqu XMMWORD[16+r8],xmm2 + jmp NEAR $L$oop_key256 ALIGN 16 -$L$bad_keybits:: +$L$oop_key256: +DB 102,15,56,0,213 +DB 102,15,56,221,212 + + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + pslld xmm4,1 + + pxor xmm0,xmm2 + movdqu XMMWORD[rax],xmm0 + + dec r10d + jz NEAR $L$done_key256 + + pshufd xmm2,xmm0,0xff + pxor xmm3,xmm3 +DB 102,15,56,221,211 + + movdqa xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm1,xmm3 + + pxor xmm2,xmm1 + movdqu XMMWORD[16+rax],xmm2 + lea rax,[32+rax] + movdqa xmm1,xmm2 + + jmp NEAR $L$oop_key256 + +$L$done_key256: + mov DWORD[16+rax],edx + xor eax,eax + jmp NEAR $L$enc_key_ret + +ALIGN 16 +$L$bad_keybits: mov rax,-2 -$L$enc_key_ret:: +$L$enc_key_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 add rsp,8 DB 0F3h,0C3h ;repret -$L$SEH_end_set_encrypt_key:: +$L$SEH_end_set_encrypt_key: ALIGN 16 -$L$key_expansion_128:: - movups XMMWORD PTR[rax],xmm0 - lea rax,QWORD PTR[16+rax] -$L$key_expansion_128_cold:: +$L$key_expansion_128: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] +$L$key_expansion_128_cold: shufps xmm4,xmm0,16 xorps xmm0,xmm4 shufps xmm4,xmm0,140 @@ -3317,12 +3710,12 @@ $L$key_expansion_128_cold:: DB 0F3h,0C3h ;repret ALIGN 16 -$L$key_expansion_192a:: - movups XMMWORD PTR[rax],xmm0 - lea rax,QWORD PTR[16+rax] -$L$key_expansion_192a_cold:: +$L$key_expansion_192a: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] +$L$key_expansion_192a_cold: movaps xmm5,xmm2 -$L$key_expansion_192b_warm:: +$L$key_expansion_192b_warm: shufps xmm4,xmm0,16 movdqa xmm3,xmm2 xorps xmm0,xmm4 @@ -3337,20 +3730,20 @@ $L$key_expansion_192b_warm:: DB 0F3h,0C3h ;repret ALIGN 16 -$L$key_expansion_192b:: +$L$key_expansion_192b: movaps xmm3,xmm0 shufps xmm5,xmm0,68 - movups XMMWORD PTR[rax],xmm5 + movups XMMWORD[rax],xmm5 shufps xmm3,xmm2,78 - movups XMMWORD PTR[16+rax],xmm3 - lea rax,QWORD PTR[32+rax] - jmp $L$key_expansion_192b_warm + movups XMMWORD[16+rax],xmm3 + lea rax,[32+rax] + jmp NEAR $L$key_expansion_192b_warm ALIGN 16 -$L$key_expansion_256a:: - movups XMMWORD PTR[rax],xmm2 - lea rax,QWORD PTR[16+rax] -$L$key_expansion_256a_cold:: +$L$key_expansion_256a: + movups XMMWORD[rax],xmm2 + lea rax,[16+rax] +$L$key_expansion_256a_cold: shufps xmm4,xmm0,16 xorps xmm0,xmm4 shufps xmm4,xmm0,140 @@ -3360,9 +3753,9 @@ $L$key_expansion_256a_cold:: DB 0F3h,0C3h ;repret ALIGN 16 -$L$key_expansion_256b:: - movups XMMWORD PTR[rax],xmm0 - lea rax,QWORD PTR[16+rax] +$L$key_expansion_256b: + movups XMMWORD[rax],xmm0 + lea rax,[16+rax] shufps xmm4,xmm2,16 xorps xmm2,xmm4 @@ -3371,29 +3764,37 @@ $L$key_expansion_256b:: shufps xmm1,xmm1,170 xorps xmm2,xmm1 DB 0F3h,0C3h ;repret -aesni_set_encrypt_key ENDP + ALIGN 64 -$L$bswap_mask:: +$L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 -$L$increment32:: +$L$increment32: DD 6,6,6,0 -$L$increment64:: +$L$increment64: DD 1,0,0,0 -$L$xts_magic:: - DD 087h,0,1,0 -$L$increment1:: +$L$xts_magic: + DD 0x87,0,1,0 +$L$increment1: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 +$L$key_rotate: + DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d +$L$key_rotate192: + DD 0x04070605,0x04070605,0x04070605,0x04070605 +$L$key_rcon1: + DD 1,1,1,1 +$L$key_rcon1b: + DD 0x1b,0x1b,0x1b,0x1b DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 DB 115,108,46,111,114,103,62,0 ALIGN 64 -EXTERN __imp_RtlVirtualUnwind:NEAR +EXTERN __imp_RtlVirtualUnwind ALIGN 16 -ecb_ccm64_se_handler PROC PRIVATE +ecb_ccm64_se_handler: push rsi push rdi push rbx @@ -3405,36 +3806,36 @@ ecb_ccm64_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$common_seh_tail + jb NEAR $L$common_seh_tail - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$common_seh_tail + jae NEAR $L$common_seh_tail - lea rsi,QWORD PTR[rax] - lea rdi,QWORD PTR[512+r8] + lea rsi,[rax] + lea rdi,[512+r8] mov ecx,8 - DD 0a548f3fch - lea rax,QWORD PTR[88+rax] + DD 0xa548f3fc + lea rax,[88+rax] + + jmp NEAR $L$common_seh_tail - jmp $L$common_seh_tail -ecb_ccm64_se_handler ENDP ALIGN 16 -ctr_xts_se_handler PROC PRIVATE +ctr_xts_se_handler: push rsi push rdi push rbx @@ -3446,35 +3847,35 @@ ctr_xts_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$common_seh_tail + jb NEAR $L$common_seh_tail - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$common_seh_tail + jae NEAR $L$common_seh_tail - mov rax,QWORD PTR[160+r8] - lea rsi,QWORD PTR[((-160))+rax] - lea rdi,QWORD PTR[512+r8] + mov rax,QWORD[160+r8] + lea rsi,[((-160))+rax] + lea rdi,[512+r8] mov ecx,20 - DD 0a548f3fch + DD 0xa548f3fc + + jmp NEAR $L$common_rbp_tail - jmp $L$common_rbp_tail -ctr_xts_se_handler ENDP ALIGN 16 -cbc_se_handler PROC PRIVATE +cbc_se_handler: push rsi push rdi push rbx @@ -3486,61 +3887,61 @@ cbc_se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[152+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[152+r8] + mov rbx,QWORD[248+r8] - lea r10,QWORD PTR[$L$cbc_decrypt] + lea r10,[$L$cbc_decrypt_bulk] cmp rbx,r10 - jb $L$common_seh_tail + jb NEAR $L$common_seh_tail - lea r10,QWORD PTR[$L$cbc_decrypt_body] + lea r10,[$L$cbc_decrypt_body] cmp rbx,r10 - jb $L$restore_cbc_rax + jb NEAR $L$restore_cbc_rax - lea r10,QWORD PTR[$L$cbc_ret] + lea r10,[$L$cbc_ret] cmp rbx,r10 - jae $L$common_seh_tail + jae NEAR $L$common_seh_tail - lea rsi,QWORD PTR[16+rax] - lea rdi,QWORD PTR[512+r8] + lea rsi,[16+rax] + lea rdi,[512+r8] mov ecx,20 - DD 0a548f3fch - -$L$common_rbp_tail:: - mov rax,QWORD PTR[160+r8] - mov rbp,QWORD PTR[rax] - lea rax,QWORD PTR[8+rax] - mov QWORD PTR[160+r8],rbp - jmp $L$common_seh_tail - -$L$restore_cbc_rax:: - mov rax,QWORD PTR[120+r8] - -$L$common_seh_tail:: - mov rdi,QWORD PTR[8+rax] - mov rsi,QWORD PTR[16+rax] - mov QWORD PTR[152+r8],rax - mov QWORD PTR[168+r8],rsi - mov QWORD PTR[176+r8],rdi - - mov rdi,QWORD PTR[40+r9] + DD 0xa548f3fc + +$L$common_rbp_tail: + mov rax,QWORD[160+r8] + mov rbp,QWORD[rax] + lea rax,[8+rax] + mov QWORD[160+r8],rbp + jmp NEAR $L$common_seh_tail + +$L$restore_cbc_rax: + mov rax,QWORD[120+r8] + +$L$common_seh_tail: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi + + mov rdi,QWORD[40+r9] mov rsi,r8 mov ecx,154 - DD 0a548f3fch + DD 0xa548f3fc mov rsi,r9 xor rcx,rcx - mov rdx,QWORD PTR[8+rsi] - mov r8,QWORD PTR[rsi] - mov r9,QWORD PTR[16+rsi] - mov r10,QWORD PTR[40+rsi] - lea r11,QWORD PTR[56+rsi] - lea r12,QWORD PTR[24+rsi] - mov QWORD PTR[32+rsp],r10 - mov QWORD PTR[40+rsp],r11 - mov QWORD PTR[48+rsp],r12 - mov QWORD PTR[56+rsp],rcx - call QWORD PTR[__imp_RtlVirtualUnwind] + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] mov eax,1 add rsp,64 @@ -3554,78 +3955,73 @@ $L$common_seh_tail:: pop rdi pop rsi DB 0F3h,0C3h ;repret -cbc_se_handler ENDP -.text$ ENDS -.pdata SEGMENT READONLY ALIGN(4) + +section .pdata rdata align=4 ALIGN 4 - DD imagerel $L$SEH_begin_aesni_ecb_encrypt - DD imagerel $L$SEH_end_aesni_ecb_encrypt - DD imagerel $L$SEH_info_ecb - - DD imagerel $L$SEH_begin_aesni_ccm64_encrypt_blocks - DD imagerel $L$SEH_end_aesni_ccm64_encrypt_blocks - DD imagerel $L$SEH_info_ccm64_enc - - DD imagerel $L$SEH_begin_aesni_ccm64_decrypt_blocks - DD imagerel $L$SEH_end_aesni_ccm64_decrypt_blocks - DD imagerel $L$SEH_info_ccm64_dec - - DD imagerel $L$SEH_begin_aesni_ctr32_encrypt_blocks - DD imagerel $L$SEH_end_aesni_ctr32_encrypt_blocks - DD imagerel $L$SEH_info_ctr32 - - DD imagerel $L$SEH_begin_aesni_xts_encrypt - DD imagerel $L$SEH_end_aesni_xts_encrypt - DD imagerel $L$SEH_info_xts_enc - - DD imagerel $L$SEH_begin_aesni_xts_decrypt - DD imagerel $L$SEH_end_aesni_xts_decrypt - DD imagerel $L$SEH_info_xts_dec - DD imagerel $L$SEH_begin_aesni_cbc_encrypt - DD imagerel $L$SEH_end_aesni_cbc_encrypt - DD imagerel $L$SEH_info_cbc - - DD imagerel aesni_set_decrypt_key - DD imagerel $L$SEH_end_set_decrypt_key - DD imagerel $L$SEH_info_key - - DD imagerel aesni_set_encrypt_key - DD imagerel $L$SEH_end_set_encrypt_key - DD imagerel $L$SEH_info_key -.pdata ENDS -.xdata SEGMENT READONLY ALIGN(8) + DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase + DD $L$SEH_info_ecb wrt ..imagebase + + DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_ccm64_enc wrt ..imagebase + + DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase + DD $L$SEH_info_ccm64_dec wrt ..imagebase + + DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase + DD $L$SEH_info_ctr32 wrt ..imagebase + + DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase + DD $L$SEH_info_xts_enc wrt ..imagebase + + DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase + DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase + DD $L$SEH_info_xts_dec wrt ..imagebase + DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_cbc wrt ..imagebase + + DD aesni_set_decrypt_key wrt ..imagebase + DD $L$SEH_end_set_decrypt_key wrt ..imagebase + DD $L$SEH_info_key wrt ..imagebase + + DD aesni_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_key wrt ..imagebase +section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_ecb:: +$L$SEH_info_ecb: DB 9,0,0,0 - DD imagerel ecb_ccm64_se_handler - DD imagerel $L$ecb_enc_body,imagerel $L$ecb_enc_ret -$L$SEH_info_ccm64_enc:: + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase +$L$SEH_info_ccm64_enc: DB 9,0,0,0 - DD imagerel ecb_ccm64_se_handler - DD imagerel $L$ccm64_enc_body,imagerel $L$ccm64_enc_ret -$L$SEH_info_ccm64_dec:: + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase +$L$SEH_info_ccm64_dec: DB 9,0,0,0 - DD imagerel ecb_ccm64_se_handler - DD imagerel $L$ccm64_dec_body,imagerel $L$ccm64_dec_ret -$L$SEH_info_ctr32:: + DD ecb_ccm64_se_handler wrt ..imagebase + DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase +$L$SEH_info_ctr32: DB 9,0,0,0 - DD imagerel ctr_xts_se_handler - DD imagerel $L$ctr32_body,imagerel $L$ctr32_epilogue -$L$SEH_info_xts_enc:: + DD ctr_xts_se_handler wrt ..imagebase + DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase +$L$SEH_info_xts_enc: DB 9,0,0,0 - DD imagerel ctr_xts_se_handler - DD imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue -$L$SEH_info_xts_dec:: + DD ctr_xts_se_handler wrt ..imagebase + DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase +$L$SEH_info_xts_dec: DB 9,0,0,0 - DD imagerel ctr_xts_se_handler - DD imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue -$L$SEH_info_cbc:: + DD ctr_xts_se_handler wrt ..imagebase + DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase +$L$SEH_info_cbc: DB 9,0,0,0 - DD imagerel cbc_se_handler -$L$SEH_info_key:: -DB 001h,004h,001h,000h -DB 004h,002h,000h,000h - -.xdata ENDS -END + DD cbc_se_handler wrt ..imagebase +$L$SEH_info_key: +DB 0x01,0x04,0x01,0x00 +DB 0x04,0x02,0x00,0x00 diff --git a/win-x86_64/crypto/aes/bsaes-x86_64.asm b/win-x86_64/crypto/aes/bsaes-x86_64.asm index 3346a7e..6d75248 100644 --- a/win-x86_64/crypto/aes/bsaes-x86_64.asm +++ b/win-x86_64/crypto/aes/bsaes-x86_64.asm @@ -1,17 +1,21 @@ -OPTION DOTNAME -.text$ SEGMENT ALIGN(256) 'CODE' +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 -EXTERN asm_AES_encrypt:NEAR -EXTERN asm_AES_decrypt:NEAR + +EXTERN asm_AES_encrypt +EXTERN asm_AES_decrypt ALIGN 64 -_bsaes_encrypt8 PROC PRIVATE - lea r11,QWORD PTR[$L$BS0] +_bsaes_encrypt8: + lea r11,[$L$BS0] - movdqa xmm8,XMMWORD PTR[rax] - lea rax,QWORD PTR[16+rax] - movdqa xmm7,XMMWORD PTR[80+r11] + movdqa xmm8,XMMWORD[rax] + lea rax,[16+rax] + movdqa xmm7,XMMWORD[80+r11] pxor xmm15,xmm8 pxor xmm0,xmm8 pxor xmm1,xmm8 @@ -28,9 +32,9 @@ DB 102,15,56,0,223 DB 102,15,56,0,231 DB 102,15,56,0,239 DB 102,15,56,0,247 -_bsaes_encrypt8_bitslice:: - movdqa xmm7,XMMWORD PTR[r11] - movdqa xmm8,XMMWORD PTR[16+r11] +_bsaes_encrypt8_bitslice: + movdqa xmm7,XMMWORD[r11] + movdqa xmm8,XMMWORD[16+r11] movdqa xmm9,xmm5 psrlq xmm5,1 movdqa xmm10,xmm3 @@ -59,7 +63,7 @@ _bsaes_encrypt8_bitslice:: psllq xmm15,1 pxor xmm1,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[32+r11] + movdqa xmm7,XMMWORD[32+r11] movdqa xmm9,xmm4 psrlq xmm4,2 movdqa xmm10,xmm3 @@ -117,27 +121,27 @@ _bsaes_encrypt8_bitslice:: pxor xmm0,xmm9 pxor xmm15,xmm10 dec r10d - jmp $L$enc_sbox + jmp NEAR $L$enc_sbox ALIGN 16 -$L$enc_loop:: - pxor xmm15,XMMWORD PTR[rax] - pxor xmm0,XMMWORD PTR[16+rax] - pxor xmm1,XMMWORD PTR[32+rax] - pxor xmm2,XMMWORD PTR[48+rax] +$L$enc_loop: + pxor xmm15,XMMWORD[rax] + pxor xmm0,XMMWORD[16+rax] + pxor xmm1,XMMWORD[32+rax] + pxor xmm2,XMMWORD[48+rax] DB 102,68,15,56,0,255 DB 102,15,56,0,199 - pxor xmm3,XMMWORD PTR[64+rax] - pxor xmm4,XMMWORD PTR[80+rax] + pxor xmm3,XMMWORD[64+rax] + pxor xmm4,XMMWORD[80+rax] DB 102,15,56,0,207 DB 102,15,56,0,215 - pxor xmm5,XMMWORD PTR[96+rax] - pxor xmm6,XMMWORD PTR[112+rax] + pxor xmm5,XMMWORD[96+rax] + pxor xmm6,XMMWORD[112+rax] DB 102,15,56,0,223 DB 102,15,56,0,231 DB 102,15,56,0,239 DB 102,15,56,0,247 - lea rax,QWORD PTR[128+rax] -$L$enc_sbox:: + lea rax,[128+rax] +$L$enc_sbox: pxor xmm4,xmm5 pxor xmm1,xmm0 pxor xmm2,xmm15 @@ -324,46 +328,46 @@ $L$enc_sbox:: pxor xmm5,xmm2 dec r10d - jl $L$enc_done - pshufd xmm7,xmm15,093h - pshufd xmm8,xmm0,093h + jl NEAR $L$enc_done + pshufd xmm7,xmm15,0x93 + pshufd xmm8,xmm0,0x93 pxor xmm15,xmm7 - pshufd xmm9,xmm3,093h + pshufd xmm9,xmm3,0x93 pxor xmm0,xmm8 - pshufd xmm10,xmm5,093h + pshufd xmm10,xmm5,0x93 pxor xmm3,xmm9 - pshufd xmm11,xmm2,093h + pshufd xmm11,xmm2,0x93 pxor xmm5,xmm10 - pshufd xmm12,xmm6,093h + pshufd xmm12,xmm6,0x93 pxor xmm2,xmm11 - pshufd xmm13,xmm1,093h + pshufd xmm13,xmm1,0x93 pxor xmm6,xmm12 - pshufd xmm14,xmm4,093h + pshufd xmm14,xmm4,0x93 pxor xmm1,xmm13 pxor xmm4,xmm14 pxor xmm8,xmm15 pxor xmm7,xmm4 pxor xmm8,xmm4 - pshufd xmm15,xmm15,04Eh + pshufd xmm15,xmm15,0x4E pxor xmm9,xmm0 - pshufd xmm0,xmm0,04Eh + pshufd xmm0,xmm0,0x4E pxor xmm12,xmm2 pxor xmm15,xmm7 pxor xmm13,xmm6 pxor xmm0,xmm8 pxor xmm11,xmm5 - pshufd xmm7,xmm2,04Eh + pshufd xmm7,xmm2,0x4E pxor xmm14,xmm1 - pshufd xmm8,xmm6,04Eh + pshufd xmm8,xmm6,0x4E pxor xmm10,xmm3 - pshufd xmm2,xmm5,04Eh + pshufd xmm2,xmm5,0x4E pxor xmm10,xmm4 - pshufd xmm6,xmm4,04Eh + pshufd xmm6,xmm4,0x4E pxor xmm11,xmm4 - pshufd xmm5,xmm1,04Eh + pshufd xmm5,xmm1,0x4E pxor xmm7,xmm11 - pshufd xmm1,xmm3,04Eh + pshufd xmm1,xmm3,0x4E pxor xmm8,xmm12 pxor xmm2,xmm10 pxor xmm6,xmm14 @@ -371,14 +375,14 @@ $L$enc_sbox:: movdqa xmm3,xmm7 pxor xmm1,xmm9 movdqa xmm4,xmm8 - movdqa xmm7,XMMWORD PTR[48+r11] - jnz $L$enc_loop - movdqa xmm7,XMMWORD PTR[64+r11] - jmp $L$enc_loop + movdqa xmm7,XMMWORD[48+r11] + jnz NEAR $L$enc_loop + movdqa xmm7,XMMWORD[64+r11] + jmp NEAR $L$enc_loop ALIGN 16 -$L$enc_done:: - movdqa xmm7,XMMWORD PTR[r11] - movdqa xmm8,XMMWORD PTR[16+r11] +$L$enc_done: + movdqa xmm7,XMMWORD[r11] + movdqa xmm8,XMMWORD[16+r11] movdqa xmm9,xmm1 psrlq xmm1,1 movdqa xmm10,xmm2 @@ -407,7 +411,7 @@ $L$enc_done:: psllq xmm15,1 pxor xmm3,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[32+r11] + movdqa xmm7,XMMWORD[32+r11] movdqa xmm9,xmm6 psrlq xmm6,2 movdqa xmm10,xmm2 @@ -464,7 +468,7 @@ $L$enc_done:: psllq xmm15,4 pxor xmm0,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[rax] + movdqa xmm7,XMMWORD[rax] pxor xmm3,xmm7 pxor xmm5,xmm7 pxor xmm2,xmm7 @@ -474,16 +478,16 @@ $L$enc_done:: pxor xmm15,xmm7 pxor xmm0,xmm7 DB 0F3h,0C3h ;repret -_bsaes_encrypt8 ENDP + ALIGN 64 -_bsaes_decrypt8 PROC PRIVATE - lea r11,QWORD PTR[$L$BS0] +_bsaes_decrypt8: + lea r11,[$L$BS0] - movdqa xmm8,XMMWORD PTR[rax] - lea rax,QWORD PTR[16+rax] - movdqa xmm7,XMMWORD PTR[((-48))+r11] + movdqa xmm8,XMMWORD[rax] + lea rax,[16+rax] + movdqa xmm7,XMMWORD[((-48))+r11] pxor xmm15,xmm8 pxor xmm0,xmm8 pxor xmm1,xmm8 @@ -500,8 +504,8 @@ DB 102,15,56,0,223 DB 102,15,56,0,231 DB 102,15,56,0,239 DB 102,15,56,0,247 - movdqa xmm7,XMMWORD PTR[r11] - movdqa xmm8,XMMWORD PTR[16+r11] + movdqa xmm7,XMMWORD[r11] + movdqa xmm8,XMMWORD[16+r11] movdqa xmm9,xmm5 psrlq xmm5,1 movdqa xmm10,xmm3 @@ -530,7 +534,7 @@ DB 102,15,56,0,247 psllq xmm15,1 pxor xmm1,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[32+r11] + movdqa xmm7,XMMWORD[32+r11] movdqa xmm9,xmm4 psrlq xmm4,2 movdqa xmm10,xmm3 @@ -588,27 +592,27 @@ DB 102,15,56,0,247 pxor xmm0,xmm9 pxor xmm15,xmm10 dec r10d - jmp $L$dec_sbox + jmp NEAR $L$dec_sbox ALIGN 16 -$L$dec_loop:: - pxor xmm15,XMMWORD PTR[rax] - pxor xmm0,XMMWORD PTR[16+rax] - pxor xmm1,XMMWORD PTR[32+rax] - pxor xmm2,XMMWORD PTR[48+rax] +$L$dec_loop: + pxor xmm15,XMMWORD[rax] + pxor xmm0,XMMWORD[16+rax] + pxor xmm1,XMMWORD[32+rax] + pxor xmm2,XMMWORD[48+rax] DB 102,68,15,56,0,255 DB 102,15,56,0,199 - pxor xmm3,XMMWORD PTR[64+rax] - pxor xmm4,XMMWORD PTR[80+rax] + pxor xmm3,XMMWORD[64+rax] + pxor xmm4,XMMWORD[80+rax] DB 102,15,56,0,207 DB 102,15,56,0,215 - pxor xmm5,XMMWORD PTR[96+rax] - pxor xmm6,XMMWORD PTR[112+rax] + pxor xmm5,XMMWORD[96+rax] + pxor xmm6,XMMWORD[112+rax] DB 102,15,56,0,223 DB 102,15,56,0,231 DB 102,15,56,0,239 DB 102,15,56,0,247 - lea rax,QWORD PTR[128+rax] -$L$dec_sbox:: + lea rax,[128+rax] +$L$dec_sbox: pxor xmm2,xmm3 pxor xmm3,xmm6 @@ -795,26 +799,26 @@ $L$dec_sbox:: pxor xmm3,xmm15 pxor xmm6,xmm2 dec r10d - jl $L$dec_done + jl NEAR $L$dec_done - pshufd xmm7,xmm15,04Eh - pshufd xmm13,xmm2,04Eh + pshufd xmm7,xmm15,0x4E + pshufd xmm13,xmm2,0x4E pxor xmm7,xmm15 - pshufd xmm14,xmm4,04Eh + pshufd xmm14,xmm4,0x4E pxor xmm13,xmm2 - pshufd xmm8,xmm0,04Eh + pshufd xmm8,xmm0,0x4E pxor xmm14,xmm4 - pshufd xmm9,xmm5,04Eh + pshufd xmm9,xmm5,0x4E pxor xmm8,xmm0 - pshufd xmm10,xmm3,04Eh + pshufd xmm10,xmm3,0x4E pxor xmm9,xmm5 pxor xmm15,xmm13 pxor xmm0,xmm13 - pshufd xmm11,xmm1,04Eh + pshufd xmm11,xmm1,0x4E pxor xmm10,xmm3 pxor xmm5,xmm7 pxor xmm3,xmm8 - pshufd xmm12,xmm6,04Eh + pshufd xmm12,xmm6,0x4E pxor xmm11,xmm1 pxor xmm0,xmm14 pxor xmm1,xmm9 @@ -828,45 +832,45 @@ $L$dec_sbox:: pxor xmm1,xmm14 pxor xmm6,xmm14 pxor xmm4,xmm12 - pshufd xmm7,xmm15,093h - pshufd xmm8,xmm0,093h + pshufd xmm7,xmm15,0x93 + pshufd xmm8,xmm0,0x93 pxor xmm15,xmm7 - pshufd xmm9,xmm5,093h + pshufd xmm9,xmm5,0x93 pxor xmm0,xmm8 - pshufd xmm10,xmm3,093h + pshufd xmm10,xmm3,0x93 pxor xmm5,xmm9 - pshufd xmm11,xmm1,093h + pshufd xmm11,xmm1,0x93 pxor xmm3,xmm10 - pshufd xmm12,xmm6,093h + pshufd xmm12,xmm6,0x93 pxor xmm1,xmm11 - pshufd xmm13,xmm2,093h + pshufd xmm13,xmm2,0x93 pxor xmm6,xmm12 - pshufd xmm14,xmm4,093h + pshufd xmm14,xmm4,0x93 pxor xmm2,xmm13 pxor xmm4,xmm14 pxor xmm8,xmm15 pxor xmm7,xmm4 pxor xmm8,xmm4 - pshufd xmm15,xmm15,04Eh + pshufd xmm15,xmm15,0x4E pxor xmm9,xmm0 - pshufd xmm0,xmm0,04Eh + pshufd xmm0,xmm0,0x4E pxor xmm12,xmm1 pxor xmm15,xmm7 pxor xmm13,xmm6 pxor xmm0,xmm8 pxor xmm11,xmm3 - pshufd xmm7,xmm1,04Eh + pshufd xmm7,xmm1,0x4E pxor xmm14,xmm2 - pshufd xmm8,xmm6,04Eh + pshufd xmm8,xmm6,0x4E pxor xmm10,xmm5 - pshufd xmm1,xmm3,04Eh + pshufd xmm1,xmm3,0x4E pxor xmm10,xmm4 - pshufd xmm6,xmm4,04Eh + pshufd xmm6,xmm4,0x4E pxor xmm11,xmm4 - pshufd xmm3,xmm2,04Eh + pshufd xmm3,xmm2,0x4E pxor xmm7,xmm11 - pshufd xmm2,xmm5,04Eh + pshufd xmm2,xmm5,0x4E pxor xmm8,xmm12 pxor xmm10,xmm1 pxor xmm6,xmm14 @@ -877,14 +881,14 @@ $L$dec_sbox:: movdqa xmm4,xmm8 movdqa xmm1,xmm2 movdqa xmm2,xmm10 - movdqa xmm7,XMMWORD PTR[((-16))+r11] - jnz $L$dec_loop - movdqa xmm7,XMMWORD PTR[((-32))+r11] - jmp $L$dec_loop + movdqa xmm7,XMMWORD[((-16))+r11] + jnz NEAR $L$dec_loop + movdqa xmm7,XMMWORD[((-32))+r11] + jmp NEAR $L$dec_loop ALIGN 16 -$L$dec_done:: - movdqa xmm7,XMMWORD PTR[r11] - movdqa xmm8,XMMWORD PTR[16+r11] +$L$dec_done: + movdqa xmm7,XMMWORD[r11] + movdqa xmm8,XMMWORD[16+r11] movdqa xmm9,xmm2 psrlq xmm2,1 movdqa xmm10,xmm1 @@ -913,7 +917,7 @@ $L$dec_done:: psllq xmm15,1 pxor xmm5,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[32+r11] + movdqa xmm7,XMMWORD[32+r11] movdqa xmm9,xmm6 psrlq xmm6,2 movdqa xmm10,xmm1 @@ -970,7 +974,7 @@ $L$dec_done:: psllq xmm15,4 pxor xmm0,xmm9 pxor xmm15,xmm10 - movdqa xmm7,XMMWORD PTR[rax] + movdqa xmm7,XMMWORD[rax] pxor xmm5,xmm7 pxor xmm3,xmm7 pxor xmm1,xmm7 @@ -980,27 +984,27 @@ $L$dec_done:: pxor xmm15,xmm7 pxor xmm0,xmm7 DB 0F3h,0C3h ;repret -_bsaes_decrypt8 ENDP + ALIGN 16 -_bsaes_key_convert PROC PRIVATE - lea r11,QWORD PTR[$L$masks] - movdqu xmm7,XMMWORD PTR[rcx] - lea rcx,QWORD PTR[16+rcx] - movdqa xmm0,XMMWORD PTR[r11] - movdqa xmm1,XMMWORD PTR[16+r11] - movdqa xmm2,XMMWORD PTR[32+r11] - movdqa xmm3,XMMWORD PTR[48+r11] - movdqa xmm4,XMMWORD PTR[64+r11] +_bsaes_key_convert: + lea r11,[$L$masks] + movdqu xmm7,XMMWORD[rcx] + lea rcx,[16+rcx] + movdqa xmm0,XMMWORD[r11] + movdqa xmm1,XMMWORD[16+r11] + movdqa xmm2,XMMWORD[32+r11] + movdqa xmm3,XMMWORD[48+r11] + movdqa xmm4,XMMWORD[64+r11] pcmpeqd xmm5,xmm5 - movdqu xmm6,XMMWORD PTR[rcx] - movdqa XMMWORD PTR[rax],xmm7 - lea rax,QWORD PTR[16+rax] + movdqu xmm6,XMMWORD[rcx] + movdqa XMMWORD[rax],xmm7 + lea rax,[16+rax] dec r10d - jmp $L$key_loop + jmp NEAR $L$key_loop ALIGN 16 -$L$key_loop:: +$L$key_loop: DB 102,15,56,0,244 movdqa xmm8,xmm0 @@ -1031,73 +1035,73 @@ DB 102,15,56,0,244 pand xmm12,xmm6 pand xmm13,xmm6 - movdqa XMMWORD PTR[rax],xmm8 + movdqa XMMWORD[rax],xmm8 pcmpeqb xmm12,xmm0 psrlq xmm0,4 - movdqa XMMWORD PTR[16+rax],xmm9 + movdqa XMMWORD[16+rax],xmm9 pcmpeqb xmm13,xmm1 psrlq xmm1,4 - lea rcx,QWORD PTR[16+rcx] + lea rcx,[16+rcx] pand xmm14,xmm6 pand xmm15,xmm6 - movdqa XMMWORD PTR[32+rax],xmm10 + movdqa XMMWORD[32+rax],xmm10 pcmpeqb xmm14,xmm2 psrlq xmm2,4 - movdqa XMMWORD PTR[48+rax],xmm11 + movdqa XMMWORD[48+rax],xmm11 pcmpeqb xmm15,xmm3 psrlq xmm3,4 - movdqu xmm6,XMMWORD PTR[rcx] + movdqu xmm6,XMMWORD[rcx] pxor xmm13,xmm5 pxor xmm14,xmm5 - movdqa XMMWORD PTR[64+rax],xmm12 - movdqa XMMWORD PTR[80+rax],xmm13 - movdqa XMMWORD PTR[96+rax],xmm14 - movdqa XMMWORD PTR[112+rax],xmm15 - lea rax,QWORD PTR[128+rax] + movdqa XMMWORD[64+rax],xmm12 + movdqa XMMWORD[80+rax],xmm13 + movdqa XMMWORD[96+rax],xmm14 + movdqa XMMWORD[112+rax],xmm15 + lea rax,[128+rax] dec r10d - jnz $L$key_loop + jnz NEAR $L$key_loop - movdqa xmm7,XMMWORD PTR[80+r11] + movdqa xmm7,XMMWORD[80+r11] DB 0F3h,0C3h ;repret -_bsaes_key_convert ENDP -EXTERN asm_AES_cbc_encrypt:NEAR -PUBLIC bsaes_cbc_encrypt + +EXTERN asm_AES_cbc_encrypt +global bsaes_cbc_encrypt ALIGN 16 -bsaes_cbc_encrypt PROC PUBLIC - mov r11d,DWORD PTR[48+rsp] +bsaes_cbc_encrypt: + mov r11d,DWORD[48+rsp] cmp r11d,0 - jne asm_AES_cbc_encrypt + jne NEAR asm_AES_cbc_encrypt cmp r8,128 - jb asm_AES_cbc_encrypt + jb NEAR asm_AES_cbc_encrypt mov rax,rsp -$L$cbc_dec_prologue:: +$L$cbc_dec_prologue: push rbp push rbx push r12 push r13 push r14 push r15 - lea rsp,QWORD PTR[((-72))+rsp] - mov r10,QWORD PTR[160+rsp] - lea rsp,QWORD PTR[((-160))+rsp] - movaps XMMWORD PTR[64+rsp],xmm6 - movaps XMMWORD PTR[80+rsp],xmm7 - movaps XMMWORD PTR[96+rsp],xmm8 - movaps XMMWORD PTR[112+rsp],xmm9 - movaps XMMWORD PTR[128+rsp],xmm10 - movaps XMMWORD PTR[144+rsp],xmm11 - movaps XMMWORD PTR[160+rsp],xmm12 - movaps XMMWORD PTR[176+rsp],xmm13 - movaps XMMWORD PTR[192+rsp],xmm14 - movaps XMMWORD PTR[208+rsp],xmm15 -$L$cbc_dec_body:: + lea rsp,[((-72))+rsp] + mov r10,QWORD[160+rsp] + lea rsp,[((-160))+rsp] + movaps XMMWORD[64+rsp],xmm6 + movaps XMMWORD[80+rsp],xmm7 + movaps XMMWORD[96+rsp],xmm8 + movaps XMMWORD[112+rsp],xmm9 + movaps XMMWORD[128+rsp],xmm10 + movaps XMMWORD[144+rsp],xmm11 + movaps XMMWORD[160+rsp],xmm12 + movaps XMMWORD[176+rsp],xmm13 + movaps XMMWORD[192+rsp],xmm14 + movaps XMMWORD[208+rsp],xmm15 +$L$cbc_dec_body: mov rbp,rsp - mov eax,DWORD PTR[240+r9] + mov eax,DWORD[240+r9] mov r12,rcx mov r13,rdx mov r14,r8 @@ -1114,267 +1118,267 @@ $L$cbc_dec_body:: mov rcx,r15 mov r10d,edx call _bsaes_key_convert - pxor xmm7,XMMWORD PTR[rsp] - movdqa XMMWORD PTR[rax],xmm6 - movdqa XMMWORD PTR[rsp],xmm7 + pxor xmm7,XMMWORD[rsp] + movdqa XMMWORD[rax],xmm6 + movdqa XMMWORD[rsp],xmm7 - movdqu xmm14,XMMWORD PTR[rbx] + movdqu xmm14,XMMWORD[rbx] sub r14,8 -$L$cbc_dec_loop:: - movdqu xmm15,XMMWORD PTR[r12] - movdqu xmm0,XMMWORD PTR[16+r12] - movdqu xmm1,XMMWORD PTR[32+r12] - movdqu xmm2,XMMWORD PTR[48+r12] - movdqu xmm3,XMMWORD PTR[64+r12] - movdqu xmm4,XMMWORD PTR[80+r12] +$L$cbc_dec_loop: + movdqu xmm15,XMMWORD[r12] + movdqu xmm0,XMMWORD[16+r12] + movdqu xmm1,XMMWORD[32+r12] + movdqu xmm2,XMMWORD[48+r12] + movdqu xmm3,XMMWORD[64+r12] + movdqu xmm4,XMMWORD[80+r12] mov rax,rsp - movdqu xmm5,XMMWORD PTR[96+r12] + movdqu xmm5,XMMWORD[96+r12] mov r10d,edx - movdqu xmm6,XMMWORD PTR[112+r12] - movdqa XMMWORD PTR[32+rbp],xmm14 + movdqu xmm6,XMMWORD[112+r12] + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm3,xmm9 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] pxor xmm1,xmm10 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] pxor xmm6,xmm11 - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu xmm13,XMMWORD[96+r12] pxor xmm2,xmm12 - movdqu xmm14,XMMWORD PTR[112+r12] + movdqu xmm14,XMMWORD[112+r12] pxor xmm4,xmm13 - movdqu XMMWORD PTR[r13],xmm15 - lea r12,QWORD PTR[128+r12] - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - movdqu XMMWORD PTR[64+r13],xmm1 - movdqu XMMWORD PTR[80+r13],xmm6 - movdqu XMMWORD PTR[96+r13],xmm2 - movdqu XMMWORD PTR[112+r13],xmm4 - lea r13,QWORD PTR[128+r13] + movdqu XMMWORD[r13],xmm15 + lea r12,[128+r12] + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + movdqu XMMWORD[64+r13],xmm1 + movdqu XMMWORD[80+r13],xmm6 + movdqu XMMWORD[96+r13],xmm2 + movdqu XMMWORD[112+r13],xmm4 + lea r13,[128+r13] sub r14,8 - jnc $L$cbc_dec_loop + jnc NEAR $L$cbc_dec_loop add r14,8 - jz $L$cbc_dec_done + jz NEAR $L$cbc_dec_done - movdqu xmm15,XMMWORD PTR[r12] + movdqu xmm15,XMMWORD[r12] mov rax,rsp mov r10d,edx cmp r14,2 - jb $L$cbc_dec_one - movdqu xmm0,XMMWORD PTR[16+r12] - je $L$cbc_dec_two - movdqu xmm1,XMMWORD PTR[32+r12] + jb NEAR $L$cbc_dec_one + movdqu xmm0,XMMWORD[16+r12] + je NEAR $L$cbc_dec_two + movdqu xmm1,XMMWORD[32+r12] cmp r14,4 - jb $L$cbc_dec_three - movdqu xmm2,XMMWORD PTR[48+r12] - je $L$cbc_dec_four - movdqu xmm3,XMMWORD PTR[64+r12] + jb NEAR $L$cbc_dec_three + movdqu xmm2,XMMWORD[48+r12] + je NEAR $L$cbc_dec_four + movdqu xmm3,XMMWORD[64+r12] cmp r14,6 - jb $L$cbc_dec_five - movdqu xmm4,XMMWORD PTR[80+r12] - je $L$cbc_dec_six - movdqu xmm5,XMMWORD PTR[96+r12] - movdqa XMMWORD PTR[32+rbp],xmm14 + jb NEAR $L$cbc_dec_five + movdqu xmm4,XMMWORD[80+r12] + je NEAR $L$cbc_dec_six + movdqu xmm5,XMMWORD[96+r12] + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm3,xmm9 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] pxor xmm1,xmm10 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] pxor xmm6,xmm11 - movdqu xmm14,XMMWORD PTR[96+r12] + movdqu xmm14,XMMWORD[96+r12] pxor xmm2,xmm12 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - movdqu XMMWORD PTR[64+r13],xmm1 - movdqu XMMWORD PTR[80+r13],xmm6 - movdqu XMMWORD PTR[96+r13],xmm2 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + movdqu XMMWORD[64+r13],xmm1 + movdqu XMMWORD[80+r13],xmm6 + movdqu XMMWORD[96+r13],xmm2 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_six:: - movdqa XMMWORD PTR[32+rbp],xmm14 +$L$cbc_dec_six: + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm3,xmm9 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] pxor xmm1,xmm10 - movdqu xmm14,XMMWORD PTR[80+r12] + movdqu xmm14,XMMWORD[80+r12] pxor xmm6,xmm11 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - movdqu XMMWORD PTR[64+r13],xmm1 - movdqu XMMWORD PTR[80+r13],xmm6 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + movdqu XMMWORD[64+r13],xmm1 + movdqu XMMWORD[80+r13],xmm6 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_five:: - movdqa XMMWORD PTR[32+rbp],xmm14 +$L$cbc_dec_five: + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm3,xmm9 - movdqu xmm14,XMMWORD PTR[64+r12] + movdqu xmm14,XMMWORD[64+r12] pxor xmm1,xmm10 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - movdqu XMMWORD PTR[64+r13],xmm1 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + movdqu XMMWORD[64+r13],xmm1 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_four:: - movdqa XMMWORD PTR[32+rbp],xmm14 +$L$cbc_dec_four: + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu xmm14,XMMWORD PTR[48+r12] + movdqu xmm14,XMMWORD[48+r12] pxor xmm3,xmm9 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_three:: - movdqa XMMWORD PTR[32+rbp],xmm14 +$L$cbc_dec_three: + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu xmm14,XMMWORD PTR[32+r12] + movdqu xmm14,XMMWORD[32+r12] pxor xmm5,xmm8 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_two:: - movdqa XMMWORD PTR[32+rbp],xmm14 +$L$cbc_dec_two: + movdqa XMMWORD[32+rbp],xmm14 call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[32+rbp] - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm14,XMMWORD PTR[16+r12] + pxor xmm15,XMMWORD[32+rbp] + movdqu xmm7,XMMWORD[r12] + movdqu xmm14,XMMWORD[16+r12] pxor xmm0,xmm7 - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - jmp $L$cbc_dec_done + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + jmp NEAR $L$cbc_dec_done ALIGN 16 -$L$cbc_dec_one:: - lea rcx,QWORD PTR[r12] - lea rdx,QWORD PTR[32+rbp] - lea r8,QWORD PTR[r15] +$L$cbc_dec_one: + lea rcx,[r12] + lea rdx,[32+rbp] + lea r8,[r15] call asm_AES_decrypt - pxor xmm14,XMMWORD PTR[32+rbp] - movdqu XMMWORD PTR[r13],xmm14 + pxor xmm14,XMMWORD[32+rbp] + movdqu XMMWORD[r13],xmm14 movdqa xmm14,xmm15 -$L$cbc_dec_done:: - movdqu XMMWORD PTR[rbx],xmm14 - lea rax,QWORD PTR[rsp] +$L$cbc_dec_done: + movdqu XMMWORD[rbx],xmm14 + lea rax,[rsp] pxor xmm0,xmm0 -$L$cbc_dec_bzero:: - movdqa XMMWORD PTR[rax],xmm0 - movdqa XMMWORD PTR[16+rax],xmm0 - lea rax,QWORD PTR[32+rax] +$L$cbc_dec_bzero: + movdqa XMMWORD[rax],xmm0 + movdqa XMMWORD[16+rax],xmm0 + lea rax,[32+rax] cmp rbp,rax - ja $L$cbc_dec_bzero - - lea rsp,QWORD PTR[rbp] - movaps xmm6,XMMWORD PTR[64+rbp] - movaps xmm7,XMMWORD PTR[80+rbp] - movaps xmm8,XMMWORD PTR[96+rbp] - movaps xmm9,XMMWORD PTR[112+rbp] - movaps xmm10,XMMWORD PTR[128+rbp] - movaps xmm11,XMMWORD PTR[144+rbp] - movaps xmm12,XMMWORD PTR[160+rbp] - movaps xmm13,XMMWORD PTR[176+rbp] - movaps xmm14,XMMWORD PTR[192+rbp] - movaps xmm15,XMMWORD PTR[208+rbp] - lea rsp,QWORD PTR[160+rbp] - mov r15,QWORD PTR[72+rsp] - mov r14,QWORD PTR[80+rsp] - mov r13,QWORD PTR[88+rsp] - mov r12,QWORD PTR[96+rsp] - mov rbx,QWORD PTR[104+rsp] - mov rax,QWORD PTR[112+rsp] - lea rsp,QWORD PTR[120+rsp] + ja NEAR $L$cbc_dec_bzero + + lea rsp,[rbp] + movaps xmm6,XMMWORD[64+rbp] + movaps xmm7,XMMWORD[80+rbp] + movaps xmm8,XMMWORD[96+rbp] + movaps xmm9,XMMWORD[112+rbp] + movaps xmm10,XMMWORD[128+rbp] + movaps xmm11,XMMWORD[144+rbp] + movaps xmm12,XMMWORD[160+rbp] + movaps xmm13,XMMWORD[176+rbp] + movaps xmm14,XMMWORD[192+rbp] + movaps xmm15,XMMWORD[208+rbp] + lea rsp,[160+rbp] + mov r15,QWORD[72+rsp] + mov r14,QWORD[80+rsp] + mov r13,QWORD[88+rsp] + mov r12,QWORD[96+rsp] + mov rbx,QWORD[104+rsp] + mov rax,QWORD[112+rsp] + lea rsp,[120+rsp] mov rbp,rax -$L$cbc_dec_epilogue:: +$L$cbc_dec_epilogue: DB 0F3h,0C3h ;repret -bsaes_cbc_encrypt ENDP -PUBLIC bsaes_ctr32_encrypt_blocks + +global bsaes_ctr32_encrypt_blocks ALIGN 16 -bsaes_ctr32_encrypt_blocks PROC PUBLIC +bsaes_ctr32_encrypt_blocks: mov rax,rsp -$L$ctr_enc_prologue:: +$L$ctr_enc_prologue: push rbp push rbx push r12 push r13 push r14 push r15 - lea rsp,QWORD PTR[((-72))+rsp] - mov r10,QWORD PTR[160+rsp] - lea rsp,QWORD PTR[((-160))+rsp] - movaps XMMWORD PTR[64+rsp],xmm6 - movaps XMMWORD PTR[80+rsp],xmm7 - movaps XMMWORD PTR[96+rsp],xmm8 - movaps XMMWORD PTR[112+rsp],xmm9 - movaps XMMWORD PTR[128+rsp],xmm10 - movaps XMMWORD PTR[144+rsp],xmm11 - movaps XMMWORD PTR[160+rsp],xmm12 - movaps XMMWORD PTR[176+rsp],xmm13 - movaps XMMWORD PTR[192+rsp],xmm14 - movaps XMMWORD PTR[208+rsp],xmm15 -$L$ctr_enc_body:: + lea rsp,[((-72))+rsp] + mov r10,QWORD[160+rsp] + lea rsp,[((-160))+rsp] + movaps XMMWORD[64+rsp],xmm6 + movaps XMMWORD[80+rsp],xmm7 + movaps XMMWORD[96+rsp],xmm8 + movaps XMMWORD[112+rsp],xmm9 + movaps XMMWORD[128+rsp],xmm10 + movaps XMMWORD[144+rsp],xmm11 + movaps XMMWORD[160+rsp],xmm12 + movaps XMMWORD[176+rsp],xmm13 + movaps XMMWORD[192+rsp],xmm14 + movaps XMMWORD[208+rsp],xmm15 +$L$ctr_enc_body: mov rbp,rsp - movdqu xmm0,XMMWORD PTR[r10] - mov eax,DWORD PTR[240+r9] + movdqu xmm0,XMMWORD[r10] + mov eax,DWORD[240+r9] mov r12,rcx mov r13,rdx mov r14,r8 mov r15,r9 - movdqa XMMWORD PTR[32+rbp],xmm0 + movdqa XMMWORD[32+rbp],xmm0 cmp r8,8 - jb $L$ctr_enc_short + jb NEAR $L$ctr_enc_short mov ebx,eax shl rax,7 @@ -1386,39 +1390,39 @@ $L$ctr_enc_body:: mov r10d,ebx call _bsaes_key_convert pxor xmm7,xmm6 - movdqa XMMWORD PTR[rax],xmm7 + movdqa XMMWORD[rax],xmm7 - movdqa xmm8,XMMWORD PTR[rsp] - lea r11,QWORD PTR[$L$ADD1] - movdqa xmm15,XMMWORD PTR[32+rbp] - movdqa xmm7,XMMWORD PTR[((-32))+r11] + movdqa xmm8,XMMWORD[rsp] + lea r11,[$L$ADD1] + movdqa xmm15,XMMWORD[32+rbp] + movdqa xmm7,XMMWORD[((-32))+r11] DB 102,68,15,56,0,199 DB 102,68,15,56,0,255 - movdqa XMMWORD PTR[rsp],xmm8 - jmp $L$ctr_enc_loop + movdqa XMMWORD[rsp],xmm8 + jmp NEAR $L$ctr_enc_loop ALIGN 16 -$L$ctr_enc_loop:: - movdqa XMMWORD PTR[32+rbp],xmm15 +$L$ctr_enc_loop: + movdqa XMMWORD[32+rbp],xmm15 movdqa xmm0,xmm15 movdqa xmm1,xmm15 - paddd xmm0,XMMWORD PTR[r11] + paddd xmm0,XMMWORD[r11] movdqa xmm2,xmm15 - paddd xmm1,XMMWORD PTR[16+r11] + paddd xmm1,XMMWORD[16+r11] movdqa xmm3,xmm15 - paddd xmm2,XMMWORD PTR[32+r11] + paddd xmm2,XMMWORD[32+r11] movdqa xmm4,xmm15 - paddd xmm3,XMMWORD PTR[48+r11] + paddd xmm3,XMMWORD[48+r11] movdqa xmm5,xmm15 - paddd xmm4,XMMWORD PTR[64+r11] + paddd xmm4,XMMWORD[64+r11] movdqa xmm6,xmm15 - paddd xmm5,XMMWORD PTR[80+r11] - paddd xmm6,XMMWORD PTR[96+r11] + paddd xmm5,XMMWORD[80+r11] + paddd xmm6,XMMWORD[96+r11] - movdqa xmm8,XMMWORD PTR[rsp] - lea rax,QWORD PTR[16+rsp] - movdqa xmm7,XMMWORD PTR[((-16))+r11] + movdqa xmm8,XMMWORD[rsp] + lea rax,[16+rsp] + movdqa xmm7,XMMWORD[((-16))+r11] pxor xmm15,xmm8 pxor xmm0,xmm8 pxor xmm1,xmm8 @@ -1435,172 +1439,172 @@ DB 102,15,56,0,223 DB 102,15,56,0,231 DB 102,15,56,0,239 DB 102,15,56,0,247 - lea r11,QWORD PTR[$L$BS0] + lea r11,[$L$BS0] mov r10d,ebx call _bsaes_encrypt8_bitslice sub r14,8 - jc $L$ctr_enc_loop_done - - movdqu xmm7,XMMWORD PTR[r12] - movdqu xmm8,XMMWORD PTR[16+r12] - movdqu xmm9,XMMWORD PTR[32+r12] - movdqu xmm10,XMMWORD PTR[48+r12] - movdqu xmm11,XMMWORD PTR[64+r12] - movdqu xmm12,XMMWORD PTR[80+r12] - movdqu xmm13,XMMWORD PTR[96+r12] - movdqu xmm14,XMMWORD PTR[112+r12] - lea r12,QWORD PTR[128+r12] + jc NEAR $L$ctr_enc_loop_done + + movdqu xmm7,XMMWORD[r12] + movdqu xmm8,XMMWORD[16+r12] + movdqu xmm9,XMMWORD[32+r12] + movdqu xmm10,XMMWORD[48+r12] + movdqu xmm11,XMMWORD[64+r12] + movdqu xmm12,XMMWORD[80+r12] + movdqu xmm13,XMMWORD[96+r12] + movdqu xmm14,XMMWORD[112+r12] + lea r12,[128+r12] pxor xmm7,xmm15 - movdqa xmm15,XMMWORD PTR[32+rbp] + movdqa xmm15,XMMWORD[32+rbp] pxor xmm0,xmm8 - movdqu XMMWORD PTR[r13],xmm7 + movdqu XMMWORD[r13],xmm7 pxor xmm3,xmm9 - movdqu XMMWORD PTR[16+r13],xmm0 + movdqu XMMWORD[16+r13],xmm0 pxor xmm5,xmm10 - movdqu XMMWORD PTR[32+r13],xmm3 + movdqu XMMWORD[32+r13],xmm3 pxor xmm2,xmm11 - movdqu XMMWORD PTR[48+r13],xmm5 + movdqu XMMWORD[48+r13],xmm5 pxor xmm6,xmm12 - movdqu XMMWORD PTR[64+r13],xmm2 + movdqu XMMWORD[64+r13],xmm2 pxor xmm1,xmm13 - movdqu XMMWORD PTR[80+r13],xmm6 + movdqu XMMWORD[80+r13],xmm6 pxor xmm4,xmm14 - movdqu XMMWORD PTR[96+r13],xmm1 - lea r11,QWORD PTR[$L$ADD1] - movdqu XMMWORD PTR[112+r13],xmm4 - lea r13,QWORD PTR[128+r13] - paddd xmm15,XMMWORD PTR[112+r11] - jnz $L$ctr_enc_loop - - jmp $L$ctr_enc_done + movdqu XMMWORD[96+r13],xmm1 + lea r11,[$L$ADD1] + movdqu XMMWORD[112+r13],xmm4 + lea r13,[128+r13] + paddd xmm15,XMMWORD[112+r11] + jnz NEAR $L$ctr_enc_loop + + jmp NEAR $L$ctr_enc_done ALIGN 16 -$L$ctr_enc_loop_done:: +$L$ctr_enc_loop_done: add r14,8 - movdqu xmm7,XMMWORD PTR[r12] + movdqu xmm7,XMMWORD[r12] pxor xmm15,xmm7 - movdqu XMMWORD PTR[r13],xmm15 + movdqu XMMWORD[r13],xmm15 cmp r14,2 - jb $L$ctr_enc_done - movdqu xmm8,XMMWORD PTR[16+r12] + jb NEAR $L$ctr_enc_done + movdqu xmm8,XMMWORD[16+r12] pxor xmm0,xmm8 - movdqu XMMWORD PTR[16+r13],xmm0 - je $L$ctr_enc_done - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu XMMWORD[16+r13],xmm0 + je NEAR $L$ctr_enc_done + movdqu xmm9,XMMWORD[32+r12] pxor xmm3,xmm9 - movdqu XMMWORD PTR[32+r13],xmm3 + movdqu XMMWORD[32+r13],xmm3 cmp r14,4 - jb $L$ctr_enc_done - movdqu xmm10,XMMWORD PTR[48+r12] + jb NEAR $L$ctr_enc_done + movdqu xmm10,XMMWORD[48+r12] pxor xmm5,xmm10 - movdqu XMMWORD PTR[48+r13],xmm5 - je $L$ctr_enc_done - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu XMMWORD[48+r13],xmm5 + je NEAR $L$ctr_enc_done + movdqu xmm11,XMMWORD[64+r12] pxor xmm2,xmm11 - movdqu XMMWORD PTR[64+r13],xmm2 + movdqu XMMWORD[64+r13],xmm2 cmp r14,6 - jb $L$ctr_enc_done - movdqu xmm12,XMMWORD PTR[80+r12] + jb NEAR $L$ctr_enc_done + movdqu xmm12,XMMWORD[80+r12] pxor xmm6,xmm12 - movdqu XMMWORD PTR[80+r13],xmm6 - je $L$ctr_enc_done - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu XMMWORD[80+r13],xmm6 + je NEAR $L$ctr_enc_done + movdqu xmm13,XMMWORD[96+r12] pxor xmm1,xmm13 - movdqu XMMWORD PTR[96+r13],xmm1 - jmp $L$ctr_enc_done + movdqu XMMWORD[96+r13],xmm1 + jmp NEAR $L$ctr_enc_done ALIGN 16 -$L$ctr_enc_short:: - lea rcx,QWORD PTR[32+rbp] - lea rdx,QWORD PTR[48+rbp] - lea r8,QWORD PTR[r15] +$L$ctr_enc_short: + lea rcx,[32+rbp] + lea rdx,[48+rbp] + lea r8,[r15] call asm_AES_encrypt - movdqu xmm0,XMMWORD PTR[r12] - lea r12,QWORD PTR[16+r12] - mov eax,DWORD PTR[44+rbp] + movdqu xmm0,XMMWORD[r12] + lea r12,[16+r12] + mov eax,DWORD[44+rbp] bswap eax - pxor xmm0,XMMWORD PTR[48+rbp] + pxor xmm0,XMMWORD[48+rbp] inc eax - movdqu XMMWORD PTR[r13],xmm0 + movdqu XMMWORD[r13],xmm0 bswap eax - lea r13,QWORD PTR[16+r13] - mov DWORD PTR[44+rsp],eax + lea r13,[16+r13] + mov DWORD[44+rsp],eax dec r14 - jnz $L$ctr_enc_short + jnz NEAR $L$ctr_enc_short -$L$ctr_enc_done:: - lea rax,QWORD PTR[rsp] +$L$ctr_enc_done: + lea rax,[rsp] pxor xmm0,xmm0 -$L$ctr_enc_bzero:: - movdqa XMMWORD PTR[rax],xmm0 - movdqa XMMWORD PTR[16+rax],xmm0 - lea rax,QWORD PTR[32+rax] +$L$ctr_enc_bzero: + movdqa XMMWORD[rax],xmm0 + movdqa XMMWORD[16+rax],xmm0 + lea rax,[32+rax] cmp rbp,rax - ja $L$ctr_enc_bzero - - lea rsp,QWORD PTR[rbp] - movaps xmm6,XMMWORD PTR[64+rbp] - movaps xmm7,XMMWORD PTR[80+rbp] - movaps xmm8,XMMWORD PTR[96+rbp] - movaps xmm9,XMMWORD PTR[112+rbp] - movaps xmm10,XMMWORD PTR[128+rbp] - movaps xmm11,XMMWORD PTR[144+rbp] - movaps xmm12,XMMWORD PTR[160+rbp] - movaps xmm13,XMMWORD PTR[176+rbp] - movaps xmm14,XMMWORD PTR[192+rbp] - movaps xmm15,XMMWORD PTR[208+rbp] - lea rsp,QWORD PTR[160+rbp] - mov r15,QWORD PTR[72+rsp] - mov r14,QWORD PTR[80+rsp] - mov r13,QWORD PTR[88+rsp] - mov r12,QWORD PTR[96+rsp] - mov rbx,QWORD PTR[104+rsp] - mov rax,QWORD PTR[112+rsp] - lea rsp,QWORD PTR[120+rsp] + ja NEAR $L$ctr_enc_bzero + + lea rsp,[rbp] + movaps xmm6,XMMWORD[64+rbp] + movaps xmm7,XMMWORD[80+rbp] + movaps xmm8,XMMWORD[96+rbp] + movaps xmm9,XMMWORD[112+rbp] + movaps xmm10,XMMWORD[128+rbp] + movaps xmm11,XMMWORD[144+rbp] + movaps xmm12,XMMWORD[160+rbp] + movaps xmm13,XMMWORD[176+rbp] + movaps xmm14,XMMWORD[192+rbp] + movaps xmm15,XMMWORD[208+rbp] + lea rsp,[160+rbp] + mov r15,QWORD[72+rsp] + mov r14,QWORD[80+rsp] + mov r13,QWORD[88+rsp] + mov r12,QWORD[96+rsp] + mov rbx,QWORD[104+rsp] + mov rax,QWORD[112+rsp] + lea rsp,[120+rsp] mov rbp,rax -$L$ctr_enc_epilogue:: +$L$ctr_enc_epilogue: DB 0F3h,0C3h ;repret -bsaes_ctr32_encrypt_blocks ENDP -PUBLIC bsaes_xts_encrypt + +global bsaes_xts_encrypt ALIGN 16 -bsaes_xts_encrypt PROC PUBLIC +bsaes_xts_encrypt: mov rax,rsp -$L$xts_enc_prologue:: +$L$xts_enc_prologue: push rbp push rbx push r12 push r13 push r14 push r15 - lea rsp,QWORD PTR[((-72))+rsp] - mov r10,QWORD PTR[160+rsp] - mov r11,QWORD PTR[168+rsp] - lea rsp,QWORD PTR[((-160))+rsp] - movaps XMMWORD PTR[64+rsp],xmm6 - movaps XMMWORD PTR[80+rsp],xmm7 - movaps XMMWORD PTR[96+rsp],xmm8 - movaps XMMWORD PTR[112+rsp],xmm9 - movaps XMMWORD PTR[128+rsp],xmm10 - movaps XMMWORD PTR[144+rsp],xmm11 - movaps XMMWORD PTR[160+rsp],xmm12 - movaps XMMWORD PTR[176+rsp],xmm13 - movaps XMMWORD PTR[192+rsp],xmm14 - movaps XMMWORD PTR[208+rsp],xmm15 -$L$xts_enc_body:: + lea rsp,[((-72))+rsp] + mov r10,QWORD[160+rsp] + mov r11,QWORD[168+rsp] + lea rsp,[((-160))+rsp] + movaps XMMWORD[64+rsp],xmm6 + movaps XMMWORD[80+rsp],xmm7 + movaps XMMWORD[96+rsp],xmm8 + movaps XMMWORD[112+rsp],xmm9 + movaps XMMWORD[128+rsp],xmm10 + movaps XMMWORD[144+rsp],xmm11 + movaps XMMWORD[160+rsp],xmm12 + movaps XMMWORD[176+rsp],xmm13 + movaps XMMWORD[192+rsp],xmm14 + movaps XMMWORD[208+rsp],xmm15 +$L$xts_enc_body: mov rbp,rsp mov r12,rcx mov r13,rdx mov r14,r8 mov r15,r9 - lea rcx,QWORD PTR[r11] - lea rdx,QWORD PTR[32+rbp] - lea r8,QWORD PTR[r10] + lea rcx,[r11] + lea rdx,[32+rbp] + lea r8,[r10] call asm_AES_encrypt - mov eax,DWORD PTR[240+r15] + mov eax,DWORD[240+r15] mov rbx,r14 mov edx,eax @@ -1613,471 +1617,471 @@ $L$xts_enc_body:: mov r10d,edx call _bsaes_key_convert pxor xmm7,xmm6 - movdqa XMMWORD PTR[rax],xmm7 + movdqa XMMWORD[rax],xmm7 and r14,-16 - sub rsp,080h - movdqa xmm6,XMMWORD PTR[32+rbp] + sub rsp,0x80 + movdqa xmm6,XMMWORD[32+rbp] pxor xmm14,xmm14 - movdqa xmm12,XMMWORD PTR[$L$xts_magic] + movdqa xmm12,XMMWORD[$L$xts_magic] pcmpgtd xmm14,xmm6 - sub r14,080h - jc $L$xts_enc_short - jmp $L$xts_enc_loop + sub r14,0x80 + jc NEAR $L$xts_enc_short + jmp NEAR $L$xts_enc_loop ALIGN 16 -$L$xts_enc_loop:: - pshufd xmm13,xmm14,013h +$L$xts_enc_loop: + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm15,xmm6 - movdqa XMMWORD PTR[rsp],xmm6 + movdqa XMMWORD[rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm0,xmm6 - movdqa XMMWORD PTR[16+rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm7,XMMWORD PTR[r12] - pshufd xmm13,xmm14,013h + movdqu xmm7,XMMWORD[r12] + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm1,xmm6 - movdqa XMMWORD PTR[32+rsp],xmm6 + movdqa XMMWORD[32+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm8,XMMWORD PTR[16+r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm15,xmm7 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm2,xmm6 - movdqa XMMWORD PTR[48+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm0,xmm8 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm3,xmm6 - movdqa XMMWORD PTR[64+rsp],xmm6 + movdqa XMMWORD[64+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm1,xmm9 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm4,xmm6 - movdqa XMMWORD PTR[80+rsp],xmm6 + movdqa XMMWORD[80+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] pxor xmm2,xmm10 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm5,xmm6 - movdqa XMMWORD PTR[96+rsp],xmm6 + movdqa XMMWORD[96+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] pxor xmm3,xmm11 - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu xmm13,XMMWORD[96+r12] pxor xmm4,xmm12 - movdqu xmm14,XMMWORD PTR[112+r12] - lea r12,QWORD PTR[128+r12] - movdqa XMMWORD PTR[112+rsp],xmm6 + movdqu xmm14,XMMWORD[112+r12] + lea r12,[128+r12] + movdqa XMMWORD[112+rsp],xmm6 pxor xmm5,xmm13 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] pxor xmm6,xmm14 mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm5,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm3 - pxor xmm2,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm5 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm2 - pxor xmm1,XMMWORD PTR[96+rsp] - movdqu XMMWORD PTR[80+r13],xmm6 - pxor xmm4,XMMWORD PTR[112+rsp] - movdqu XMMWORD PTR[96+r13],xmm1 - movdqu XMMWORD PTR[112+r13],xmm4 - lea r13,QWORD PTR[128+r13] - - movdqa xmm6,XMMWORD PTR[112+rsp] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm5,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm3 + pxor xmm2,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm5 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm2 + pxor xmm1,XMMWORD[96+rsp] + movdqu XMMWORD[80+r13],xmm6 + pxor xmm4,XMMWORD[112+rsp] + movdqu XMMWORD[96+r13],xmm1 + movdqu XMMWORD[112+r13],xmm4 + lea r13,[128+r13] + + movdqa xmm6,XMMWORD[112+rsp] pxor xmm14,xmm14 - movdqa xmm12,XMMWORD PTR[$L$xts_magic] + movdqa xmm12,XMMWORD[$L$xts_magic] pcmpgtd xmm14,xmm6 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - sub r14,080h - jnc $L$xts_enc_loop + sub r14,0x80 + jnc NEAR $L$xts_enc_loop -$L$xts_enc_short:: - add r14,080h - jz $L$xts_enc_done - pshufd xmm13,xmm14,013h +$L$xts_enc_short: + add r14,0x80 + jz NEAR $L$xts_enc_done + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm15,xmm6 - movdqa XMMWORD PTR[rsp],xmm6 + movdqa XMMWORD[rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm0,xmm6 - movdqa XMMWORD PTR[16+rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm7,XMMWORD PTR[r12] + movdqu xmm7,XMMWORD[r12] cmp r14,16 - je $L$xts_enc_1 - pshufd xmm13,xmm14,013h + je NEAR $L$xts_enc_1 + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm1,xmm6 - movdqa XMMWORD PTR[32+rsp],xmm6 + movdqa XMMWORD[32+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm8,XMMWORD PTR[16+r12] + movdqu xmm8,XMMWORD[16+r12] cmp r14,32 - je $L$xts_enc_2 + je NEAR $L$xts_enc_2 pxor xmm15,xmm7 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm2,xmm6 - movdqa XMMWORD PTR[48+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] cmp r14,48 - je $L$xts_enc_3 + je NEAR $L$xts_enc_3 pxor xmm0,xmm8 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm3,xmm6 - movdqa XMMWORD PTR[64+rsp],xmm6 + movdqa XMMWORD[64+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] cmp r14,64 - je $L$xts_enc_4 + je NEAR $L$xts_enc_4 pxor xmm1,xmm9 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm4,xmm6 - movdqa XMMWORD PTR[80+rsp],xmm6 + movdqa XMMWORD[80+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] cmp r14,80 - je $L$xts_enc_5 + je NEAR $L$xts_enc_5 pxor xmm2,xmm10 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm5,xmm6 - movdqa XMMWORD PTR[96+rsp],xmm6 + movdqa XMMWORD[96+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] cmp r14,96 - je $L$xts_enc_6 + je NEAR $L$xts_enc_6 pxor xmm3,xmm11 - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu xmm13,XMMWORD[96+r12] pxor xmm4,xmm12 - movdqa XMMWORD PTR[112+rsp],xmm6 - lea r12,QWORD PTR[112+r12] + movdqa XMMWORD[112+rsp],xmm6 + lea r12,[112+r12] pxor xmm5,xmm13 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm5,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm3 - pxor xmm2,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm5 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm2 - pxor xmm1,XMMWORD PTR[96+rsp] - movdqu XMMWORD PTR[80+r13],xmm6 - movdqu XMMWORD PTR[96+r13],xmm1 - lea r13,QWORD PTR[112+r13] - - movdqa xmm6,XMMWORD PTR[112+rsp] - jmp $L$xts_enc_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm5,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm3 + pxor xmm2,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm5 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm2 + pxor xmm1,XMMWORD[96+rsp] + movdqu XMMWORD[80+r13],xmm6 + movdqu XMMWORD[96+r13],xmm1 + lea r13,[112+r13] + + movdqa xmm6,XMMWORD[112+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_6:: +$L$xts_enc_6: pxor xmm3,xmm11 - lea r12,QWORD PTR[96+r12] + lea r12,[96+r12] pxor xmm4,xmm12 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm5,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm3 - pxor xmm2,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm5 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm2 - movdqu XMMWORD PTR[80+r13],xmm6 - lea r13,QWORD PTR[96+r13] - - movdqa xmm6,XMMWORD PTR[96+rsp] - jmp $L$xts_enc_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm5,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm3 + pxor xmm2,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm5 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm2 + movdqu XMMWORD[80+r13],xmm6 + lea r13,[96+r13] + + movdqa xmm6,XMMWORD[96+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_5:: +$L$xts_enc_5: pxor xmm2,xmm10 - lea r12,QWORD PTR[80+r12] + lea r12,[80+r12] pxor xmm3,xmm11 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm5,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm3 - pxor xmm2,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm5 - movdqu XMMWORD PTR[64+r13],xmm2 - lea r13,QWORD PTR[80+r13] - - movdqa xmm6,XMMWORD PTR[80+rsp] - jmp $L$xts_enc_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm5,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm3 + pxor xmm2,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm5 + movdqu XMMWORD[64+r13],xmm2 + lea r13,[80+r13] + + movdqa xmm6,XMMWORD[80+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_4:: +$L$xts_enc_4: pxor xmm1,xmm9 - lea r12,QWORD PTR[64+r12] + lea r12,[64+r12] pxor xmm2,xmm10 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm5,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm3 - movdqu XMMWORD PTR[48+r13],xmm5 - lea r13,QWORD PTR[64+r13] - - movdqa xmm6,XMMWORD PTR[64+rsp] - jmp $L$xts_enc_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm5,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm3 + movdqu XMMWORD[48+r13],xmm5 + lea r13,[64+r13] + + movdqa xmm6,XMMWORD[64+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_3:: +$L$xts_enc_3: pxor xmm0,xmm8 - lea r12,QWORD PTR[48+r12] + lea r12,[48+r12] pxor xmm1,xmm9 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm3,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm3 - lea r13,QWORD PTR[48+r13] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm3,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm3 + lea r13,[48+r13] - movdqa xmm6,XMMWORD PTR[48+rsp] - jmp $L$xts_enc_done + movdqa xmm6,XMMWORD[48+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_2:: +$L$xts_enc_2: pxor xmm15,xmm7 - lea r12,QWORD PTR[32+r12] + lea r12,[32+r12] pxor xmm0,xmm8 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_encrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - lea r13,QWORD PTR[32+r13] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + lea r13,[32+r13] - movdqa xmm6,XMMWORD PTR[32+rsp] - jmp $L$xts_enc_done + movdqa xmm6,XMMWORD[32+rsp] + jmp NEAR $L$xts_enc_done ALIGN 16 -$L$xts_enc_1:: +$L$xts_enc_1: pxor xmm7,xmm15 - lea r12,QWORD PTR[16+r12] - movdqa XMMWORD PTR[32+rbp],xmm7 - lea rcx,QWORD PTR[32+rbp] - lea rdx,QWORD PTR[32+rbp] - lea r8,QWORD PTR[r15] + lea r12,[16+r12] + movdqa XMMWORD[32+rbp],xmm7 + lea rcx,[32+rbp] + lea rdx,[32+rbp] + lea r8,[r15] call asm_AES_encrypt - pxor xmm15,XMMWORD PTR[32+rbp] + pxor xmm15,XMMWORD[32+rbp] - movdqu XMMWORD PTR[r13],xmm15 - lea r13,QWORD PTR[16+r13] + movdqu XMMWORD[r13],xmm15 + lea r13,[16+r13] - movdqa xmm6,XMMWORD PTR[16+rsp] + movdqa xmm6,XMMWORD[16+rsp] -$L$xts_enc_done:: +$L$xts_enc_done: and ebx,15 - jz $L$xts_enc_ret + jz NEAR $L$xts_enc_ret mov rdx,r13 -$L$xts_enc_steal:: - movzx eax,BYTE PTR[r12] - movzx ecx,BYTE PTR[((-16))+rdx] - lea r12,QWORD PTR[1+r12] - mov BYTE PTR[((-16))+rdx],al - mov BYTE PTR[rdx],cl - lea rdx,QWORD PTR[1+rdx] +$L$xts_enc_steal: + movzx eax,BYTE[r12] + movzx ecx,BYTE[((-16))+rdx] + lea r12,[1+r12] + mov BYTE[((-16))+rdx],al + mov BYTE[rdx],cl + lea rdx,[1+rdx] sub ebx,1 - jnz $L$xts_enc_steal + jnz NEAR $L$xts_enc_steal - movdqu xmm15,XMMWORD PTR[((-16))+r13] - lea rcx,QWORD PTR[32+rbp] + movdqu xmm15,XMMWORD[((-16))+r13] + lea rcx,[32+rbp] pxor xmm15,xmm6 - lea rdx,QWORD PTR[32+rbp] - movdqa XMMWORD PTR[32+rbp],xmm15 - lea r8,QWORD PTR[r15] + lea rdx,[32+rbp] + movdqa XMMWORD[32+rbp],xmm15 + lea r8,[r15] call asm_AES_encrypt - pxor xmm6,XMMWORD PTR[32+rbp] - movdqu XMMWORD PTR[(-16)+r13],xmm6 + pxor xmm6,XMMWORD[32+rbp] + movdqu XMMWORD[(-16)+r13],xmm6 -$L$xts_enc_ret:: - lea rax,QWORD PTR[rsp] +$L$xts_enc_ret: + lea rax,[rsp] pxor xmm0,xmm0 -$L$xts_enc_bzero:: - movdqa XMMWORD PTR[rax],xmm0 - movdqa XMMWORD PTR[16+rax],xmm0 - lea rax,QWORD PTR[32+rax] +$L$xts_enc_bzero: + movdqa XMMWORD[rax],xmm0 + movdqa XMMWORD[16+rax],xmm0 + lea rax,[32+rax] cmp rbp,rax - ja $L$xts_enc_bzero - - lea rsp,QWORD PTR[rbp] - movaps xmm6,XMMWORD PTR[64+rbp] - movaps xmm7,XMMWORD PTR[80+rbp] - movaps xmm8,XMMWORD PTR[96+rbp] - movaps xmm9,XMMWORD PTR[112+rbp] - movaps xmm10,XMMWORD PTR[128+rbp] - movaps xmm11,XMMWORD PTR[144+rbp] - movaps xmm12,XMMWORD PTR[160+rbp] - movaps xmm13,XMMWORD PTR[176+rbp] - movaps xmm14,XMMWORD PTR[192+rbp] - movaps xmm15,XMMWORD PTR[208+rbp] - lea rsp,QWORD PTR[160+rbp] - mov r15,QWORD PTR[72+rsp] - mov r14,QWORD PTR[80+rsp] - mov r13,QWORD PTR[88+rsp] - mov r12,QWORD PTR[96+rsp] - mov rbx,QWORD PTR[104+rsp] - mov rax,QWORD PTR[112+rsp] - lea rsp,QWORD PTR[120+rsp] + ja NEAR $L$xts_enc_bzero + + lea rsp,[rbp] + movaps xmm6,XMMWORD[64+rbp] + movaps xmm7,XMMWORD[80+rbp] + movaps xmm8,XMMWORD[96+rbp] + movaps xmm9,XMMWORD[112+rbp] + movaps xmm10,XMMWORD[128+rbp] + movaps xmm11,XMMWORD[144+rbp] + movaps xmm12,XMMWORD[160+rbp] + movaps xmm13,XMMWORD[176+rbp] + movaps xmm14,XMMWORD[192+rbp] + movaps xmm15,XMMWORD[208+rbp] + lea rsp,[160+rbp] + mov r15,QWORD[72+rsp] + mov r14,QWORD[80+rsp] + mov r13,QWORD[88+rsp] + mov r12,QWORD[96+rsp] + mov rbx,QWORD[104+rsp] + mov rax,QWORD[112+rsp] + lea rsp,[120+rsp] mov rbp,rax -$L$xts_enc_epilogue:: +$L$xts_enc_epilogue: DB 0F3h,0C3h ;repret -bsaes_xts_encrypt ENDP -PUBLIC bsaes_xts_decrypt + +global bsaes_xts_decrypt ALIGN 16 -bsaes_xts_decrypt PROC PUBLIC +bsaes_xts_decrypt: mov rax,rsp -$L$xts_dec_prologue:: +$L$xts_dec_prologue: push rbp push rbx push r12 push r13 push r14 push r15 - lea rsp,QWORD PTR[((-72))+rsp] - mov r10,QWORD PTR[160+rsp] - mov r11,QWORD PTR[168+rsp] - lea rsp,QWORD PTR[((-160))+rsp] - movaps XMMWORD PTR[64+rsp],xmm6 - movaps XMMWORD PTR[80+rsp],xmm7 - movaps XMMWORD PTR[96+rsp],xmm8 - movaps XMMWORD PTR[112+rsp],xmm9 - movaps XMMWORD PTR[128+rsp],xmm10 - movaps XMMWORD PTR[144+rsp],xmm11 - movaps XMMWORD PTR[160+rsp],xmm12 - movaps XMMWORD PTR[176+rsp],xmm13 - movaps XMMWORD PTR[192+rsp],xmm14 - movaps XMMWORD PTR[208+rsp],xmm15 -$L$xts_dec_body:: + lea rsp,[((-72))+rsp] + mov r10,QWORD[160+rsp] + mov r11,QWORD[168+rsp] + lea rsp,[((-160))+rsp] + movaps XMMWORD[64+rsp],xmm6 + movaps XMMWORD[80+rsp],xmm7 + movaps XMMWORD[96+rsp],xmm8 + movaps XMMWORD[112+rsp],xmm9 + movaps XMMWORD[128+rsp],xmm10 + movaps XMMWORD[144+rsp],xmm11 + movaps XMMWORD[160+rsp],xmm12 + movaps XMMWORD[176+rsp],xmm13 + movaps XMMWORD[192+rsp],xmm14 + movaps XMMWORD[208+rsp],xmm15 +$L$xts_dec_body: mov rbp,rsp mov r12,rcx mov r13,rdx mov r14,r8 mov r15,r9 - lea rcx,QWORD PTR[r11] - lea rdx,QWORD PTR[32+rbp] - lea r8,QWORD PTR[r10] + lea rcx,[r11] + lea rdx,[32+rbp] + lea r8,[r10] call asm_AES_encrypt - mov eax,DWORD PTR[240+r15] + mov eax,DWORD[240+r15] mov rbx,r14 mov edx,eax @@ -2089,9 +2093,9 @@ $L$xts_dec_body:: mov rcx,r15 mov r10d,edx call _bsaes_key_convert - pxor xmm7,XMMWORD PTR[rsp] - movdqa XMMWORD PTR[rax],xmm6 - movdqa XMMWORD PTR[rsp],xmm7 + pxor xmm7,XMMWORD[rsp] + movdqa XMMWORD[rax],xmm6 + movdqa XMMWORD[rsp],xmm7 xor eax,eax and r14,-16 @@ -2100,499 +2104,499 @@ $L$xts_dec_body:: shl rax,4 sub r14,rax - sub rsp,080h - movdqa xmm6,XMMWORD PTR[32+rbp] + sub rsp,0x80 + movdqa xmm6,XMMWORD[32+rbp] pxor xmm14,xmm14 - movdqa xmm12,XMMWORD PTR[$L$xts_magic] + movdqa xmm12,XMMWORD[$L$xts_magic] pcmpgtd xmm14,xmm6 - sub r14,080h - jc $L$xts_dec_short - jmp $L$xts_dec_loop + sub r14,0x80 + jc NEAR $L$xts_dec_short + jmp NEAR $L$xts_dec_loop ALIGN 16 -$L$xts_dec_loop:: - pshufd xmm13,xmm14,013h +$L$xts_dec_loop: + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm15,xmm6 - movdqa XMMWORD PTR[rsp],xmm6 + movdqa XMMWORD[rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm0,xmm6 - movdqa XMMWORD PTR[16+rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm7,XMMWORD PTR[r12] - pshufd xmm13,xmm14,013h + movdqu xmm7,XMMWORD[r12] + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm1,xmm6 - movdqa XMMWORD PTR[32+rsp],xmm6 + movdqa XMMWORD[32+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm8,XMMWORD PTR[16+r12] + movdqu xmm8,XMMWORD[16+r12] pxor xmm15,xmm7 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm2,xmm6 - movdqa XMMWORD PTR[48+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] pxor xmm0,xmm8 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm3,xmm6 - movdqa XMMWORD PTR[64+rsp],xmm6 + movdqa XMMWORD[64+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] pxor xmm1,xmm9 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm4,xmm6 - movdqa XMMWORD PTR[80+rsp],xmm6 + movdqa XMMWORD[80+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] pxor xmm2,xmm10 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm5,xmm6 - movdqa XMMWORD PTR[96+rsp],xmm6 + movdqa XMMWORD[96+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] pxor xmm3,xmm11 - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu xmm13,XMMWORD[96+r12] pxor xmm4,xmm12 - movdqu xmm14,XMMWORD PTR[112+r12] - lea r12,QWORD PTR[128+r12] - movdqa XMMWORD PTR[112+rsp],xmm6 + movdqu xmm14,XMMWORD[112+r12] + lea r12,[128+r12] + movdqa XMMWORD[112+rsp],xmm6 pxor xmm5,xmm13 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] pxor xmm6,xmm14 mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm3,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm5 - pxor xmm1,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm3 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm1 - pxor xmm2,XMMWORD PTR[96+rsp] - movdqu XMMWORD PTR[80+r13],xmm6 - pxor xmm4,XMMWORD PTR[112+rsp] - movdqu XMMWORD PTR[96+r13],xmm2 - movdqu XMMWORD PTR[112+r13],xmm4 - lea r13,QWORD PTR[128+r13] - - movdqa xmm6,XMMWORD PTR[112+rsp] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm3,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm5 + pxor xmm1,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm3 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm1 + pxor xmm2,XMMWORD[96+rsp] + movdqu XMMWORD[80+r13],xmm6 + pxor xmm4,XMMWORD[112+rsp] + movdqu XMMWORD[96+r13],xmm2 + movdqu XMMWORD[112+r13],xmm4 + lea r13,[128+r13] + + movdqa xmm6,XMMWORD[112+rsp] pxor xmm14,xmm14 - movdqa xmm12,XMMWORD PTR[$L$xts_magic] + movdqa xmm12,XMMWORD[$L$xts_magic] pcmpgtd xmm14,xmm6 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - sub r14,080h - jnc $L$xts_dec_loop + sub r14,0x80 + jnc NEAR $L$xts_dec_loop -$L$xts_dec_short:: - add r14,080h - jz $L$xts_dec_done - pshufd xmm13,xmm14,013h +$L$xts_dec_short: + add r14,0x80 + jz NEAR $L$xts_dec_done + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm15,xmm6 - movdqa XMMWORD PTR[rsp],xmm6 + movdqa XMMWORD[rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm0,xmm6 - movdqa XMMWORD PTR[16+rsp],xmm6 + movdqa XMMWORD[16+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm7,XMMWORD PTR[r12] + movdqu xmm7,XMMWORD[r12] cmp r14,16 - je $L$xts_dec_1 - pshufd xmm13,xmm14,013h + je NEAR $L$xts_dec_1 + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm1,xmm6 - movdqa XMMWORD PTR[32+rsp],xmm6 + movdqa XMMWORD[32+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm8,XMMWORD PTR[16+r12] + movdqu xmm8,XMMWORD[16+r12] cmp r14,32 - je $L$xts_dec_2 + je NEAR $L$xts_dec_2 pxor xmm15,xmm7 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm2,xmm6 - movdqa XMMWORD PTR[48+rsp],xmm6 + movdqa XMMWORD[48+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm9,XMMWORD PTR[32+r12] + movdqu xmm9,XMMWORD[32+r12] cmp r14,48 - je $L$xts_dec_3 + je NEAR $L$xts_dec_3 pxor xmm0,xmm8 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm3,xmm6 - movdqa XMMWORD PTR[64+rsp],xmm6 + movdqa XMMWORD[64+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm10,XMMWORD PTR[48+r12] + movdqu xmm10,XMMWORD[48+r12] cmp r14,64 - je $L$xts_dec_4 + je NEAR $L$xts_dec_4 pxor xmm1,xmm9 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm4,xmm6 - movdqa XMMWORD PTR[80+rsp],xmm6 + movdqa XMMWORD[80+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm11,XMMWORD PTR[64+r12] + movdqu xmm11,XMMWORD[64+r12] cmp r14,80 - je $L$xts_dec_5 + je NEAR $L$xts_dec_5 pxor xmm2,xmm10 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 pxor xmm14,xmm14 movdqa xmm5,xmm6 - movdqa XMMWORD PTR[96+rsp],xmm6 + movdqa XMMWORD[96+rsp],xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 pcmpgtd xmm14,xmm6 pxor xmm6,xmm13 - movdqu xmm12,XMMWORD PTR[80+r12] + movdqu xmm12,XMMWORD[80+r12] cmp r14,96 - je $L$xts_dec_6 + je NEAR $L$xts_dec_6 pxor xmm3,xmm11 - movdqu xmm13,XMMWORD PTR[96+r12] + movdqu xmm13,XMMWORD[96+r12] pxor xmm4,xmm12 - movdqa XMMWORD PTR[112+rsp],xmm6 - lea r12,QWORD PTR[112+r12] + movdqa XMMWORD[112+rsp],xmm6 + lea r12,[112+r12] pxor xmm5,xmm13 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm3,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm5 - pxor xmm1,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm3 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm1 - pxor xmm2,XMMWORD PTR[96+rsp] - movdqu XMMWORD PTR[80+r13],xmm6 - movdqu XMMWORD PTR[96+r13],xmm2 - lea r13,QWORD PTR[112+r13] - - movdqa xmm6,XMMWORD PTR[112+rsp] - jmp $L$xts_dec_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm3,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm5 + pxor xmm1,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm3 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm1 + pxor xmm2,XMMWORD[96+rsp] + movdqu XMMWORD[80+r13],xmm6 + movdqu XMMWORD[96+r13],xmm2 + lea r13,[112+r13] + + movdqa xmm6,XMMWORD[112+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_6:: +$L$xts_dec_6: pxor xmm3,xmm11 - lea r12,QWORD PTR[96+r12] + lea r12,[96+r12] pxor xmm4,xmm12 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm3,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm5 - pxor xmm1,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm3 - pxor xmm6,XMMWORD PTR[80+rsp] - movdqu XMMWORD PTR[64+r13],xmm1 - movdqu XMMWORD PTR[80+r13],xmm6 - lea r13,QWORD PTR[96+r13] - - movdqa xmm6,XMMWORD PTR[96+rsp] - jmp $L$xts_dec_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm3,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm5 + pxor xmm1,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm3 + pxor xmm6,XMMWORD[80+rsp] + movdqu XMMWORD[64+r13],xmm1 + movdqu XMMWORD[80+r13],xmm6 + lea r13,[96+r13] + + movdqa xmm6,XMMWORD[96+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_5:: +$L$xts_dec_5: pxor xmm2,xmm10 - lea r12,QWORD PTR[80+r12] + lea r12,[80+r12] pxor xmm3,xmm11 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm3,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm5 - pxor xmm1,XMMWORD PTR[64+rsp] - movdqu XMMWORD PTR[48+r13],xmm3 - movdqu XMMWORD PTR[64+r13],xmm1 - lea r13,QWORD PTR[80+r13] - - movdqa xmm6,XMMWORD PTR[80+rsp] - jmp $L$xts_dec_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm3,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm5 + pxor xmm1,XMMWORD[64+rsp] + movdqu XMMWORD[48+r13],xmm3 + movdqu XMMWORD[64+r13],xmm1 + lea r13,[80+r13] + + movdqa xmm6,XMMWORD[80+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_4:: +$L$xts_dec_4: pxor xmm1,xmm9 - lea r12,QWORD PTR[64+r12] + lea r12,[64+r12] pxor xmm2,xmm10 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - pxor xmm3,XMMWORD PTR[48+rsp] - movdqu XMMWORD PTR[32+r13],xmm5 - movdqu XMMWORD PTR[48+r13],xmm3 - lea r13,QWORD PTR[64+r13] - - movdqa xmm6,XMMWORD PTR[64+rsp] - jmp $L$xts_dec_done + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + pxor xmm3,XMMWORD[48+rsp] + movdqu XMMWORD[32+r13],xmm5 + movdqu XMMWORD[48+r13],xmm3 + lea r13,[64+r13] + + movdqa xmm6,XMMWORD[64+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_3:: +$L$xts_dec_3: pxor xmm0,xmm8 - lea r12,QWORD PTR[48+r12] + lea r12,[48+r12] pxor xmm1,xmm9 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - pxor xmm5,XMMWORD PTR[32+rsp] - movdqu XMMWORD PTR[16+r13],xmm0 - movdqu XMMWORD PTR[32+r13],xmm5 - lea r13,QWORD PTR[48+r13] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + pxor xmm5,XMMWORD[32+rsp] + movdqu XMMWORD[16+r13],xmm0 + movdqu XMMWORD[32+r13],xmm5 + lea r13,[48+r13] - movdqa xmm6,XMMWORD PTR[48+rsp] - jmp $L$xts_dec_done + movdqa xmm6,XMMWORD[48+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_2:: +$L$xts_dec_2: pxor xmm15,xmm7 - lea r12,QWORD PTR[32+r12] + lea r12,[32+r12] pxor xmm0,xmm8 - lea rax,QWORD PTR[128+rsp] + lea rax,[128+rsp] mov r10d,edx call _bsaes_decrypt8 - pxor xmm15,XMMWORD PTR[rsp] - pxor xmm0,XMMWORD PTR[16+rsp] - movdqu XMMWORD PTR[r13],xmm15 - movdqu XMMWORD PTR[16+r13],xmm0 - lea r13,QWORD PTR[32+r13] + pxor xmm15,XMMWORD[rsp] + pxor xmm0,XMMWORD[16+rsp] + movdqu XMMWORD[r13],xmm15 + movdqu XMMWORD[16+r13],xmm0 + lea r13,[32+r13] - movdqa xmm6,XMMWORD PTR[32+rsp] - jmp $L$xts_dec_done + movdqa xmm6,XMMWORD[32+rsp] + jmp NEAR $L$xts_dec_done ALIGN 16 -$L$xts_dec_1:: +$L$xts_dec_1: pxor xmm7,xmm15 - lea r12,QWORD PTR[16+r12] - movdqa XMMWORD PTR[32+rbp],xmm7 - lea rcx,QWORD PTR[32+rbp] - lea rdx,QWORD PTR[32+rbp] - lea r8,QWORD PTR[r15] + lea r12,[16+r12] + movdqa XMMWORD[32+rbp],xmm7 + lea rcx,[32+rbp] + lea rdx,[32+rbp] + lea r8,[r15] call asm_AES_decrypt - pxor xmm15,XMMWORD PTR[32+rbp] + pxor xmm15,XMMWORD[32+rbp] - movdqu XMMWORD PTR[r13],xmm15 - lea r13,QWORD PTR[16+r13] + movdqu XMMWORD[r13],xmm15 + lea r13,[16+r13] - movdqa xmm6,XMMWORD PTR[16+rsp] + movdqa xmm6,XMMWORD[16+rsp] -$L$xts_dec_done:: +$L$xts_dec_done: and ebx,15 - jz $L$xts_dec_ret + jz NEAR $L$xts_dec_ret pxor xmm14,xmm14 - movdqa xmm12,XMMWORD PTR[$L$xts_magic] + movdqa xmm12,XMMWORD[$L$xts_magic] pcmpgtd xmm14,xmm6 - pshufd xmm13,xmm14,013h + pshufd xmm13,xmm14,0x13 movdqa xmm5,xmm6 paddq xmm6,xmm6 pand xmm13,xmm12 - movdqu xmm15,XMMWORD PTR[r12] + movdqu xmm15,XMMWORD[r12] pxor xmm6,xmm13 - lea rcx,QWORD PTR[32+rbp] + lea rcx,[32+rbp] pxor xmm15,xmm6 - lea rdx,QWORD PTR[32+rbp] - movdqa XMMWORD PTR[32+rbp],xmm15 - lea r8,QWORD PTR[r15] + lea rdx,[32+rbp] + movdqa XMMWORD[32+rbp],xmm15 + lea r8,[r15] call asm_AES_decrypt - pxor xmm6,XMMWORD PTR[32+rbp] + pxor xmm6,XMMWORD[32+rbp] mov rdx,r13 - movdqu XMMWORD PTR[r13],xmm6 - -$L$xts_dec_steal:: - movzx eax,BYTE PTR[16+r12] - movzx ecx,BYTE PTR[rdx] - lea r12,QWORD PTR[1+r12] - mov BYTE PTR[rdx],al - mov BYTE PTR[16+rdx],cl - lea rdx,QWORD PTR[1+rdx] + movdqu XMMWORD[r13],xmm6 + +$L$xts_dec_steal: + movzx eax,BYTE[16+r12] + movzx ecx,BYTE[rdx] + lea r12,[1+r12] + mov BYTE[rdx],al + mov BYTE[16+rdx],cl + lea rdx,[1+rdx] sub ebx,1 - jnz $L$xts_dec_steal + jnz NEAR $L$xts_dec_steal - movdqu xmm15,XMMWORD PTR[r13] - lea rcx,QWORD PTR[32+rbp] + movdqu xmm15,XMMWORD[r13] + lea rcx,[32+rbp] pxor xmm15,xmm5 - lea rdx,QWORD PTR[32+rbp] - movdqa XMMWORD PTR[32+rbp],xmm15 - lea r8,QWORD PTR[r15] + lea rdx,[32+rbp] + movdqa XMMWORD[32+rbp],xmm15 + lea r8,[r15] call asm_AES_decrypt - pxor xmm5,XMMWORD PTR[32+rbp] - movdqu XMMWORD PTR[r13],xmm5 + pxor xmm5,XMMWORD[32+rbp] + movdqu XMMWORD[r13],xmm5 -$L$xts_dec_ret:: - lea rax,QWORD PTR[rsp] +$L$xts_dec_ret: + lea rax,[rsp] pxor xmm0,xmm0 -$L$xts_dec_bzero:: - movdqa XMMWORD PTR[rax],xmm0 - movdqa XMMWORD PTR[16+rax],xmm0 - lea rax,QWORD PTR[32+rax] +$L$xts_dec_bzero: + movdqa XMMWORD[rax],xmm0 + movdqa XMMWORD[16+rax],xmm0 + lea rax,[32+rax] cmp rbp,rax - ja $L$xts_dec_bzero - - lea rsp,QWORD PTR[rbp] - movaps xmm6,XMMWORD PTR[64+rbp] - movaps xmm7,XMMWORD PTR[80+rbp] - movaps xmm8,XMMWORD PTR[96+rbp] - movaps xmm9,XMMWORD PTR[112+rbp] - movaps xmm10,XMMWORD PTR[128+rbp] - movaps xmm11,XMMWORD PTR[144+rbp] - movaps xmm12,XMMWORD PTR[160+rbp] - movaps xmm13,XMMWORD PTR[176+rbp] - movaps xmm14,XMMWORD PTR[192+rbp] - movaps xmm15,XMMWORD PTR[208+rbp] - lea rsp,QWORD PTR[160+rbp] - mov r15,QWORD PTR[72+rsp] - mov r14,QWORD PTR[80+rsp] - mov r13,QWORD PTR[88+rsp] - mov r12,QWORD PTR[96+rsp] - mov rbx,QWORD PTR[104+rsp] - mov rax,QWORD PTR[112+rsp] - lea rsp,QWORD PTR[120+rsp] + ja NEAR $L$xts_dec_bzero + + lea rsp,[rbp] + movaps xmm6,XMMWORD[64+rbp] + movaps xmm7,XMMWORD[80+rbp] + movaps xmm8,XMMWORD[96+rbp] + movaps xmm9,XMMWORD[112+rbp] + movaps xmm10,XMMWORD[128+rbp] + movaps xmm11,XMMWORD[144+rbp] + movaps xmm12,XMMWORD[160+rbp] + movaps xmm13,XMMWORD[176+rbp] + movaps xmm14,XMMWORD[192+rbp] + movaps xmm15,XMMWORD[208+rbp] + lea rsp,[160+rbp] + mov r15,QWORD[72+rsp] + mov r14,QWORD[80+rsp] + mov r13,QWORD[88+rsp] + mov r12,QWORD[96+rsp] + mov rbx,QWORD[104+rsp] + mov rax,QWORD[112+rsp] + lea rsp,[120+rsp] mov rbp,rax -$L$xts_dec_epilogue:: +$L$xts_dec_epilogue: DB 0F3h,0C3h ;repret -bsaes_xts_decrypt ENDP + ALIGN 64 -_bsaes_const:: -$L$M0ISR:: - DQ 00a0e0206070b0f03h,00004080c0d010509h -$L$ISRM0:: - DQ 001040b0e0205080fh,00306090c00070a0dh -$L$ISR:: - DQ 00504070602010003h,00f0e0d0c080b0a09h -$L$BS0:: - DQ 05555555555555555h,05555555555555555h -$L$BS1:: - DQ 03333333333333333h,03333333333333333h -$L$BS2:: - DQ 00f0f0f0f0f0f0f0fh,00f0f0f0f0f0f0f0fh -$L$SR:: - DQ 00504070600030201h,00f0e0d0c0a09080bh -$L$SRM0:: - DQ 00304090e00050a0fh,001060b0c0207080dh -$L$M0SR:: - DQ 00a0e02060f03070bh,00004080c05090d01h -$L$SWPUP:: - DQ 00706050403020100h,00c0d0e0f0b0a0908h -$L$SWPUPM0SR:: - DQ 00a0d02060c03070bh,00004080f05090e01h -$L$ADD1:: - DQ 00000000000000000h,00000000100000000h -$L$ADD2:: - DQ 00000000000000000h,00000000200000000h -$L$ADD3:: - DQ 00000000000000000h,00000000300000000h -$L$ADD4:: - DQ 00000000000000000h,00000000400000000h -$L$ADD5:: - DQ 00000000000000000h,00000000500000000h -$L$ADD6:: - DQ 00000000000000000h,00000000600000000h -$L$ADD7:: - DQ 00000000000000000h,00000000700000000h -$L$ADD8:: - DQ 00000000000000000h,00000000800000000h -$L$xts_magic:: - DD 087h,0,1,0 -$L$masks:: - DQ 00101010101010101h,00101010101010101h - DQ 00202020202020202h,00202020202020202h - DQ 00404040404040404h,00404040404040404h - DQ 00808080808080808h,00808080808080808h -$L$M0:: - DQ 002060a0e03070b0fh,00004080c0105090dh -$L$63:: - DQ 06363636363636363h,06363636363636363h +_bsaes_const: +$L$M0ISR: + DQ 0x0a0e0206070b0f03,0x0004080c0d010509 +$L$ISRM0: + DQ 0x01040b0e0205080f,0x0306090c00070a0d +$L$ISR: + DQ 0x0504070602010003,0x0f0e0d0c080b0a09 +$L$BS0: + DQ 0x5555555555555555,0x5555555555555555 +$L$BS1: + DQ 0x3333333333333333,0x3333333333333333 +$L$BS2: + DQ 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f +$L$SR: + DQ 0x0504070600030201,0x0f0e0d0c0a09080b +$L$SRM0: + DQ 0x0304090e00050a0f,0x01060b0c0207080d +$L$M0SR: + DQ 0x0a0e02060f03070b,0x0004080c05090d01 +$L$SWPUP: + DQ 0x0706050403020100,0x0c0d0e0f0b0a0908 +$L$SWPUPM0SR: + DQ 0x0a0d02060c03070b,0x0004080f05090e01 +$L$ADD1: + DQ 0x0000000000000000,0x0000000100000000 +$L$ADD2: + DQ 0x0000000000000000,0x0000000200000000 +$L$ADD3: + DQ 0x0000000000000000,0x0000000300000000 +$L$ADD4: + DQ 0x0000000000000000,0x0000000400000000 +$L$ADD5: + DQ 0x0000000000000000,0x0000000500000000 +$L$ADD6: + DQ 0x0000000000000000,0x0000000600000000 +$L$ADD7: + DQ 0x0000000000000000,0x0000000700000000 +$L$ADD8: + DQ 0x0000000000000000,0x0000000800000000 +$L$xts_magic: + DD 0x87,0,1,0 +$L$masks: + DQ 0x0101010101010101,0x0101010101010101 + DQ 0x0202020202020202,0x0202020202020202 + DQ 0x0404040404040404,0x0404040404040404 + DQ 0x0808080808080808,0x0808080808080808 +$L$M0: + DQ 0x02060a0e03070b0f,0x0004080c0105090d +$L$63: + DQ 0x6363636363636363,0x6363636363636363 DB 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102 DB 111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44 DB 32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44 @@ -2600,10 +2604,10 @@ DB 32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32 DB 65,110,100,121,32,80,111,108,121,97,107,111,118,0 ALIGN 64 -EXTERN __imp_RtlVirtualUnwind:NEAR +EXTERN __imp_RtlVirtualUnwind ALIGN 16 -se_handler PROC PRIVATE +se_handler: push rsi push rdi push rbx @@ -2615,67 +2619,67 @@ se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$in_prologue + jb NEAR $L$in_prologue - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$in_prologue + jae NEAR $L$in_prologue - mov rax,QWORD PTR[160+r8] + mov rax,QWORD[160+r8] - lea rsi,QWORD PTR[64+rax] - lea rdi,QWORD PTR[512+r8] + lea rsi,[64+rax] + lea rdi,[512+r8] mov ecx,20 - DD 0a548f3fch - lea rax,QWORD PTR[160+rax] - - mov rbp,QWORD PTR[112+rax] - mov rbx,QWORD PTR[104+rax] - mov r12,QWORD PTR[96+rax] - mov r13,QWORD PTR[88+rax] - mov r14,QWORD PTR[80+rax] - mov r15,QWORD PTR[72+rax] - lea rax,QWORD PTR[120+rax] - mov QWORD PTR[144+r8],rbx - mov QWORD PTR[160+r8],rbp - mov QWORD PTR[216+r8],r12 - mov QWORD PTR[224+r8],r13 - mov QWORD PTR[232+r8],r14 - mov QWORD PTR[240+r8],r15 - -$L$in_prologue:: - mov QWORD PTR[152+r8],rax - - mov rdi,QWORD PTR[40+r9] + DD 0xa548f3fc + lea rax,[160+rax] + + mov rbp,QWORD[112+rax] + mov rbx,QWORD[104+rax] + mov r12,QWORD[96+rax] + mov r13,QWORD[88+rax] + mov r14,QWORD[80+rax] + mov r15,QWORD[72+rax] + lea rax,[120+rax] + mov QWORD[144+r8],rbx + mov QWORD[160+r8],rbp + mov QWORD[216+r8],r12 + mov QWORD[224+r8],r13 + mov QWORD[232+r8],r14 + mov QWORD[240+r8],r15 + +$L$in_prologue: + mov QWORD[152+r8],rax + + mov rdi,QWORD[40+r9] mov rsi,r8 mov ecx,154 - DD 0a548f3fch + DD 0xa548f3fc mov rsi,r9 xor rcx,rcx - mov rdx,QWORD PTR[8+rsi] - mov r8,QWORD PTR[rsi] - mov r9,QWORD PTR[16+rsi] - mov r10,QWORD PTR[40+rsi] - lea r11,QWORD PTR[56+rsi] - lea r12,QWORD PTR[24+rsi] - mov QWORD PTR[32+rsp],r10 - mov QWORD PTR[40+rsp],r11 - mov QWORD PTR[48+rsp],r12 - mov QWORD PTR[56+rsp],rcx - call QWORD PTR[__imp_RtlVirtualUnwind] + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] mov eax,1 add rsp,64 @@ -2689,46 +2693,41 @@ $L$in_prologue:: pop rdi pop rsi DB 0F3h,0C3h ;repret -se_handler ENDP -.text$ ENDS -.pdata SEGMENT READONLY ALIGN(4) + +section .pdata rdata align=4 ALIGN 4 - DD imagerel $L$cbc_dec_prologue - DD imagerel $L$cbc_dec_epilogue - DD imagerel $L$cbc_dec_info + DD $L$cbc_dec_prologue wrt ..imagebase + DD $L$cbc_dec_epilogue wrt ..imagebase + DD $L$cbc_dec_info wrt ..imagebase - DD imagerel $L$ctr_enc_prologue - DD imagerel $L$ctr_enc_epilogue - DD imagerel $L$ctr_enc_info + DD $L$ctr_enc_prologue wrt ..imagebase + DD $L$ctr_enc_epilogue wrt ..imagebase + DD $L$ctr_enc_info wrt ..imagebase - DD imagerel $L$xts_enc_prologue - DD imagerel $L$xts_enc_epilogue - DD imagerel $L$xts_enc_info + DD $L$xts_enc_prologue wrt ..imagebase + DD $L$xts_enc_epilogue wrt ..imagebase + DD $L$xts_enc_info wrt ..imagebase - DD imagerel $L$xts_dec_prologue - DD imagerel $L$xts_dec_epilogue - DD imagerel $L$xts_dec_info + DD $L$xts_dec_prologue wrt ..imagebase + DD $L$xts_dec_epilogue wrt ..imagebase + DD $L$xts_dec_info wrt ..imagebase -.pdata ENDS -.xdata SEGMENT READONLY ALIGN(8) +section .xdata rdata align=8 ALIGN 8 -$L$cbc_dec_info:: +$L$cbc_dec_info: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$cbc_dec_body,imagerel $L$cbc_dec_epilogue -$L$ctr_enc_info:: + DD se_handler wrt ..imagebase + DD $L$cbc_dec_body wrt ..imagebase,$L$cbc_dec_epilogue wrt ..imagebase +$L$ctr_enc_info: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$ctr_enc_body,imagerel $L$ctr_enc_epilogue -$L$xts_enc_info:: + DD se_handler wrt ..imagebase + DD $L$ctr_enc_body wrt ..imagebase,$L$ctr_enc_epilogue wrt ..imagebase +$L$xts_enc_info: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue -$L$xts_dec_info:: + DD se_handler wrt ..imagebase + DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase +$L$xts_dec_info: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue - -.xdata ENDS -END + DD se_handler wrt ..imagebase + DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase diff --git a/win-x86_64/crypto/aes/vpaes-x86_64.asm b/win-x86_64/crypto/aes/vpaes-x86_64.asm index 292f64d..3edde9f 100644 --- a/win-x86_64/crypto/aes/vpaes-x86_64.asm +++ b/win-x86_64/crypto/aes/vpaes-x86_64.asm @@ -1,5 +1,9 @@ -OPTION DOTNAME -.text$ SEGMENT ALIGN(256) 'CODE' +default rel +%define XMMWORD +%define YMMWORD +%define ZMMWORD +section .text code align=64 + @@ -18,27 +22,27 @@ OPTION DOTNAME ALIGN 16 -_vpaes_encrypt_core PROC PRIVATE +_vpaes_encrypt_core: mov r9,rdx mov r11,16 - mov eax,DWORD PTR[240+rdx] + mov eax,DWORD[240+rdx] movdqa xmm1,xmm9 - movdqa xmm2,XMMWORD PTR[$L$k_ipt] + movdqa xmm2,XMMWORD[$L$k_ipt] pandn xmm1,xmm0 - movdqu xmm5,XMMWORD PTR[r9] + movdqu xmm5,XMMWORD[r9] psrld xmm1,4 pand xmm0,xmm9 DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR[(($L$k_ipt+16))] + movdqa xmm0,XMMWORD[(($L$k_ipt+16))] DB 102,15,56,0,193 pxor xmm2,xmm5 add r9,16 pxor xmm0,xmm2 - lea r10,QWORD PTR[$L$k_mc_backward] - jmp $L$enc_entry + lea r10,[$L$k_mc_backward] + jmp NEAR $L$enc_entry ALIGN 16 -$L$enc_loop:: +$L$enc_loop: movdqa xmm4,xmm13 movdqa xmm0,xmm12 @@ -47,9 +51,9 @@ DB 102,15,56,0,195 pxor xmm4,xmm5 movdqa xmm5,xmm15 pxor xmm0,xmm4 - movdqa xmm1,XMMWORD PTR[((-64))+r10*1+r11] + movdqa xmm1,XMMWORD[((-64))+r10*1+r11] DB 102,15,56,0,234 - movdqa xmm4,XMMWORD PTR[r10*1+r11] + movdqa xmm4,XMMWORD[r10*1+r11] movdqa xmm2,xmm14 DB 102,15,56,0,211 movdqa xmm3,xmm0 @@ -61,11 +65,11 @@ DB 102,15,56,0,220 add r11,16 pxor xmm3,xmm0 DB 102,15,56,0,193 - and r11,030h + and r11,0x30 sub rax,1 pxor xmm0,xmm3 -$L$enc_entry:: +$L$enc_entry: movdqa xmm1,xmm9 movdqa xmm5,xmm11 @@ -85,21 +89,21 @@ DB 102,15,56,0,211 movdqa xmm3,xmm10 pxor xmm2,xmm0 DB 102,15,56,0,220 - movdqu xmm5,XMMWORD PTR[r9] + movdqu xmm5,XMMWORD[r9] pxor xmm3,xmm1 - jnz $L$enc_loop + jnz NEAR $L$enc_loop - movdqa xmm4,XMMWORD PTR[((-96))+r10] - movdqa xmm0,XMMWORD PTR[((-80))+r10] + movdqa xmm4,XMMWORD[((-96))+r10] + movdqa xmm0,XMMWORD[((-80))+r10] DB 102,15,56,0,226 pxor xmm4,xmm5 DB 102,15,56,0,195 - movdqa xmm1,XMMWORD PTR[64+r10*1+r11] + movdqa xmm1,XMMWORD[64+r10*1+r11] pxor xmm0,xmm4 DB 102,15,56,0,193 DB 0F3h,0C3h ;repret -_vpaes_encrypt_core ENDP + @@ -108,59 +112,59 @@ _vpaes_encrypt_core ENDP ALIGN 16 -_vpaes_decrypt_core PROC PRIVATE +_vpaes_decrypt_core: mov r9,rdx - mov eax,DWORD PTR[240+rdx] + mov eax,DWORD[240+rdx] movdqa xmm1,xmm9 - movdqa xmm2,XMMWORD PTR[$L$k_dipt] + movdqa xmm2,XMMWORD[$L$k_dipt] pandn xmm1,xmm0 mov r11,rax psrld xmm1,4 - movdqu xmm5,XMMWORD PTR[r9] + movdqu xmm5,XMMWORD[r9] shl r11,4 pand xmm0,xmm9 DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR[(($L$k_dipt+16))] - xor r11,030h - lea r10,QWORD PTR[$L$k_dsbd] + movdqa xmm0,XMMWORD[(($L$k_dipt+16))] + xor r11,0x30 + lea r10,[$L$k_dsbd] DB 102,15,56,0,193 - and r11,030h + and r11,0x30 pxor xmm2,xmm5 - movdqa xmm5,XMMWORD PTR[(($L$k_mc_forward+48))] + movdqa xmm5,XMMWORD[(($L$k_mc_forward+48))] pxor xmm0,xmm2 add r9,16 add r11,r10 - jmp $L$dec_entry + jmp NEAR $L$dec_entry ALIGN 16 -$L$dec_loop:: +$L$dec_loop: - movdqa xmm4,XMMWORD PTR[((-32))+r10] - movdqa xmm1,XMMWORD PTR[((-16))+r10] + movdqa xmm4,XMMWORD[((-32))+r10] + movdqa xmm1,XMMWORD[((-16))+r10] DB 102,15,56,0,226 DB 102,15,56,0,203 pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR[r10] + movdqa xmm4,XMMWORD[r10] pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR[16+r10] + movdqa xmm1,XMMWORD[16+r10] DB 102,15,56,0,226 DB 102,15,56,0,197 DB 102,15,56,0,203 pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR[32+r10] + movdqa xmm4,XMMWORD[32+r10] pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR[48+r10] + movdqa xmm1,XMMWORD[48+r10] DB 102,15,56,0,226 DB 102,15,56,0,197 DB 102,15,56,0,203 pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR[64+r10] + movdqa xmm4,XMMWORD[64+r10] pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR[80+r10] + movdqa xmm1,XMMWORD[80+r10] DB 102,15,56,0,226 DB 102,15,56,0,197 @@ -171,7 +175,7 @@ DB 102,15,58,15,237,12 pxor xmm0,xmm1 sub rax,1 -$L$dec_entry:: +$L$dec_entry: movdqa xmm1,xmm9 pandn xmm1,xmm0 @@ -191,21 +195,21 @@ DB 102,15,56,0,211 movdqa xmm3,xmm10 pxor xmm2,xmm0 DB 102,15,56,0,220 - movdqu xmm0,XMMWORD PTR[r9] + movdqu xmm0,XMMWORD[r9] pxor xmm3,xmm1 - jnz $L$dec_loop + jnz NEAR $L$dec_loop - movdqa xmm4,XMMWORD PTR[96+r10] + movdqa xmm4,XMMWORD[96+r10] DB 102,15,56,0,226 pxor xmm4,xmm0 - movdqa xmm0,XMMWORD PTR[112+r10] - movdqa xmm2,XMMWORD PTR[((-352))+r11] + movdqa xmm0,XMMWORD[112+r10] + movdqa xmm2,XMMWORD[((-352))+r11] DB 102,15,56,0,195 pxor xmm0,xmm4 DB 102,15,56,0,194 DB 0F3h,0C3h ;repret -_vpaes_decrypt_core ENDP + @@ -214,41 +218,41 @@ _vpaes_decrypt_core ENDP ALIGN 16 -_vpaes_schedule_core PROC PRIVATE +_vpaes_schedule_core: call _vpaes_preheat - movdqa xmm8,XMMWORD PTR[$L$k_rcon] - movdqu xmm0,XMMWORD PTR[rdi] + movdqa xmm8,XMMWORD[$L$k_rcon] + movdqu xmm0,XMMWORD[rdi] movdqa xmm3,xmm0 - lea r11,QWORD PTR[$L$k_ipt] + lea r11,[$L$k_ipt] call _vpaes_schedule_transform movdqa xmm7,xmm0 - lea r10,QWORD PTR[$L$k_sr] + lea r10,[$L$k_sr] test rcx,rcx - jnz $L$schedule_am_decrypting + jnz NEAR $L$schedule_am_decrypting - movdqu XMMWORD PTR[rdx],xmm0 - jmp $L$schedule_go + movdqu XMMWORD[rdx],xmm0 + jmp NEAR $L$schedule_go -$L$schedule_am_decrypting:: +$L$schedule_am_decrypting: - movdqa xmm1,XMMWORD PTR[r10*1+r8] + movdqa xmm1,XMMWORD[r10*1+r8] DB 102,15,56,0,217 - movdqu XMMWORD PTR[rdx],xmm3 - xor r8,030h + movdqu XMMWORD[rdx],xmm3 + xor r8,0x30 -$L$schedule_go:: +$L$schedule_go: cmp esi,192 - ja $L$schedule_256 - je $L$schedule_192 + ja NEAR $L$schedule_256 + je NEAR $L$schedule_192 @@ -259,15 +263,15 @@ $L$schedule_go:: -$L$schedule_128:: +$L$schedule_128: mov esi,10 -$L$oop_schedule_128:: +$L$oop_schedule_128: call _vpaes_schedule_round dec rsi - jz $L$schedule_mangle_last + jz NEAR $L$schedule_mangle_last call _vpaes_schedule_mangle - jmp $L$oop_schedule_128 + jmp NEAR $L$oop_schedule_128 @@ -285,15 +289,15 @@ $L$oop_schedule_128:: ALIGN 16 -$L$schedule_192:: - movdqu xmm0,XMMWORD PTR[8+rdi] +$L$schedule_192: + movdqu xmm0,XMMWORD[8+rdi] call _vpaes_schedule_transform movdqa xmm6,xmm0 pxor xmm4,xmm4 movhlps xmm6,xmm4 mov esi,4 -$L$oop_schedule_192:: +$L$oop_schedule_192: call _vpaes_schedule_round DB 102,15,58,15,198,8 call _vpaes_schedule_mangle @@ -301,10 +305,10 @@ DB 102,15,58,15,198,8 call _vpaes_schedule_mangle call _vpaes_schedule_round dec rsi - jz $L$schedule_mangle_last + jz NEAR $L$schedule_mangle_last call _vpaes_schedule_mangle call _vpaes_schedule_192_smear - jmp $L$oop_schedule_192 + jmp NEAR $L$oop_schedule_192 @@ -317,29 +321,29 @@ DB 102,15,58,15,198,8 ALIGN 16 -$L$schedule_256:: - movdqu xmm0,XMMWORD PTR[16+rdi] +$L$schedule_256: + movdqu xmm0,XMMWORD[16+rdi] call _vpaes_schedule_transform mov esi,7 -$L$oop_schedule_256:: +$L$oop_schedule_256: call _vpaes_schedule_mangle movdqa xmm6,xmm0 call _vpaes_schedule_round dec rsi - jz $L$schedule_mangle_last + jz NEAR $L$schedule_mangle_last call _vpaes_schedule_mangle - pshufd xmm0,xmm0,0FFh + pshufd xmm0,xmm0,0xFF movdqa xmm5,xmm7 movdqa xmm7,xmm6 call _vpaes_schedule_low_round movdqa xmm7,xmm5 - jmp $L$oop_schedule_256 + jmp NEAR $L$oop_schedule_256 @@ -353,23 +357,23 @@ $L$oop_schedule_256:: ALIGN 16 -$L$schedule_mangle_last:: +$L$schedule_mangle_last: - lea r11,QWORD PTR[$L$k_deskew] + lea r11,[$L$k_deskew] test rcx,rcx - jnz $L$schedule_mangle_last_dec + jnz NEAR $L$schedule_mangle_last_dec - movdqa xmm1,XMMWORD PTR[r10*1+r8] + movdqa xmm1,XMMWORD[r10*1+r8] DB 102,15,56,0,193 - lea r11,QWORD PTR[$L$k_opt] + lea r11,[$L$k_opt] add rdx,32 -$L$schedule_mangle_last_dec:: +$L$schedule_mangle_last_dec: add rdx,-16 - pxor xmm0,XMMWORD PTR[$L$k_s63] + pxor xmm0,XMMWORD[$L$k_s63] call _vpaes_schedule_transform - movdqu XMMWORD PTR[rdx],xmm0 + movdqu XMMWORD[rdx],xmm0 pxor xmm0,xmm0 @@ -381,7 +385,7 @@ $L$schedule_mangle_last_dec:: pxor xmm6,xmm6 pxor xmm7,xmm7 DB 0F3h,0C3h ;repret -_vpaes_schedule_core ENDP + @@ -399,16 +403,16 @@ _vpaes_schedule_core ENDP ALIGN 16 -_vpaes_schedule_192_smear PROC PRIVATE - pshufd xmm1,xmm6,080h - pshufd xmm0,xmm7,0FEh +_vpaes_schedule_192_smear: + pshufd xmm1,xmm6,0x80 + pshufd xmm0,xmm7,0xFE pxor xmm6,xmm1 pxor xmm1,xmm1 pxor xmm6,xmm0 movdqa xmm0,xmm6 movhlps xmm6,xmm1 DB 0F3h,0C3h ;repret -_vpaes_schedule_192_smear ENDP + @@ -430,7 +434,7 @@ _vpaes_schedule_192_smear ENDP ALIGN 16 -_vpaes_schedule_round PROC PRIVATE +_vpaes_schedule_round: pxor xmm1,xmm1 DB 102,65,15,58,15,200,15 @@ -438,13 +442,13 @@ DB 102,69,15,58,15,192,15 pxor xmm7,xmm1 - pshufd xmm0,xmm0,0FFh + pshufd xmm0,xmm0,0xFF DB 102,15,58,15,192,1 -_vpaes_schedule_low_round:: +_vpaes_schedule_low_round: movdqa xmm1,xmm7 pslldq xmm7,4 @@ -452,7 +456,7 @@ _vpaes_schedule_low_round:: movdqa xmm1,xmm7 pslldq xmm7,8 pxor xmm7,xmm1 - pxor xmm7,XMMWORD PTR[$L$k_s63] + pxor xmm7,XMMWORD[$L$k_s63] movdqa xmm1,xmm9 @@ -484,7 +488,7 @@ DB 102,15,56,0,195 pxor xmm0,xmm7 movdqa xmm7,xmm0 DB 0F3h,0C3h ;repret -_vpaes_schedule_round ENDP + @@ -497,18 +501,18 @@ _vpaes_schedule_round ENDP ALIGN 16 -_vpaes_schedule_transform PROC PRIVATE +_vpaes_schedule_transform: movdqa xmm1,xmm9 pandn xmm1,xmm0 psrld xmm1,4 pand xmm0,xmm9 - movdqa xmm2,XMMWORD PTR[r11] + movdqa xmm2,XMMWORD[r11] DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR[16+r11] + movdqa xmm0,XMMWORD[16+r11] DB 102,15,56,0,193 pxor xmm0,xmm2 DB 0F3h,0C3h ;repret -_vpaes_schedule_transform ENDP + @@ -535,15 +539,15 @@ _vpaes_schedule_transform ENDP ALIGN 16 -_vpaes_schedule_mangle PROC PRIVATE +_vpaes_schedule_mangle: movdqa xmm4,xmm0 - movdqa xmm5,XMMWORD PTR[$L$k_mc_forward] + movdqa xmm5,XMMWORD[$L$k_mc_forward] test rcx,rcx - jnz $L$schedule_mangle_dec + jnz NEAR $L$schedule_mangle_dec add rdx,16 - pxor xmm4,XMMWORD PTR[$L$k_s63] + pxor xmm4,XMMWORD[$L$k_s63] DB 102,15,56,0,229 movdqa xmm3,xmm4 DB 102,15,56,0,229 @@ -551,143 +555,142 @@ DB 102,15,56,0,229 DB 102,15,56,0,229 pxor xmm3,xmm4 - jmp $L$schedule_mangle_both + jmp NEAR $L$schedule_mangle_both ALIGN 16 -$L$schedule_mangle_dec:: +$L$schedule_mangle_dec: - lea r11,QWORD PTR[$L$k_dksd] + lea r11,[$L$k_dksd] movdqa xmm1,xmm9 pandn xmm1,xmm4 psrld xmm1,4 pand xmm4,xmm9 - movdqa xmm2,XMMWORD PTR[r11] + movdqa xmm2,XMMWORD[r11] DB 102,15,56,0,212 - movdqa xmm3,XMMWORD PTR[16+r11] + movdqa xmm3,XMMWORD[16+r11] DB 102,15,56,0,217 pxor xmm3,xmm2 DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR[32+r11] + movdqa xmm2,XMMWORD[32+r11] DB 102,15,56,0,212 pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR[48+r11] + movdqa xmm3,XMMWORD[48+r11] DB 102,15,56,0,217 pxor xmm3,xmm2 DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR[64+r11] + movdqa xmm2,XMMWORD[64+r11] DB 102,15,56,0,212 pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR[80+r11] + movdqa xmm3,XMMWORD[80+r11] DB 102,15,56,0,217 pxor xmm3,xmm2 DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR[96+r11] + movdqa xmm2,XMMWORD[96+r11] DB 102,15,56,0,212 pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR[112+r11] + movdqa xmm3,XMMWORD[112+r11] DB 102,15,56,0,217 pxor xmm3,xmm2 add rdx,-16 -$L$schedule_mangle_both:: - movdqa xmm1,XMMWORD PTR[r10*1+r8] +$L$schedule_mangle_both: + movdqa xmm1,XMMWORD[r10*1+r8] DB 102,15,56,0,217 add r8,-16 - and r8,030h - movdqu XMMWORD PTR[rdx],xmm3 + and r8,0x30 + movdqu XMMWORD[rdx],xmm3 DB 0F3h,0C3h ;repret -_vpaes_schedule_mangle ENDP -PUBLIC vpaes_set_encrypt_key + +global vpaes_set_encrypt_key ALIGN 16 -vpaes_set_encrypt_key PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +vpaes_set_encrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_vpaes_set_encrypt_key:: +$L$SEH_begin_vpaes_set_encrypt_key: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rsp,QWORD PTR[((-184))+rsp] - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$enc_key_body:: + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$enc_key_body: mov eax,esi shr eax,5 add eax,5 - mov DWORD PTR[240+rdx],eax + mov DWORD[240+rdx],eax mov ecx,0 - mov r8d,030h + mov r8d,0x30 call _vpaes_schedule_core - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[184+rsp] -$L$enc_key_epilogue:: + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$enc_key_epilogue: xor eax,eax - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_vpaes_set_encrypt_key:: -vpaes_set_encrypt_key ENDP +$L$SEH_end_vpaes_set_encrypt_key: -PUBLIC vpaes_set_decrypt_key +global vpaes_set_decrypt_key ALIGN 16 -vpaes_set_decrypt_key PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +vpaes_set_decrypt_key: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_vpaes_set_decrypt_key:: +$L$SEH_begin_vpaes_set_decrypt_key: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rsp,QWORD PTR[((-184))+rsp] - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$dec_key_body:: + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$dec_key_body: mov eax,esi shr eax,5 add eax,5 - mov DWORD PTR[240+rdx],eax + mov DWORD[240+rdx],eax shl eax,4 - lea rdx,QWORD PTR[16+rax*1+rdx] + lea rdx,[16+rax*1+rdx] mov ecx,1 mov r8d,esi @@ -695,197 +698,193 @@ $L$dec_key_body:: and r8d,32 xor r8d,32 call _vpaes_schedule_core - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[184+rsp] -$L$dec_key_epilogue:: + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$dec_key_epilogue: xor eax,eax - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_vpaes_set_decrypt_key:: -vpaes_set_decrypt_key ENDP +$L$SEH_end_vpaes_set_decrypt_key: -PUBLIC vpaes_encrypt +global vpaes_encrypt ALIGN 16 -vpaes_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +vpaes_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_vpaes_encrypt:: +$L$SEH_begin_vpaes_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rsp,QWORD PTR[((-184))+rsp] - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$enc_body:: - movdqu xmm0,XMMWORD PTR[rdi] + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$enc_body: + movdqu xmm0,XMMWORD[rdi] call _vpaes_preheat call _vpaes_encrypt_core - movdqu XMMWORD PTR[rsi],xmm0 - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[184+rsp] -$L$enc_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + movdqu XMMWORD[rsi],xmm0 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$enc_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_vpaes_encrypt:: -vpaes_encrypt ENDP +$L$SEH_end_vpaes_encrypt: -PUBLIC vpaes_decrypt +global vpaes_decrypt ALIGN 16 -vpaes_decrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +vpaes_decrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_vpaes_decrypt:: +$L$SEH_begin_vpaes_decrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 - lea rsp,QWORD PTR[((-184))+rsp] - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$dec_body:: - movdqu xmm0,XMMWORD PTR[rdi] + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$dec_body: + movdqu xmm0,XMMWORD[rdi] call _vpaes_preheat call _vpaes_decrypt_core - movdqu XMMWORD PTR[rsi],xmm0 - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[184+rsp] -$L$dec_epilogue:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + movdqu XMMWORD[rsi],xmm0 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$dec_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_vpaes_decrypt:: -vpaes_decrypt ENDP -PUBLIC vpaes_cbc_encrypt +$L$SEH_end_vpaes_decrypt: +global vpaes_cbc_encrypt ALIGN 16 -vpaes_cbc_encrypt PROC PUBLIC - mov QWORD PTR[8+rsp],rdi ;WIN64 prologue - mov QWORD PTR[16+rsp],rsi +vpaes_cbc_encrypt: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi mov rax,rsp -$L$SEH_begin_vpaes_cbc_encrypt:: +$L$SEH_begin_vpaes_cbc_encrypt: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 - mov r8,QWORD PTR[40+rsp] - mov r9,QWORD PTR[48+rsp] + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] xchg rdx,rcx sub rcx,16 - jc $L$cbc_abort - lea rsp,QWORD PTR[((-184))+rsp] - movaps XMMWORD PTR[16+rsp],xmm6 - movaps XMMWORD PTR[32+rsp],xmm7 - movaps XMMWORD PTR[48+rsp],xmm8 - movaps XMMWORD PTR[64+rsp],xmm9 - movaps XMMWORD PTR[80+rsp],xmm10 - movaps XMMWORD PTR[96+rsp],xmm11 - movaps XMMWORD PTR[112+rsp],xmm12 - movaps XMMWORD PTR[128+rsp],xmm13 - movaps XMMWORD PTR[144+rsp],xmm14 - movaps XMMWORD PTR[160+rsp],xmm15 -$L$cbc_body:: - movdqu xmm6,XMMWORD PTR[r8] + jc NEAR $L$cbc_abort + lea rsp,[((-184))+rsp] + movaps XMMWORD[16+rsp],xmm6 + movaps XMMWORD[32+rsp],xmm7 + movaps XMMWORD[48+rsp],xmm8 + movaps XMMWORD[64+rsp],xmm9 + movaps XMMWORD[80+rsp],xmm10 + movaps XMMWORD[96+rsp],xmm11 + movaps XMMWORD[112+rsp],xmm12 + movaps XMMWORD[128+rsp],xmm13 + movaps XMMWORD[144+rsp],xmm14 + movaps XMMWORD[160+rsp],xmm15 +$L$cbc_body: + movdqu xmm6,XMMWORD[r8] sub rsi,rdi call _vpaes_preheat cmp r9d,0 - je $L$cbc_dec_loop - jmp $L$cbc_enc_loop + je NEAR $L$cbc_dec_loop + jmp NEAR $L$cbc_enc_loop ALIGN 16 -$L$cbc_enc_loop:: - movdqu xmm0,XMMWORD PTR[rdi] +$L$cbc_enc_loop: + movdqu xmm0,XMMWORD[rdi] pxor xmm0,xmm6 call _vpaes_encrypt_core movdqa xmm6,xmm0 - movdqu XMMWORD PTR[rdi*1+rsi],xmm0 - lea rdi,QWORD PTR[16+rdi] + movdqu XMMWORD[rdi*1+rsi],xmm0 + lea rdi,[16+rdi] sub rcx,16 - jnc $L$cbc_enc_loop - jmp $L$cbc_done + jnc NEAR $L$cbc_enc_loop + jmp NEAR $L$cbc_done ALIGN 16 -$L$cbc_dec_loop:: - movdqu xmm0,XMMWORD PTR[rdi] +$L$cbc_dec_loop: + movdqu xmm0,XMMWORD[rdi] movdqa xmm7,xmm0 call _vpaes_decrypt_core pxor xmm0,xmm6 movdqa xmm6,xmm7 - movdqu XMMWORD PTR[rdi*1+rsi],xmm0 - lea rdi,QWORD PTR[16+rdi] + movdqu XMMWORD[rdi*1+rsi],xmm0 + lea rdi,[16+rdi] sub rcx,16 - jnc $L$cbc_dec_loop -$L$cbc_done:: - movdqu XMMWORD PTR[r8],xmm6 - movaps xmm6,XMMWORD PTR[16+rsp] - movaps xmm7,XMMWORD PTR[32+rsp] - movaps xmm8,XMMWORD PTR[48+rsp] - movaps xmm9,XMMWORD PTR[64+rsp] - movaps xmm10,XMMWORD PTR[80+rsp] - movaps xmm11,XMMWORD PTR[96+rsp] - movaps xmm12,XMMWORD PTR[112+rsp] - movaps xmm13,XMMWORD PTR[128+rsp] - movaps xmm14,XMMWORD PTR[144+rsp] - movaps xmm15,XMMWORD PTR[160+rsp] - lea rsp,QWORD PTR[184+rsp] -$L$cbc_epilogue:: -$L$cbc_abort:: - mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue - mov rsi,QWORD PTR[16+rsp] + jnc NEAR $L$cbc_dec_loop +$L$cbc_done: + movdqu XMMWORD[r8],xmm6 + movaps xmm6,XMMWORD[16+rsp] + movaps xmm7,XMMWORD[32+rsp] + movaps xmm8,XMMWORD[48+rsp] + movaps xmm9,XMMWORD[64+rsp] + movaps xmm10,XMMWORD[80+rsp] + movaps xmm11,XMMWORD[96+rsp] + movaps xmm12,XMMWORD[112+rsp] + movaps xmm13,XMMWORD[128+rsp] + movaps xmm14,XMMWORD[144+rsp] + movaps xmm15,XMMWORD[160+rsp] + lea rsp,[184+rsp] +$L$cbc_epilogue: +$L$cbc_abort: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] DB 0F3h,0C3h ;repret -$L$SEH_end_vpaes_cbc_encrypt:: -vpaes_cbc_encrypt ENDP +$L$SEH_end_vpaes_cbc_encrypt: @@ -894,17 +893,17 @@ vpaes_cbc_encrypt ENDP ALIGN 16 -_vpaes_preheat PROC PRIVATE - lea r10,QWORD PTR[$L$k_s0F] - movdqa xmm10,XMMWORD PTR[((-32))+r10] - movdqa xmm11,XMMWORD PTR[((-16))+r10] - movdqa xmm9,XMMWORD PTR[r10] - movdqa xmm13,XMMWORD PTR[48+r10] - movdqa xmm12,XMMWORD PTR[64+r10] - movdqa xmm15,XMMWORD PTR[80+r10] - movdqa xmm14,XMMWORD PTR[96+r10] +_vpaes_preheat: + lea r10,[$L$k_s0F] + movdqa xmm10,XMMWORD[((-32))+r10] + movdqa xmm11,XMMWORD[((-16))+r10] + movdqa xmm9,XMMWORD[r10] + movdqa xmm13,XMMWORD[48+r10] + movdqa xmm12,XMMWORD[64+r10] + movdqa xmm15,XMMWORD[80+r10] + movdqa xmm14,XMMWORD[96+r10] DB 0F3h,0C3h ;repret -_vpaes_preheat ENDP + @@ -912,100 +911,100 @@ _vpaes_preheat ENDP ALIGN 64 -_vpaes_consts:: -$L$k_inv:: - DQ 00E05060F0D080180h,0040703090A0B0C02h - DQ 001040A060F0B0780h,0030D0E0C02050809h - -$L$k_s0F:: - DQ 00F0F0F0F0F0F0F0Fh,00F0F0F0F0F0F0F0Fh - -$L$k_ipt:: - DQ 0C2B2E8985A2A7000h,0CABAE09052227808h - DQ 04C01307D317C4D00h,0CD80B1FCB0FDCC81h - -$L$k_sb1:: - DQ 0B19BE18FCB503E00h,0A5DF7A6E142AF544h - DQ 03618D415FAE22300h,03BF7CCC10D2ED9EFh -$L$k_sb2:: - DQ 0E27A93C60B712400h,05EB7E955BC982FCDh - DQ 069EB88400AE12900h,0C2A163C8AB82234Ah -$L$k_sbo:: - DQ 0D0D26D176FBDC700h,015AABF7AC502A878h - DQ 0CFE474A55FBB6A00h,08E1E90D1412B35FAh - -$L$k_mc_forward:: - DQ 00407060500030201h,00C0F0E0D080B0A09h - DQ 0080B0A0904070605h,0000302010C0F0E0Dh - DQ 00C0F0E0D080B0A09h,00407060500030201h - DQ 0000302010C0F0E0Dh,0080B0A0904070605h - -$L$k_mc_backward:: - DQ 00605040702010003h,00E0D0C0F0A09080Bh - DQ 0020100030E0D0C0Fh,00A09080B06050407h - DQ 00E0D0C0F0A09080Bh,00605040702010003h - DQ 00A09080B06050407h,0020100030E0D0C0Fh - -$L$k_sr:: - DQ 00706050403020100h,00F0E0D0C0B0A0908h - DQ 0030E09040F0A0500h,00B06010C07020D08h - DQ 00F060D040B020900h,0070E050C030A0108h - DQ 00B0E0104070A0D00h,00306090C0F020508h - -$L$k_rcon:: - DQ 01F8391B9AF9DEEB6h,0702A98084D7C7D81h - -$L$k_s63:: - DQ 05B5B5B5B5B5B5B5Bh,05B5B5B5B5B5B5B5Bh - -$L$k_opt:: - DQ 0FF9F4929D6B66000h,0F7974121DEBE6808h - DQ 001EDBD5150BCEC00h,0E10D5DB1B05C0CE0h - -$L$k_deskew:: - DQ 007E4A34047A4E300h,01DFEB95A5DBEF91Ah - DQ 05F36B5DC83EA6900h,02841C2ABF49D1E77h - - - - - -$L$k_dksd:: - DQ 0FEB91A5DA3E44700h,00740E3A45A1DBEF9h - DQ 041C277F4B5368300h,05FDC69EAAB289D1Eh -$L$k_dksb:: - DQ 09A4FCA1F8550D500h,003D653861CC94C99h - DQ 0115BEDA7B6FC4A00h,0D993256F7E3482C8h -$L$k_dkse:: - DQ 0D5031CCA1FC9D600h,053859A4C994F5086h - DQ 0A23196054FDC7BE8h,0CD5EF96A20B31487h -$L$k_dks9:: - DQ 0B6116FC87ED9A700h,04AED933482255BFCh - DQ 04576516227143300h,08BB89FACE9DAFDCEh - - - - - -$L$k_dipt:: - DQ 00F505B040B545F00h,0154A411E114E451Ah - DQ 086E383E660056500h,012771772F491F194h - -$L$k_dsb9:: - DQ 0851C03539A86D600h,0CAD51F504F994CC9h - DQ 0C03B1789ECD74900h,0725E2C9EB2FBA565h -$L$k_dsbd:: - DQ 07D57CCDFE6B1A200h,0F56E9B13882A4439h - DQ 03CE2FAF724C6CB00h,02931180D15DEEFD3h -$L$k_dsbb:: - DQ 0D022649296B44200h,0602646F6B0F2D404h - DQ 0C19498A6CD596700h,0F3FF0C3E3255AA6Bh -$L$k_dsbe:: - DQ 046F2929626D4D000h,02242600464B4F6B0h - DQ 00C55A6CDFFAAC100h,09467F36B98593E32h -$L$k_dsbo:: - DQ 01387EA537EF94000h,0C7AA6DB9D4943E2Dh - DQ 012D7560F93441D00h,0CA4B8159D8C58E9Ch +_vpaes_consts: +$L$k_inv: + DQ 0x0E05060F0D080180,0x040703090A0B0C02 + DQ 0x01040A060F0B0780,0x030D0E0C02050809 + +$L$k_s0F: + DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F + +$L$k_ipt: + DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 + DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 + +$L$k_sb1: + DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 + DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF +$L$k_sb2: + DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD + DQ 0x69EB88400AE12900,0xC2A163C8AB82234A +$L$k_sbo: + DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 + DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA + +$L$k_mc_forward: + DQ 0x0407060500030201,0x0C0F0E0D080B0A09 + DQ 0x080B0A0904070605,0x000302010C0F0E0D + DQ 0x0C0F0E0D080B0A09,0x0407060500030201 + DQ 0x000302010C0F0E0D,0x080B0A0904070605 + +$L$k_mc_backward: + DQ 0x0605040702010003,0x0E0D0C0F0A09080B + DQ 0x020100030E0D0C0F,0x0A09080B06050407 + DQ 0x0E0D0C0F0A09080B,0x0605040702010003 + DQ 0x0A09080B06050407,0x020100030E0D0C0F + +$L$k_sr: + DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 + DQ 0x030E09040F0A0500,0x0B06010C07020D08 + DQ 0x0F060D040B020900,0x070E050C030A0108 + DQ 0x0B0E0104070A0D00,0x0306090C0F020508 + +$L$k_rcon: + DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 + +$L$k_s63: + DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B + +$L$k_opt: + DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 + DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 + +$L$k_deskew: + DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A + DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 + + + + + +$L$k_dksd: + DQ 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9 + DQ 0x41C277F4B5368300,0x5FDC69EAAB289D1E +$L$k_dksb: + DQ 0x9A4FCA1F8550D500,0x03D653861CC94C99 + DQ 0x115BEDA7B6FC4A00,0xD993256F7E3482C8 +$L$k_dkse: + DQ 0xD5031CCA1FC9D600,0x53859A4C994F5086 + DQ 0xA23196054FDC7BE8,0xCD5EF96A20B31487 +$L$k_dks9: + DQ 0xB6116FC87ED9A700,0x4AED933482255BFC + DQ 0x4576516227143300,0x8BB89FACE9DAFDCE + + + + + +$L$k_dipt: + DQ 0x0F505B040B545F00,0x154A411E114E451A + DQ 0x86E383E660056500,0x12771772F491F194 + +$L$k_dsb9: + DQ 0x851C03539A86D600,0xCAD51F504F994CC9 + DQ 0xC03B1789ECD74900,0x725E2C9EB2FBA565 +$L$k_dsbd: + DQ 0x7D57CCDFE6B1A200,0xF56E9B13882A4439 + DQ 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3 +$L$k_dsbb: + DQ 0xD022649296B44200,0x602646F6B0F2D404 + DQ 0xC19498A6CD596700,0xF3FF0C3E3255AA6B +$L$k_dsbe: + DQ 0x46F2929626D4D000,0x2242600464B4F6B0 + DQ 0x0C55A6CDFFAAC100,0x9467F36B98593E32 +$L$k_dsbo: + DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D + DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 @@ -1013,10 +1012,10 @@ DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 DB 85,110,105,118,101,114,115,105,116,121,41,0 ALIGN 64 -EXTERN __imp_RtlVirtualUnwind:NEAR +EXTERN __imp_RtlVirtualUnwind ALIGN 16 -se_handler PROC PRIVATE +se_handler: push rsi push rdi push rbx @@ -1028,55 +1027,55 @@ se_handler PROC PRIVATE pushfq sub rsp,64 - mov rax,QWORD PTR[120+r8] - mov rbx,QWORD PTR[248+r8] + mov rax,QWORD[120+r8] + mov rbx,QWORD[248+r8] - mov rsi,QWORD PTR[8+r9] - mov r11,QWORD PTR[56+r9] + mov rsi,QWORD[8+r9] + mov r11,QWORD[56+r9] - mov r10d,DWORD PTR[r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jb $L$in_prologue + jb NEAR $L$in_prologue - mov rax,QWORD PTR[152+r8] + mov rax,QWORD[152+r8] - mov r10d,DWORD PTR[4+r11] - lea r10,QWORD PTR[r10*1+rsi] + mov r10d,DWORD[4+r11] + lea r10,[r10*1+rsi] cmp rbx,r10 - jae $L$in_prologue + jae NEAR $L$in_prologue - lea rsi,QWORD PTR[16+rax] - lea rdi,QWORD PTR[512+r8] + lea rsi,[16+rax] + lea rdi,[512+r8] mov ecx,20 - DD 0a548f3fch - lea rax,QWORD PTR[184+rax] + DD 0xa548f3fc + lea rax,[184+rax] -$L$in_prologue:: - mov rdi,QWORD PTR[8+rax] - mov rsi,QWORD PTR[16+rax] - mov QWORD PTR[152+r8],rax - mov QWORD PTR[168+r8],rsi - mov QWORD PTR[176+r8],rdi +$L$in_prologue: + mov rdi,QWORD[8+rax] + mov rsi,QWORD[16+rax] + mov QWORD[152+r8],rax + mov QWORD[168+r8],rsi + mov QWORD[176+r8],rdi - mov rdi,QWORD PTR[40+r9] + mov rdi,QWORD[40+r9] mov rsi,r8 mov ecx,154 - DD 0a548f3fch + DD 0xa548f3fc mov rsi,r9 xor rcx,rcx - mov rdx,QWORD PTR[8+rsi] - mov r8,QWORD PTR[rsi] - mov r9,QWORD PTR[16+rsi] - mov r10,QWORD PTR[40+rsi] - lea r11,QWORD PTR[56+rsi] - lea r12,QWORD PTR[24+rsi] - mov QWORD PTR[32+rsp],r10 - mov QWORD PTR[40+rsp],r11 - mov QWORD PTR[48+rsp],r12 - mov QWORD PTR[56+rsp],rcx - call QWORD PTR[__imp_RtlVirtualUnwind] + mov rdx,QWORD[8+rsi] + mov r8,QWORD[rsi] + mov r9,QWORD[16+rsi] + mov r10,QWORD[40+rsi] + lea r11,[56+rsi] + lea r12,[24+rsi] + mov QWORD[32+rsp],r10 + mov QWORD[40+rsp],r11 + mov QWORD[48+rsp],r12 + mov QWORD[56+rsp],rcx + call QWORD[__imp_RtlVirtualUnwind] mov eax,1 add rsp,64 @@ -1090,54 +1089,49 @@ $L$in_prologue:: pop rdi pop rsi DB 0F3h,0C3h ;repret -se_handler ENDP -.text$ ENDS -.pdata SEGMENT READONLY ALIGN(4) + +section .pdata rdata align=4 ALIGN 4 - DD imagerel $L$SEH_begin_vpaes_set_encrypt_key - DD imagerel $L$SEH_end_vpaes_set_encrypt_key - DD imagerel $L$SEH_info_vpaes_set_encrypt_key + DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase + DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase - DD imagerel $L$SEH_begin_vpaes_set_decrypt_key - DD imagerel $L$SEH_end_vpaes_set_decrypt_key - DD imagerel $L$SEH_info_vpaes_set_decrypt_key + DD $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase + DD $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase + DD $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase - DD imagerel $L$SEH_begin_vpaes_encrypt - DD imagerel $L$SEH_end_vpaes_encrypt - DD imagerel $L$SEH_info_vpaes_encrypt + DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase + DD $L$SEH_end_vpaes_encrypt wrt ..imagebase + DD $L$SEH_info_vpaes_encrypt wrt ..imagebase - DD imagerel $L$SEH_begin_vpaes_decrypt - DD imagerel $L$SEH_end_vpaes_decrypt - DD imagerel $L$SEH_info_vpaes_decrypt + DD $L$SEH_begin_vpaes_decrypt wrt ..imagebase + DD $L$SEH_end_vpaes_decrypt wrt ..imagebase + DD $L$SEH_info_vpaes_decrypt wrt ..imagebase - DD imagerel $L$SEH_begin_vpaes_cbc_encrypt - DD imagerel $L$SEH_end_vpaes_cbc_encrypt - DD imagerel $L$SEH_info_vpaes_cbc_encrypt + DD $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase + DD $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase + DD $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase -.pdata ENDS -.xdata SEGMENT READONLY ALIGN(8) +section .xdata rdata align=8 ALIGN 8 -$L$SEH_info_vpaes_set_encrypt_key:: +$L$SEH_info_vpaes_set_encrypt_key: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$enc_key_body,imagerel $L$enc_key_epilogue -$L$SEH_info_vpaes_set_decrypt_key:: + DD se_handler wrt ..imagebase + DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase +$L$SEH_info_vpaes_set_decrypt_key: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$dec_key_body,imagerel $L$dec_key_epilogue -$L$SEH_info_vpaes_encrypt:: + DD se_handler wrt ..imagebase + DD $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase +$L$SEH_info_vpaes_encrypt: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$enc_body,imagerel $L$enc_epilogue -$L$SEH_info_vpaes_decrypt:: + DD se_handler wrt ..imagebase + DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase +$L$SEH_info_vpaes_decrypt: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$dec_body,imagerel $L$dec_epilogue -$L$SEH_info_vpaes_cbc_encrypt:: + DD se_handler wrt ..imagebase + DD $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase +$L$SEH_info_vpaes_cbc_encrypt: DB 9,0,0,0 - DD imagerel se_handler - DD imagerel $L$cbc_body,imagerel $L$cbc_epilogue - -.xdata ENDS -END + DD se_handler wrt ..imagebase + DD $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase |