| Index: third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm | 
| diff --git a/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..cce5e214a56a4a780a01f2ec9000b9e0eb65db5d | 
| --- /dev/null | 
| +++ b/third_party/boringssl/win-x86_64/crypto/aes/aes-x86_64.asm | 
| @@ -0,0 +1,2870 @@ | 
| +OPTION	DOTNAME | 
| +.text$	SEGMENT ALIGN(64) 'CODE' | 
| + | 
| +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] | 
| + | 
| +	mov	r13d,DWORD PTR[240+r15] | 
| +	sub	r13d,1 | 
| +	jmp	$L$enc_loop | 
| +ALIGN	16 | 
| +$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] | 
| + | 
| +	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] | 
| + | 
| +	movzx	esi,dh | 
| +	shr	ecx,16 | 
| +	movzx	ebp,ah | 
| +	xor	r12d,DWORD PTR[3+rsi*8+r14] | 
| +	shr	edx,16 | 
| +	xor	r8d,DWORD PTR[3+rbp*8+r14] | 
| + | 
| +	shr	ebx,16 | 
| +	lea	r15,QWORD PTR[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] | 
| + | 
| +	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] | 
| + | 
| +	mov	edx,DWORD PTR[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	ebx,DWORD PTR[4+r15] | 
| +	mov	ecx,DWORD PTR[8+r15] | 
| +	xor	eax,r10d | 
| +	xor	ebx,r11d | 
| +	xor	ecx,r12d | 
| +	xor	edx,r8d | 
| +	sub	r13d,1 | 
| +	jnz	$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	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] | 
| + | 
| +	and	edi,00000ff00h | 
| +	and	ebp,00000ff00h | 
| + | 
| +	xor	r10d,edi | 
| +	xor	r11d,ebp | 
| +	shr	ecx,16 | 
| + | 
| +	movzx	esi,dh | 
| +	movzx	edi,ah | 
| +	shr	edx,16 | 
| +	mov	esi,DWORD PTR[rsi*8+r14] | 
| +	mov	edi,DWORD PTR[rdi*8+r14] | 
| + | 
| +	and	esi,00000ff00h | 
| +	and	edi,00000ff00h | 
| +	shr	ebx,16 | 
| +	xor	r12d,esi | 
| +	xor	r8d,edi | 
| +	shr	eax,16 | 
| + | 
| +	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] | 
| + | 
| +	and	esi,000ff0000h | 
| +	and	edi,000ff0000h | 
| +	and	ebp,000ff0000h | 
| + | 
| +	xor	r10d,esi | 
| +	xor	r11d,edi | 
| +	xor	r12d,ebp | 
| + | 
| +	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] | 
| + | 
| +	and	esi,000ff0000h | 
| +	and	edi,0ff000000h | 
| +	and	ebp,0ff000000h | 
| + | 
| +	xor	r8d,esi | 
| +	xor	r10d,edi | 
| +	xor	r11d,ebp | 
| + | 
| +	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] | 
| + | 
| +	and	esi,0ff000000h | 
| +	and	edi,0ff000000h | 
| + | 
| +	xor	r12d,esi | 
| +	xor	r8d,edi | 
| + | 
| +	mov	ebx,DWORD PTR[((16+4))+r15] | 
| +	mov	ecx,DWORD PTR[((16+8))+r15] | 
| +	xor	eax,r10d | 
| +	xor	ebx,r11d | 
| +	xor	ecx,r12d | 
| +	xor	edx,r8d | 
| +DB	0f3h,0c3h | 
| +_x86_64_AES_encrypt	ENDP | 
| + | 
| +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 | 
| +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] | 
| +	movzx	r10d,al | 
| +	movzx	r11d,bl | 
| +	movzx	r12d,cl | 
| +	movzx	r8d,dl | 
| +	movzx	esi,bh | 
| +	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	r9d,BYTE PTR[rsi*1+r14] | 
| +	movzx	esi,ah | 
| +	movzx	r13d,BYTE PTR[rdi*1+r14] | 
| +	movzx	edi,cl | 
| +	movzx	ebp,BYTE PTR[rbp*1+r14] | 
| +	movzx	esi,BYTE PTR[rsi*1+r14] | 
| + | 
| +	shl	r9d,8 | 
| +	shr	edx,16 | 
| +	shl	r13d,8 | 
| +	xor	r10d,r9d | 
| +	shr	eax,16 | 
| +	movzx	r9d,dl | 
| +	shr	ebx,16 | 
| +	xor	r11d,r13d | 
| +	shl	ebp,8 | 
| +	movzx	r13d,al | 
| +	movzx	edi,BYTE PTR[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	esi,dh | 
| +	movzx	r13d,BYTE PTR[r13*1+r14] | 
| +	xor	r10d,edi | 
| + | 
| +	shr	ecx,8 | 
| +	movzx	edi,ah | 
| +	shl	r9d,16 | 
| +	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] | 
| + | 
| +	shl	ebp,16 | 
| +	xor	r12d,r13d | 
| +	shl	esi,24 | 
| +	xor	r8d,ebp | 
| +	shl	edi,24 | 
| +	xor	r10d,esi | 
| +	shl	edx,24 | 
| +	xor	r11d,edi | 
| +	shl	ecx,24 | 
| +	mov	eax,r10d | 
| +	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 | 
| +	and	r10d,eax | 
| +	and	r11d,ebx | 
| +	mov	esi,r10d | 
| +	mov	edi,r11d | 
| +	shr	r10d,7 | 
| +	lea	r8d,DWORD PTR[rax*1+rax] | 
| +	shr	r11d,7 | 
| +	lea	r9d,DWORD PTR[rbx*1+rbx] | 
| +	sub	esi,r10d | 
| +	sub	edi,r11d | 
| +	and	r8d,0fefefefeh | 
| +	and	r9d,0fefefefeh | 
| +	and	esi,01b1b1b1bh | 
| +	and	edi,01b1b1b1bh | 
| +	mov	r10d,eax | 
| +	mov	r11d,ebx | 
| +	xor	r8d,esi | 
| +	xor	r9d,edi | 
| + | 
| +	xor	eax,r8d | 
| +	xor	ebx,r9d | 
| +	mov	r12d,080808080h | 
| +	rol	eax,24 | 
| +	mov	ebp,080808080h | 
| +	rol	ebx,24 | 
| +	and	r12d,ecx | 
| +	and	ebp,edx | 
| +	xor	eax,r8d | 
| +	xor	ebx,r9d | 
| +	mov	esi,r12d | 
| +	ror	r10d,16 | 
| +	mov	edi,ebp | 
| +	ror	r11d,16 | 
| +	lea	r8d,DWORD PTR[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] | 
| +	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 | 
| +	mov	r12d,ecx | 
| +	mov	ebp,edx | 
| +	xor	r8d,esi | 
| +	xor	r9d,edi | 
| + | 
| +	ror	r12d,16 | 
| +	xor	ecx,r8d | 
| +	ror	ebp,16 | 
| +	xor	edx,r9d | 
| +	rol	ecx,24 | 
| +	mov	esi,DWORD PTR[r14] | 
| +	rol	edx,24 | 
| +	xor	ecx,r8d | 
| +	mov	edi,DWORD PTR[64+r14] | 
| +	xor	edx,r9d | 
| +	mov	r8d,DWORD PTR[128+r14] | 
| +	xor	ecx,r12d | 
| +	ror	r12d,8 | 
| +	xor	edx,ebp | 
| +	ror	ebp,8 | 
| +	xor	ecx,r12d | 
| +	mov	r9d,DWORD PTR[192+r14] | 
| +	xor	edx,ebp | 
| +	jmp	$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 | 
| +PUBLIC	AES_encrypt | 
| + | 
| +ALIGN	16 | 
| +PUBLIC	asm_AES_encrypt | 
| + | 
| +asm_AES_encrypt:: | 
| +AES_encrypt	PROC PUBLIC | 
| +	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	rax,rsp | 
| +$L$SEH_begin_AES_encrypt:: | 
| +	mov	rdi,rcx | 
| +	mov	rsi,rdx | 
| +	mov	rdx,r8 | 
| + | 
| + | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| + | 
| + | 
| +	mov	r10,rsp | 
| +	lea	rcx,QWORD PTR[((-63))+rdx] | 
| +	and	rsp,-64 | 
| +	sub	rcx,rsp | 
| +	neg	rcx | 
| +	and	rcx,03c0h | 
| +	sub	rsp,rcx | 
| +	sub	rsp,32 | 
| + | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	QWORD PTR[24+rsp],r10 | 
| +$L$enc_prologue:: | 
| + | 
| +	mov	r15,rdx | 
| +	mov	r13d,DWORD PTR[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] | 
| + | 
| +	shl	r13d,4 | 
| +	lea	rbp,QWORD PTR[r13*1+r15] | 
| +	mov	QWORD PTR[rsp],r15 | 
| +	mov	QWORD PTR[8+rsp],rbp | 
| + | 
| + | 
| +	lea	r14,QWORD PTR[(($L$AES_Te+2048))] | 
| +	lea	rbp,QWORD PTR[768+rsp] | 
| +	sub	rbp,r14 | 
| +	and	rbp,0300h | 
| +	lea	r14,QWORD PTR[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] | 
| +	DB	0F3h,0C3h		;repret | 
| +$L$SEH_end_AES_encrypt:: | 
| +AES_encrypt	ENDP | 
| + | 
| +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] | 
| + | 
| +	mov	r13d,DWORD PTR[240+r15] | 
| +	sub	r13d,1 | 
| +	jmp	$L$dec_loop | 
| +ALIGN	16 | 
| +$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] | 
| + | 
| +	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] | 
| + | 
| +	movzx	esi,bh | 
| +	shr	eax,16 | 
| +	movzx	ebp,ch | 
| +	xor	r12d,DWORD PTR[3+rsi*8+r14] | 
| +	shr	edx,16 | 
| +	xor	r8d,DWORD PTR[3+rbp*8+r14] | 
| + | 
| +	shr	ebx,16 | 
| +	lea	r15,QWORD PTR[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] | 
| + | 
| +	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] | 
| + | 
| +	movzx	esi,dh | 
| +	mov	edx,DWORD PTR[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	eax,r10d | 
| +	mov	ebx,DWORD PTR[4+r15] | 
| +	mov	ecx,DWORD PTR[8+r15] | 
| +	xor	ecx,r12d | 
| +	xor	ebx,r11d | 
| +	xor	edx,r8d | 
| +	sub	r13d,1 | 
| +	jnz	$L$dec_loop | 
| +	lea	r14,QWORD PTR[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	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] | 
| + | 
| +	shl	edi,8 | 
| +	shl	ebp,8 | 
| + | 
| +	xor	r10d,edi | 
| +	xor	r11d,ebp | 
| +	shr	edx,16 | 
| + | 
| +	movzx	esi,bh | 
| +	movzx	edi,ch | 
| +	shr	eax,16 | 
| +	movzx	esi,BYTE PTR[rsi*1+r14] | 
| +	movzx	edi,BYTE PTR[rdi*1+r14] | 
| + | 
| +	shl	esi,8 | 
| +	shl	edi,8 | 
| +	shr	ebx,16 | 
| +	xor	r12d,esi | 
| +	xor	r8d,edi | 
| +	shr	ecx,16 | 
| + | 
| +	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] | 
| + | 
| +	shl	esi,16 | 
| +	shl	edi,16 | 
| +	shl	ebp,16 | 
| + | 
| +	xor	r10d,esi | 
| +	xor	r11d,edi | 
| +	xor	r12d,ebp | 
| + | 
| +	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] | 
| + | 
| +	shl	esi,16 | 
| +	shl	edi,24 | 
| +	shl	ebp,24 | 
| + | 
| +	xor	r8d,esi | 
| +	xor	r10d,edi | 
| +	xor	r11d,ebp | 
| + | 
| +	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] | 
| + | 
| +	shl	esi,24 | 
| +	shl	edi,24 | 
| + | 
| +	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] | 
| +	xor	eax,r10d | 
| +	xor	ebx,r11d | 
| +	xor	ecx,r12d | 
| +	xor	edx,r8d | 
| +DB	0f3h,0c3h | 
| +_x86_64_AES_decrypt	ENDP | 
| + | 
| +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 | 
| + | 
| +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] | 
| +	movzx	r10d,al | 
| +	movzx	r11d,bl | 
| +	movzx	r12d,cl | 
| +	movzx	r8d,dl | 
| +	movzx	esi,dh | 
| +	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	r9d,BYTE PTR[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] | 
| + | 
| +	shr	ecx,16 | 
| +	shl	r13d,8 | 
| +	shl	r9d,8 | 
| +	movzx	edi,cl | 
| +	shr	eax,16 | 
| +	xor	r10d,r9d | 
| +	shr	ebx,16 | 
| +	movzx	r9d,dl | 
| + | 
| +	shl	ebp,8 | 
| +	xor	r11d,r13d | 
| +	shl	esi,8 | 
| +	movzx	r13d,al | 
| +	movzx	edi,BYTE PTR[rdi*1+r14] | 
| +	xor	r12d,ebp | 
| +	movzx	ebp,bl | 
| + | 
| +	shl	edi,16 | 
| +	xor	r8d,esi | 
| +	movzx	r9d,BYTE PTR[r9*1+r14] | 
| +	movzx	esi,bh | 
| +	movzx	ebp,BYTE PTR[rbp*1+r14] | 
| +	xor	r10d,edi | 
| +	movzx	r13d,BYTE PTR[r13*1+r14] | 
| +	movzx	edi,ch | 
| + | 
| +	shl	ebp,16 | 
| +	shl	r9d,16 | 
| +	shl	r13d,16 | 
| +	xor	r8d,ebp | 
| +	movzx	ebp,dh | 
| +	xor	r11d,r9d | 
| +	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] | 
| + | 
| +	mov	eax,r10d | 
| +	shl	esi,24 | 
| +	shl	ebx,24 | 
| +	shl	ecx,24 | 
| +	xor	eax,esi | 
| +	shl	edx,24 | 
| +	xor	ebx,r11d | 
| +	xor	ecx,r12d | 
| +	xor	edx,r8d | 
| +	cmp	r15,QWORD PTR[16+rsp] | 
| +	je	$L$dec_compact_done | 
| + | 
| +	mov	rsi,QWORD PTR[((256+0))+r14] | 
| +	shl	rbx,32 | 
| +	shl	rdx,32 | 
| +	mov	rdi,QWORD PTR[((256+8))+r14] | 
| +	or	rax,rbx | 
| +	or	rcx,rdx | 
| +	mov	rbp,QWORD PTR[((256+16))+r14] | 
| +	mov	r9,rsi | 
| +	mov	r12,rsi | 
| +	and	r9,rax | 
| +	and	r12,rcx | 
| +	mov	rbx,r9 | 
| +	mov	rdx,r12 | 
| +	shr	r9,7 | 
| +	lea	r8,QWORD PTR[rax*1+rax] | 
| +	shr	r12,7 | 
| +	lea	r11,QWORD PTR[rcx*1+rcx] | 
| +	sub	rbx,r9 | 
| +	sub	rdx,r12 | 
| +	and	r8,rdi | 
| +	and	r11,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r8,rbx | 
| +	xor	r11,rdx | 
| +	mov	r10,rsi | 
| +	mov	r13,rsi | 
| + | 
| +	and	r10,r8 | 
| +	and	r13,r11 | 
| +	mov	rbx,r10 | 
| +	mov	rdx,r13 | 
| +	shr	r10,7 | 
| +	lea	r9,QWORD PTR[r8*1+r8] | 
| +	shr	r13,7 | 
| +	lea	r12,QWORD PTR[r11*1+r11] | 
| +	sub	rbx,r10 | 
| +	sub	rdx,r13 | 
| +	and	r9,rdi | 
| +	and	r12,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r9,rbx | 
| +	xor	r12,rdx | 
| +	mov	r10,rsi | 
| +	mov	r13,rsi | 
| + | 
| +	and	r10,r9 | 
| +	and	r13,r12 | 
| +	mov	rbx,r10 | 
| +	mov	rdx,r13 | 
| +	shr	r10,7 | 
| +	xor	r8,rax | 
| +	shr	r13,7 | 
| +	xor	r11,rcx | 
| +	sub	rbx,r10 | 
| +	sub	rdx,r13 | 
| +	lea	r10,QWORD PTR[r9*1+r9] | 
| +	lea	r13,QWORD PTR[r12*1+r12] | 
| +	xor	r9,rax | 
| +	xor	r12,rcx | 
| +	and	r10,rdi | 
| +	and	r13,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r10,rbx | 
| +	xor	r13,rdx | 
| + | 
| +	xor	rax,r10 | 
| +	xor	rcx,r13 | 
| +	xor	r8,r10 | 
| +	xor	r11,r13 | 
| +	mov	rbx,rax | 
| +	mov	rdx,rcx | 
| +	xor	r9,r10 | 
| +	shr	rbx,32 | 
| +	xor	r12,r13 | 
| +	shr	rdx,32 | 
| +	xor	r10,r8 | 
| +	rol	eax,8 | 
| +	xor	r13,r11 | 
| +	rol	ecx,8 | 
| +	xor	r10,r9 | 
| +	rol	ebx,8 | 
| +	xor	r13,r12 | 
| + | 
| +	rol	edx,8 | 
| +	xor	eax,r10d | 
| +	shr	r10,32 | 
| +	xor	ecx,r13d | 
| +	shr	r13,32 | 
| +	xor	ebx,r10d | 
| +	xor	edx,r13d | 
| + | 
| +	mov	r10,r8 | 
| +	rol	r8d,24 | 
| +	mov	r13,r11 | 
| +	rol	r11d,24 | 
| +	shr	r10,32 | 
| +	xor	eax,r8d | 
| +	shr	r13,32 | 
| +	xor	ecx,r11d | 
| +	rol	r10d,24 | 
| +	mov	r8,r9 | 
| +	rol	r13d,24 | 
| +	mov	r11,r12 | 
| +	shr	r8,32 | 
| +	xor	ebx,r10d | 
| +	shr	r11,32 | 
| +	xor	edx,r13d | 
| + | 
| +	mov	rsi,QWORD PTR[r14] | 
| +	rol	r9d,16 | 
| +	mov	rdi,QWORD PTR[64+r14] | 
| +	rol	r12d,16 | 
| +	mov	rbp,QWORD PTR[128+r14] | 
| +	rol	r8d,16 | 
| +	mov	r10,QWORD PTR[192+r14] | 
| +	xor	eax,r9d | 
| +	rol	r11d,16 | 
| +	xor	ecx,r12d | 
| +	mov	r13,QWORD PTR[256+r14] | 
| +	xor	ebx,r8d | 
| +	xor	edx,r11d | 
| +	jmp	$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 | 
| +PUBLIC	AES_decrypt | 
| + | 
| +ALIGN	16 | 
| +PUBLIC	asm_AES_decrypt | 
| + | 
| +asm_AES_decrypt:: | 
| +AES_decrypt	PROC PUBLIC | 
| +	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	rax,rsp | 
| +$L$SEH_begin_AES_decrypt:: | 
| +	mov	rdi,rcx | 
| +	mov	rsi,rdx | 
| +	mov	rdx,r8 | 
| + | 
| + | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| + | 
| + | 
| +	mov	r10,rsp | 
| +	lea	rcx,QWORD PTR[((-63))+rdx] | 
| +	and	rsp,-64 | 
| +	sub	rcx,rsp | 
| +	neg	rcx | 
| +	and	rcx,03c0h | 
| +	sub	rsp,rcx | 
| +	sub	rsp,32 | 
| + | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	QWORD PTR[24+rsp],r10 | 
| +$L$dec_prologue:: | 
| + | 
| +	mov	r15,rdx | 
| +	mov	r13d,DWORD PTR[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] | 
| + | 
| +	shl	r13d,4 | 
| +	lea	rbp,QWORD PTR[r13*1+r15] | 
| +	mov	QWORD PTR[rsp],r15 | 
| +	mov	QWORD PTR[8+rsp],rbp | 
| + | 
| + | 
| +	lea	r14,QWORD PTR[(($L$AES_Td+2048))] | 
| +	lea	rbp,QWORD PTR[768+rsp] | 
| +	sub	rbp,r14 | 
| +	and	rbp,0300h | 
| +	lea	r14,QWORD PTR[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] | 
| +	DB	0F3h,0C3h		;repret | 
| +$L$SEH_end_AES_decrypt:: | 
| +AES_decrypt	ENDP | 
| +PUBLIC	AES_set_encrypt_key | 
| + | 
| +ALIGN	16 | 
| +AES_set_encrypt_key	PROC PUBLIC | 
| +	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	rax,rsp | 
| +$L$SEH_begin_AES_set_encrypt_key:: | 
| +	mov	rdi,rcx | 
| +	mov	rsi,rdx | 
| +	mov	rdx,r8 | 
| + | 
| + | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +	sub	rsp,8 | 
| +$L$enc_key_prologue:: | 
| + | 
| +	call	_x86_64_AES_set_encrypt_key | 
| + | 
| +	mov	rbp,QWORD PTR[40+rsp] | 
| +	mov	rbx,QWORD PTR[48+rsp] | 
| +	add	rsp,56 | 
| +$L$enc_key_epilogue:: | 
| +	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue | 
| +	mov	rsi,QWORD PTR[16+rsp] | 
| +	DB	0F3h,0C3h		;repret | 
| +$L$SEH_end_AES_set_encrypt_key:: | 
| +AES_set_encrypt_key	ENDP | 
| + | 
| + | 
| +ALIGN	16 | 
| +_x86_64_AES_set_encrypt_key	PROC PRIVATE | 
| +	mov	ecx,esi | 
| +	mov	rsi,rdi | 
| +	mov	rdi,rdx | 
| + | 
| +	test	rsi,-1 | 
| +	jz	$L$badpointer | 
| +	test	rdi,-1 | 
| +	jz	$L$badpointer | 
| + | 
| +	lea	rbp,QWORD PTR[$L$AES_Te] | 
| +	lea	rbp,QWORD PTR[((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] | 
| + | 
| +	cmp	ecx,128 | 
| +	je	$L$10rounds | 
| +	cmp	ecx,192 | 
| +	je	$L$12rounds | 
| +	cmp	ecx,256 | 
| +	je	$L$14rounds | 
| +	mov	rax,-2 | 
| +	jmp	$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 | 
| + | 
| +	shr	rdx,32 | 
| +	xor	ecx,ecx | 
| +	jmp	$L$10shortcut | 
| +ALIGN	4 | 
| +$L$10loop:: | 
| +	mov	eax,DWORD PTR[rdi] | 
| +	mov	edx,DWORD PTR[12+rdi] | 
| +$L$10shortcut:: | 
| +	movzx	esi,dl | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,24 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	shr	edx,16 | 
| +	movzx	esi,dl | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,8 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-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 | 
| +	add	ecx,1 | 
| +	lea	rdi,QWORD PTR[16+rdi] | 
| +	cmp	ecx,10 | 
| +	jl	$L$10loop | 
| + | 
| +	mov	DWORD PTR[80+rdi],10 | 
| +	xor	rax,rax | 
| +	jmp	$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 | 
| + | 
| +	shr	rdx,32 | 
| +	xor	ecx,ecx | 
| +	jmp	$L$12shortcut | 
| +ALIGN	4 | 
| +$L$12loop:: | 
| +	mov	eax,DWORD PTR[rdi] | 
| +	mov	edx,DWORD PTR[20+rdi] | 
| +$L$12shortcut:: | 
| +	movzx	esi,dl | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,24 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	shr	edx,16 | 
| +	movzx	esi,dl | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,8 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-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 | 
| + | 
| +	cmp	ecx,7 | 
| +	je	$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 | 
| + | 
| +	lea	rdi,QWORD PTR[24+rdi] | 
| +	jmp	$L$12loop | 
| +$L$12break:: | 
| +	mov	DWORD PTR[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 | 
| + | 
| +	shr	rdx,32 | 
| +	xor	ecx,ecx | 
| +	jmp	$L$14shortcut | 
| +ALIGN	4 | 
| +$L$14loop:: | 
| +	mov	eax,DWORD PTR[rdi] | 
| +	mov	edx,DWORD PTR[28+rdi] | 
| +$L$14shortcut:: | 
| +	movzx	esi,dl | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,24 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	shr	edx,16 | 
| +	movzx	esi,dl | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	shl	ebx,8 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-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 | 
| + | 
| +	cmp	ecx,6 | 
| +	je	$L$14break | 
| +	add	ecx,1 | 
| + | 
| +	mov	edx,eax | 
| +	mov	eax,DWORD PTR[16+rdi] | 
| +	movzx	esi,dl | 
| +	movzx	ebx,BYTE PTR[((-128))+rsi*1+rbp] | 
| +	movzx	esi,dh | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-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	esi,dh | 
| +	shl	ebx,16 | 
| +	xor	eax,ebx | 
| + | 
| +	movzx	ebx,BYTE PTR[((-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 | 
| +	xor	rax,rax | 
| +	jmp	$L$exit | 
| + | 
| +$L$badpointer:: | 
| +	mov	rax,-1 | 
| +$L$exit:: | 
| +DB	0f3h,0c3h | 
| +_x86_64_AES_set_encrypt_key	ENDP | 
| +PUBLIC	AES_set_decrypt_key | 
| + | 
| +ALIGN	16 | 
| +AES_set_decrypt_key	PROC PUBLIC | 
| +	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	rax,rsp | 
| +$L$SEH_begin_AES_set_decrypt_key:: | 
| +	mov	rdi,rcx | 
| +	mov	rsi,rdx | 
| +	mov	rdx,r8 | 
| + | 
| + | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +	push	rdx | 
| +$L$dec_key_prologue:: | 
| + | 
| +	call	_x86_64_AES_set_encrypt_key | 
| +	mov	r8,QWORD PTR[rsp] | 
| +	cmp	eax,0 | 
| +	jne	$L$abort | 
| + | 
| +	mov	r14d,DWORD PTR[240+r8] | 
| +	xor	rdi,rdi | 
| +	lea	rcx,QWORD PTR[r14*4+rdi] | 
| +	mov	rsi,r8 | 
| +	lea	rdi,QWORD PTR[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] | 
| +	cmp	rdi,rsi | 
| +	jne	$L$invert | 
| + | 
| +	lea	rax,QWORD PTR[(($L$AES_Te+2048+1024))] | 
| + | 
| +	mov	rsi,QWORD PTR[40+rax] | 
| +	mov	rdi,QWORD PTR[48+rax] | 
| +	mov	rbp,QWORD PTR[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] | 
| +	mov	r9,rsi | 
| +	mov	r12,rsi | 
| +	and	r9,rax | 
| +	and	r12,rcx | 
| +	mov	rbx,r9 | 
| +	mov	rdx,r12 | 
| +	shr	r9,7 | 
| +	lea	r8,QWORD PTR[rax*1+rax] | 
| +	shr	r12,7 | 
| +	lea	r11,QWORD PTR[rcx*1+rcx] | 
| +	sub	rbx,r9 | 
| +	sub	rdx,r12 | 
| +	and	r8,rdi | 
| +	and	r11,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r8,rbx | 
| +	xor	r11,rdx | 
| +	mov	r10,rsi | 
| +	mov	r13,rsi | 
| + | 
| +	and	r10,r8 | 
| +	and	r13,r11 | 
| +	mov	rbx,r10 | 
| +	mov	rdx,r13 | 
| +	shr	r10,7 | 
| +	lea	r9,QWORD PTR[r8*1+r8] | 
| +	shr	r13,7 | 
| +	lea	r12,QWORD PTR[r11*1+r11] | 
| +	sub	rbx,r10 | 
| +	sub	rdx,r13 | 
| +	and	r9,rdi | 
| +	and	r12,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r9,rbx | 
| +	xor	r12,rdx | 
| +	mov	r10,rsi | 
| +	mov	r13,rsi | 
| + | 
| +	and	r10,r9 | 
| +	and	r13,r12 | 
| +	mov	rbx,r10 | 
| +	mov	rdx,r13 | 
| +	shr	r10,7 | 
| +	xor	r8,rax | 
| +	shr	r13,7 | 
| +	xor	r11,rcx | 
| +	sub	rbx,r10 | 
| +	sub	rdx,r13 | 
| +	lea	r10,QWORD PTR[r9*1+r9] | 
| +	lea	r13,QWORD PTR[r12*1+r12] | 
| +	xor	r9,rax | 
| +	xor	r12,rcx | 
| +	and	r10,rdi | 
| +	and	r13,rdi | 
| +	and	rbx,rbp | 
| +	and	rdx,rbp | 
| +	xor	r10,rbx | 
| +	xor	r13,rdx | 
| + | 
| +	xor	rax,r10 | 
| +	xor	rcx,r13 | 
| +	xor	r8,r10 | 
| +	xor	r11,r13 | 
| +	mov	rbx,rax | 
| +	mov	rdx,rcx | 
| +	xor	r9,r10 | 
| +	shr	rbx,32 | 
| +	xor	r12,r13 | 
| +	shr	rdx,32 | 
| +	xor	r10,r8 | 
| +	rol	eax,8 | 
| +	xor	r13,r11 | 
| +	rol	ecx,8 | 
| +	xor	r10,r9 | 
| +	rol	ebx,8 | 
| +	xor	r13,r12 | 
| + | 
| +	rol	edx,8 | 
| +	xor	eax,r10d | 
| +	shr	r10,32 | 
| +	xor	ecx,r13d | 
| +	shr	r13,32 | 
| +	xor	ebx,r10d | 
| +	xor	edx,r13d | 
| + | 
| +	mov	r10,r8 | 
| +	rol	r8d,24 | 
| +	mov	r13,r11 | 
| +	rol	r11d,24 | 
| +	shr	r10,32 | 
| +	xor	eax,r8d | 
| +	shr	r13,32 | 
| +	xor	ecx,r11d | 
| +	rol	r10d,24 | 
| +	mov	r8,r9 | 
| +	rol	r13d,24 | 
| +	mov	r11,r12 | 
| +	shr	r8,32 | 
| +	xor	ebx,r10d | 
| +	shr	r11,32 | 
| +	xor	edx,r13d | 
| + | 
| + | 
| +	rol	r9d,16 | 
| + | 
| +	rol	r12d,16 | 
| + | 
| +	rol	r8d,16 | 
| + | 
| +	xor	eax,r9d | 
| +	rol	r11d,16 | 
| +	xor	ecx,r12d | 
| + | 
| +	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 | 
| +	sub	r14d,1 | 
| +	jnz	$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] | 
| +	add	rsp,56 | 
| +$L$dec_key_epilogue:: | 
| +	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue | 
| +	mov	rsi,QWORD PTR[16+rsp] | 
| +	DB	0F3h,0C3h		;repret | 
| +$L$SEH_end_AES_set_decrypt_key:: | 
| +AES_set_decrypt_key	ENDP | 
| +PUBLIC	AES_cbc_encrypt | 
| + | 
| +ALIGN	16 | 
| +EXTERN	OPENSSL_ia32cap_P:NEAR | 
| +PUBLIC	asm_AES_cbc_encrypt | 
| + | 
| +asm_AES_cbc_encrypt:: | 
| +AES_cbc_encrypt	PROC PUBLIC | 
| +	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue | 
| +	mov	QWORD PTR[16+rsp],rsi | 
| +	mov	rax,rsp | 
| +$L$SEH_begin_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] | 
| + | 
| + | 
| +	cmp	rdx,0 | 
| +	je	$L$cbc_epilogue | 
| +	pushfq | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +$L$cbc_prologue:: | 
| + | 
| +	cld | 
| +	mov	r9d,r9d | 
| + | 
| +	lea	r14,QWORD PTR[$L$AES_Te] | 
| +	cmp	r9,0 | 
| +	jne	$L$cbc_picked_te | 
| +	lea	r14,QWORD PTR[$L$AES_Td] | 
| +$L$cbc_picked_te:: | 
| + | 
| +	mov	r10d,DWORD PTR[OPENSSL_ia32cap_P] | 
| +	cmp	rdx,512 | 
| +	jb	$L$cbc_slow_prologue | 
| +	test	rdx,15 | 
| +	jnz	$L$cbc_slow_prologue | 
| +	bt	r10d,28 | 
| +	jc	$L$cbc_slow_prologue | 
| + | 
| + | 
| +	lea	r15,QWORD PTR[((-88-248))+rsp] | 
| +	and	r15,-64 | 
| + | 
| + | 
| +	mov	r10,r14 | 
| +	lea	r11,QWORD PTR[2304+r14] | 
| +	mov	r12,r15 | 
| +	and	r10,0FFFh | 
| +	and	r11,0FFFh | 
| +	and	r12,0FFFh | 
| + | 
| +	cmp	r12,r11 | 
| +	jb	$L$cbc_te_break_out | 
| +	sub	r12,r11 | 
| +	sub	r15,r12 | 
| +	jmp	$L$cbc_te_ok | 
| +$L$cbc_te_break_out:: | 
| +	sub	r12,r10 | 
| +	and	r12,0FFFh | 
| +	add	r12,320 | 
| +	sub	r15,r12 | 
| +ALIGN	4 | 
| +$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	rbp,r8 | 
| +	mov	rbx,r9 | 
| +	mov	r9,rsi | 
| +	mov	r8,rdi | 
| +	mov	r15,rcx | 
| + | 
| +	mov	eax,DWORD PTR[240+r15] | 
| + | 
| +	mov	r10,r15 | 
| +	sub	r10,r14 | 
| +	and	r10,0fffh | 
| +	cmp	r10,2304 | 
| +	jb	$L$cbc_do_ecopy | 
| +	cmp	r10,4096-248 | 
| +	jb	$L$cbc_skip_ecopy | 
| +ALIGN	4 | 
| +$L$cbc_do_ecopy:: | 
| +	mov	rsi,r15 | 
| +	lea	rdi,QWORD PTR[80+rsp] | 
| +	lea	r15,QWORD PTR[80+rsp] | 
| +	mov	ecx,240/8 | 
| +	DD	090A548F3h | 
| +	mov	DWORD PTR[rdi],eax | 
| +$L$cbc_skip_ecopy:: | 
| +	mov	QWORD PTR[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] | 
| +	sub	ecx,1 | 
| +	jnz	$L$cbc_prefetch_te | 
| +	lea	r14,QWORD PTR[((-2304))+r14] | 
| + | 
| +	cmp	rbx,0 | 
| +	je	$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] | 
| + | 
| +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 | 
| + | 
| +	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 | 
| + | 
| +	lea	r8,QWORD PTR[16+r8] | 
| +	lea	r9,QWORD PTR[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 | 
| + | 
| +	jmp	$L$cbc_fast_cleanup | 
| + | 
| + | 
| +ALIGN	16 | 
| +$L$FAST_DECRYPT:: | 
| +	cmp	r9,r8 | 
| +	je	$L$cbc_fast_dec_in_place | 
| + | 
| +	mov	QWORD PTR[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 | 
| + | 
| +	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,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 | 
| + | 
| +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 | 
| +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 | 
| + | 
| +	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	r11,QWORD PTR[r8] | 
| +	mov	r12,QWORD PTR[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 | 
| + | 
| +ALIGN	4 | 
| +$L$cbc_fast_cleanup:: | 
| +	cmp	DWORD PTR[((80+240))+rsp],0 | 
| +	lea	rdi,QWORD PTR[80+rsp] | 
| +	je	$L$cbc_exit | 
| +	mov	ecx,240/8 | 
| +	xor	rax,rax | 
| +	DD	090AB48F3h | 
| + | 
| +	jmp	$L$cbc_exit | 
| + | 
| + | 
| +ALIGN	16 | 
| +$L$cbc_slow_prologue:: | 
| + | 
| +	lea	rbp,QWORD PTR[((-88))+rsp] | 
| +	and	rbp,-64 | 
| + | 
| +	lea	r10,QWORD PTR[((-88-63))+rcx] | 
| +	sub	r10,rbp | 
| +	neg	r10 | 
| +	and	r10,03c0h | 
| +	sub	rbp,r10 | 
| + | 
| +	xchg	rbp,rsp | 
| + | 
| +	mov	QWORD PTR[16+rsp],rbp | 
| +$L$cbc_slow_body:: | 
| + | 
| + | 
| + | 
| + | 
| +	mov	QWORD PTR[56+rsp],r8 | 
| +	mov	rbp,r8 | 
| +	mov	rbx,r9 | 
| +	mov	r9,rsi | 
| +	mov	r8,rdi | 
| +	mov	r15,rcx | 
| +	mov	r10,rdx | 
| + | 
| +	mov	eax,DWORD PTR[240+r15] | 
| +	mov	QWORD PTR[rsp],r15 | 
| +	shl	eax,4 | 
| +	lea	rax,QWORD PTR[rax*1+r15] | 
| +	mov	QWORD PTR[8+rsp],rax | 
| + | 
| + | 
| +	lea	r14,QWORD PTR[2048+r14] | 
| +	lea	rax,QWORD PTR[((768-8))+rsp] | 
| +	sub	rax,r14 | 
| +	and	rax,0300h | 
| +	lea	r14,QWORD PTR[rax*1+r14] | 
| + | 
| +	cmp	rbx,0 | 
| +	je	$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 | 
| + | 
| +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 | 
| + | 
| +	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 | 
| + | 
| +	lea	r8,QWORD PTR[16+r8] | 
| +	lea	r9,QWORD PTR[16+r9] | 
| +	sub	r10,16 | 
| +	test	r10,-16 | 
| +	jnz	$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 | 
| + | 
| +	jmp	$L$cbc_exit | 
| + | 
| +ALIGN	4 | 
| +$L$cbc_slow_enc_tail:: | 
| +	mov	r11,rax | 
| +	mov	r12,rcx | 
| +	mov	rcx,r10 | 
| +	mov	rsi,r8 | 
| +	mov	rdi,r9 | 
| +	DD	09066A4F3h | 
| +	mov	rcx,16 | 
| +	sub	rcx,r10 | 
| +	xor	rax,rax | 
| +	DD	09066AAF3h | 
| +	mov	r8,r9 | 
| +	mov	r10,16 | 
| +	mov	rax,r11 | 
| +	mov	rcx,r12 | 
| +	jmp	$L$cbc_slow_enc_loop | 
| + | 
| +ALIGN	16 | 
| +$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 | 
| + | 
| +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 | 
| + | 
| +	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	r11,QWORD PTR[r8] | 
| +	mov	r12,QWORD PTR[8+r8] | 
| +	sub	r10,16 | 
| +	jc	$L$cbc_slow_dec_partial | 
| +	jz	$L$cbc_slow_dec_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] | 
| +	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 | 
| + | 
| +	mov	DWORD PTR[r9],eax | 
| +	mov	DWORD PTR[4+r9],ebx | 
| +	mov	DWORD PTR[8+r9],ecx | 
| +	mov	DWORD PTR[12+r9],edx | 
| + | 
| +	jmp	$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 | 
| + | 
| +	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	rdi,r9 | 
| +	lea	rsi,QWORD PTR[64+rsp] | 
| +	lea	rcx,QWORD PTR[16+r10] | 
| +	DD	09066A4F3h | 
| +	jmp	$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:: | 
| +	popfq | 
| +$L$cbc_epilogue:: | 
| +	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue | 
| +	mov	rsi,QWORD PTR[16+rsp] | 
| +	DB	0F3h,0C3h		;repret | 
| +$L$SEH_end_AES_cbc_encrypt:: | 
| +AES_cbc_encrypt	ENDP | 
| +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 | 
| +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 | 
| +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 | 
| + | 
| +ALIGN	16 | 
| +block_se_handler	PROC PRIVATE | 
| +	push	rsi | 
| +	push	rdi | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +	pushfq | 
| +	sub	rsp,64 | 
| + | 
| +	mov	rax,QWORD PTR[120+r8] | 
| +	mov	rbx,QWORD PTR[248+r8] | 
| + | 
| +	mov	rsi,QWORD PTR[8+r9] | 
| +	mov	r11,QWORD PTR[56+r9] | 
| + | 
| +	mov	r10d,DWORD PTR[r11] | 
| +	lea	r10,QWORD PTR[r10*1+rsi] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_block_prologue | 
| + | 
| +	mov	rax,QWORD PTR[152+r8] | 
| + | 
| +	mov	r10d,DWORD PTR[4+r11] | 
| +	lea	r10,QWORD PTR[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 | 
| + | 
| + | 
| +ALIGN	16 | 
| +key_se_handler	PROC PRIVATE | 
| +	push	rsi | 
| +	push	rdi | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +	pushfq | 
| +	sub	rsp,64 | 
| + | 
| +	mov	rax,QWORD PTR[120+r8] | 
| +	mov	rbx,QWORD PTR[248+r8] | 
| + | 
| +	mov	rsi,QWORD PTR[8+r9] | 
| +	mov	r11,QWORD PTR[56+r9] | 
| + | 
| +	mov	r10d,DWORD PTR[r11] | 
| +	lea	r10,QWORD PTR[r10*1+rsi] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_key_prologue | 
| + | 
| +	mov	rax,QWORD PTR[152+r8] | 
| + | 
| +	mov	r10d,DWORD PTR[4+r11] | 
| +	lea	r10,QWORD PTR[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 | 
| + | 
| + | 
| +ALIGN	16 | 
| +cbc_se_handler	PROC PRIVATE | 
| +	push	rsi | 
| +	push	rdi | 
| +	push	rbx | 
| +	push	rbp | 
| +	push	r12 | 
| +	push	r13 | 
| +	push	r14 | 
| +	push	r15 | 
| +	pushfq | 
| +	sub	rsp,64 | 
| + | 
| +	mov	rax,QWORD PTR[120+r8] | 
| +	mov	rbx,QWORD PTR[248+r8] | 
| + | 
| +	lea	r10,QWORD PTR[$L$cbc_prologue] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_cbc_prologue | 
| + | 
| +	lea	r10,QWORD PTR[$L$cbc_fast_body] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_cbc_frame_setup | 
| + | 
| +	lea	r10,QWORD PTR[$L$cbc_slow_prologue] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_cbc_body | 
| + | 
| +	lea	r10,QWORD PTR[$L$cbc_slow_body] | 
| +	cmp	rbx,r10 | 
| +	jb	$L$in_cbc_frame_setup | 
| + | 
| +$L$in_cbc_body:: | 
| +	mov	rax,QWORD PTR[152+r8] | 
| + | 
| +	lea	r10,QWORD PTR[$L$cbc_epilogue] | 
| +	cmp	rbx,r10 | 
| +	jae	$L$in_cbc_prologue | 
| + | 
| +	lea	rax,QWORD PTR[8+rax] | 
| + | 
| +	lea	r10,QWORD PTR[$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] | 
| +	mov	rsi,r8 | 
| +	mov	ecx,154 | 
| +	DD	0a548f3fch | 
| + | 
| +	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	eax,1 | 
| +	add	rsp,64 | 
| +	popfq | 
| +	pop	r15 | 
| +	pop	r14 | 
| +	pop	r13 | 
| +	pop	r12 | 
| +	pop	rbp | 
| +	pop	rbx | 
| +	pop	rdi | 
| +	pop	rsi | 
| +	DB	0F3h,0C3h		;repret | 
| +cbc_se_handler	ENDP | 
| + | 
| +.text$	ENDS | 
| +.pdata	SEGMENT READONLY ALIGN(4) | 
| +ALIGN	4 | 
| +	DD	imagerel $L$SEH_begin_AES_encrypt | 
| +	DD	imagerel $L$SEH_end_AES_encrypt | 
| +	DD	imagerel $L$SEH_info_AES_encrypt | 
| + | 
| +	DD	imagerel $L$SEH_begin_AES_decrypt | 
| +	DD	imagerel $L$SEH_end_AES_decrypt | 
| +	DD	imagerel $L$SEH_info_AES_decrypt | 
| + | 
| +	DD	imagerel $L$SEH_begin_AES_set_encrypt_key | 
| +	DD	imagerel $L$SEH_end_AES_set_encrypt_key | 
| +	DD	imagerel $L$SEH_info_AES_set_encrypt_key | 
| + | 
| +	DD	imagerel $L$SEH_begin_AES_set_decrypt_key | 
| +	DD	imagerel $L$SEH_end_AES_set_decrypt_key | 
| +	DD	imagerel $L$SEH_info_AES_set_decrypt_key | 
| + | 
| +	DD	imagerel $L$SEH_begin_AES_cbc_encrypt | 
| +	DD	imagerel $L$SEH_end_AES_cbc_encrypt | 
| +	DD	imagerel $L$SEH_info_AES_cbc_encrypt | 
| + | 
| +.pdata	ENDS | 
| +.xdata	SEGMENT READONLY ALIGN(8) | 
| +ALIGN	8 | 
| +$L$SEH_info_AES_encrypt:: | 
| +DB	9,0,0,0 | 
| +	DD	imagerel block_se_handler | 
| +	DD	imagerel $L$enc_prologue,imagerel $L$enc_epilogue | 
| +$L$SEH_info_AES_decrypt:: | 
| +DB	9,0,0,0 | 
| +	DD	imagerel block_se_handler | 
| +	DD	imagerel $L$dec_prologue,imagerel $L$dec_epilogue | 
| +$L$SEH_info_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_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_AES_cbc_encrypt:: | 
| +DB	9,0,0,0 | 
| +	DD	imagerel cbc_se_handler | 
| + | 
| +.xdata	ENDS | 
| +END | 
|  |