Function at 0x140053980
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
xor ebx, ebx
mov qword [rsp + 0xb0], r8
mov r12, rcx
mov rax, rdx
mov r14, r9
test rdx, rdx
je 0x1400539aa
mov ebx, dword [rdx]
mov rdi, qword [r12 + 0x30]
mov esi, dword [rdi + 4]
mov ebp, dword [rdi + 8]
lea r15, [rdi + 0x20]
xor esi, dword [rax + 4]
xor ebp, dword [rax + 8]
mov r13d, dword [rdi + 0xc]
xor r13d, dword [rax + 0xc]
mov eax, dword [rdi + 0x10]
xor ebx, dword [rdi]
mov r9d, dword [rdi + 0x18]
mov dword [rsp + 0x20], eax
mov eax, dword [rdi + 0x14]
mov dword [rsp + 0x28], eax
mov eax, dword [rdi + 0x1c]
mov dword [rsp + 0x30], eax
mov rax, qword [0x1401cd850]
cmp byte [rax], 0
je 0x140053f30
mov rax, qword [0x1401cd840]
mov dword [rsp + 0x4c], 0
lea r8, [0x140249260]
mov edx, dword [rsp + 0x4c]
mov r10d, dword [rax]
xor eax, eax
nop dword [rax]
mov ecx, eax
add eax, r10d
and edx, dword [r8 + rcx]
cmp eax, 0x3ff
jbe 0x140053a18
and edx, dword [0x14024965c]
mov eax, ebx
mov ebx, dword [rsp + 0x28]
or ebp, edx
or esi, edx
or eax, edx
or edx, r13d
mov ecx, edx
movzx r11d, bpl
shr ecx, 0x18
mov ecx, dword [r8 + rcx*4]
rol ecx, 8
xor ecx, dword [r8 + r11*4]
movzx r11d, sil
xor ecx, r9d
mov r9d, ebp
shr r9d, 0x18
mov r9d, dword [r8 + r9*4]
rol r9d, 8
xor r9d, dword [r8 + r11*4]
mov r11d, edx
shr r11d, 0x10
xor r9d, ebx
mov ebx, esi
movzx r11d, r11b
movzx ebx, bh
mov r13d, dword [r8 + r11*4]
movzx r11d, al
rol r13d, 0x10
xor r13d, r9d
mov r9d, dword [r8 + rbx*4]
mov ebx, dword [rsp + 0x20]
ror r9d, 8
xor r9d, ecx
mov ecx, esi
shr ecx, 0x18
mov ecx, dword [r8 + rcx*4]
rol ecx, 8
xor ecx, dword [r8 + r11*4]
xor ecx, ebx
movzx ebx, dh
movzx edx, dl
mov r11d, dword [r8 + rbx*4]
ror r11d, 8
xor ecx, r11d
mov r11d, ebp
shr r11d, 0x10
movzx r11d, r11b
mov r11d, dword [r8 + r11*4]
rol r11d, 0x10
xor r11d, ecx
movzx ecx, ah
mov ebx, dword [r8 + rcx*4]
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
ror ebx, 8
mov ecx, dword [r8 + rcx*4]
xor ebx, r13d
rol ecx, 0x10
xor ecx, r9d
shr eax, 0x18
mov eax, dword [r8 + rax*4]
shr esi, 0x10
mov r9d, ecx
mov ecx, r11d
movzx esi, sil
rol eax, 8
xor eax, dword [r8 + rdx*4]
mov edx, eax
mov eax, dword [rsp + 0x30]
xor edx, eax
mov eax, ebp
movzx ebp, ah
mov eax, dword [r8 + rbp*4]
mov rbp, r15
ror eax, 8
xor edx, eax
mov eax, dword [r8 + rsi*4]
rol eax, 0x10
xor eax, edx
mov edx, dword [r12 + 0x10]
mov r11d, eax
shr edx, 1
lea r12d, [rdx - 2]
lea r13, [r12 + 2]
shl r13, 5
add r13, rdi
nop dword [rax + rax]
mov eax, r11d
movzx esi, r11b
movzx edi, r9b
shr eax, 0x18
mov edx, dword [r8 + rax*4]
movzx eax, cl
xor edx, dword [rbp + 0xc]
xor edx, dword [r8 + rax*4 + 0xc00]
mov eax, r9d
shr eax, 0x10
movzx eax, al
xor edx, dword [r8 + rax*4 + 0x400]
movzx eax, bh
xor edx, dword [r8 + rax*4 + 0x800]
mov eax, r9d
shr eax, 0x18
mov eax, dword [r8 + rax*4]
xor eax, dword [rbp + 8]
xor eax, dword [r8 + rsi*4 + 0xc00]
mov esi, ebx
shr esi, 0x10
movzx esi, sil
xor eax, dword [r8 + rsi*4 + 0x400]
movzx esi, ch
xor eax, dword [r8 + rsi*4 + 0x800]
mov esi, ebx
movzx ebx, bl
mov dword [rsp + 0x20], eax
shr esi, 0x18
mov eax, r11d
shr r11d, 0x10
mov esi, dword [r8 + rsi*4]
xor esi, dword [rbp + 4]
movzx r11d, r11b
xor esi, dword [r8 + rdi*4 + 0xc00]
movzx edi, ah
mov eax, r9d
xor esi, dword [r8 + rdi*4 + 0x800]
mov edi, ecx
shr ecx, 0x18
mov ecx, dword [r8 + rcx*4]
xor ecx, dword [rbp]
shr edi, 0x10
xor ecx, dword [r8 + rbx*4 + 0xc00]
movzx ebx, ah
mov eax, dword [rsp + 0x20]
movzx edi, dil
xor esi, dword [r8 + rdi*4 + 0x400]
xor ecx, dword [r8 + r11*4 + 0x400]
movzx r11d, dl
movzx edi, dh
shr eax, 0x18
xor ecx, dword [r8 + rbx*4 + 0x800]
mov r9d, eax
mov eax, dword [rbp + 0x1c]
mov r9d, dword [r8 + r9*4]
xor r9d, dword [rbp + 0x18]
xor r9d, dword [r8 + r11*4 + 0xc00]
mov r11d, esi
shr r11d, 0x10
movzx r11d, r11b
xor r9d, dword [r8 + r11*4 + 0x400]
mov r11d, esi
shr r11d, 0x18
mov ebx, dword [r8 + r11*4]
movzx r11d, byte [rsp + 0x20]
xor ebx, dword [rbp + 0x14]
xor ebx, dword [r8 + r11*4 + 0xc00]
mov r11d, edx
xor ebx, dword [r8 + rdi*4 + 0x800]
movzx edi, cl
shr r11d, 0x18
shr edx, 0x10
add rbp, 0x20
xor eax, dword [r8 + r11*4]
mov r11d, dword [r8 + rdi*4 + 0xc00]
movzx edx, dl
xor r11d, eax
mov eax, dword [rsp + 0x20]
shr eax, 0x10
movzx edi, al
mov eax, esi
movzx esi, sil
xor r11d, dword [r8 + rdi*4 + 0x400]
movzx edi, ah
mov eax, dword [rsp + 0x20]
xor r11d, dword [r8 + rdi*4 + 0x800]
movzx edi, ch
xor r9d, dword [r8 + rdi*4 + 0x800]
mov edi, ecx
shr ecx, 0x18
movzx eax, ah
shr edi, 0x10
mov ecx, dword [r8 + rcx*4]
xor ecx, dword [rbp - 0x10]
movzx edi, dil
xor ecx, dword [r8 + rsi*4 + 0xc00]
xor ecx, dword [r8 + rdx*4 + 0x400]
xor ebx, dword [r8 + rdi*4 + 0x400]
xor ecx, dword [r8 + rax*4 + 0x800]
cmp rbp, r13
jne 0x140053b50
shl r12, 5
mov esi, dword [rsp + 0x4c]
mov eax, r11d
xor edx, edx
mov r8, qword [0x1401cd880]
mov r11d, ecx
mov ecx, r9d
lea r9, [r15 + r12 + 0x20]
nop dword [rax]
mov edi, edx
add edx, r10d
and esi, dword [rdi + r8]
cmp edx, 0xff
jbe 0x140053d38
and esi, dword [r8 + 0xfc]
mov edx, r11d
or edx, esi
or eax, esi
or ecx, esi
or ebx, esi
mov r10d, edx
mov esi, edx
movzx ebp, ah
mov r11d, ebx
shr r10d, 0x18
movzx ebp, byte [r8 + rbp]
shr esi, 0x10
movzx r13d, bl
mov edi, r10d
mov r10d, eax
movzx esi, sil
shr r11d, 0x18
shr r10d, 0x10
movzx esi, byte [r8 + rsi]
movzx r11d, byte [r8 + r11]
mov qword [rsp + 0x20], rdi
movzx r15d, r10b
movzx edi, ch
mov r10d, ecx
mov qword [rsp + 0x28], r15
movzx r15d, cl
shr r10d, 0x18
movzx r15d, byte [r8 + r15]
mov qword [rsp + 0x30], rdi
mov r12d, r10d
mov r10d, ebx
shr r10d, 0x10
movzx ebx, bh
shr ecx, 0x10
shl r15, 8
movzx edi, r10b
movzx ecx, cl
movzx r10d, al
or r15, rbp
mov rbp, qword [rsp + 0x30]
mov qword [rsp + 0x38], rdi
movzx edi, dh
shl r15, 8
movzx edx, dl
movzx ecx, byte [r8 + rcx]
shr eax, 0x18
or r15, rsi
mov rsi, qword [rsp + 0x20]
movzx edx, byte [r8 + rdx]
shl r15, 8
or r15, r11
movzx r11d, byte [r8 + r13]
shl rdx, 8
shl r15, 8
or r15, r11
movzx r11d, byte [r8 + rbp]
shl r15, 8
or r15, r11
mov r11, qword [rsp + 0x28]
shl r15, 8
movzx r11d, byte [r8 + r11]
or r15, r11
movzx r11d, byte [r8 + rsi]
shl r15, 8
or r15, r11
movzx r11d, byte [r8 + rbx]
mov rbx, qword [rsp + 0x38]
movq xmm0, r15
or rdx, r11
shl rdx, 8
or rdx, rcx
movzx ecx, byte [r8 + rax]
mov rax, rdx
movzx edx, byte [r8 + r10]
shl rax, 8
or rax, rcx
shl rax, 8
or rax, rdx
movzx edx, byte [r8 + rdi]
shl rax, 8
or rax, rdx
movzx edx, byte [r8 + rbx]
shl rax, 8
or rax, rdx
movzx edx, byte [r8 + r12]
shl rax, 8
or rax, rdx
mov edx, 4
movq xmm2, rax
punpcklqdq xmm0, xmm2
movd eax, xmm0
xor eax, dword [r9]
cmp qword [rsp + 0xb0], 0
je 0x140053f48
test r14, r14
je 0x140053ed5
mov rbx, qword [rsp + 0xb0]
lea rdx, [r14 + 4]
xor eax, dword [rbx]
mov dword [r14], eax
mov rbx, qword [rsp + 0xb0]
pshufd xmm1, xmm0, 0x55
movd eax, xmm1
movdqa xmm1, xmm0
xor eax, dword [rbx + 4]
punpckhdq xmm1, xmm0
pshufd xmm0, xmm0, 0xff
xor eax, dword [r9 + 4]
mov dword [rdx], eax
movd eax, xmm1
xor eax, dword [rbx + 8]
lea rdx, [r14 + 0xc]
xor eax, dword [r9 + 8]
mov dword [r14 + 8], eax
movd eax, xmm0
xor eax, dword [rbx + 0xc]
xor eax, dword [r9 + 0xc]
mov dword [rdx], eax
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x38], r9d
call method.CryptoPP.DetectX86Features__
mov r9d, dword [rsp + 0x38]
jmp 0x1400539f2
test r14, r14
je 0x140053f54
mov dword [r14], eax
lea rdx, [r14 + 4]
pshufd xmm1, xmm0, 0x55
movd eax, xmm1
movdqa xmm1, xmm0
xor eax, dword [r9 + 4]
punpckhdq xmm1, xmm0
mov dword [rdx], eax
pshufd xmm0, xmm0, 0xff
lea rdx, [r14 + 0xc]
movd eax, xmm1
xor eax, dword [r9 + 8]
mov dword [r14 + 8], eax
movd eax, xmm0
xor eax, dword [r9 + 0xc]
jmp 0x140053f1a