Function at 0x140054120
Capabilities:
Encode data using xor
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, 0x48
mov r15, rdx
mov rdx, qword [rcx + 0x48]
mov rbp, rcx
mov r13d, r8d
mov rcx, qword [rcx + 0x50]
cmp rdx, 0x1238
je 0x140054192
test rcx, rcx
je 0x140054185
lea rax, [rcx + rdx]
test rdx, rdx
je 0x140054180
mov rdx, rax
sub rdx, rcx
and edx, 1
je 0x140054170
sub rax, 1
mov byte [rax], 0
cmp rcx, rax
je 0x140054180
nop
mov byte [rax - 1], 0
sub rax, 2
mov byte [rax], 0
cmp rcx, rax
jne 0x140054170
call method.CryptoPP.UnalignedDeallocate_void_
mov ecx, 0x1238
call method.CryptoPP.UnalignedAllocate_unsigned_long_long_
mov rcx, rax
mov r14d, r13d
mov qword [rbp + 0x50], rcx
movdqu xmm0, xmmword [0x1401c6d80]
shr r14d, 2
mov rcx, qword [rbp + 0x28]
mov rbx, qword [rbp + 0x30]
lea eax, [r14 + 6]
lea esi, [r14*4 + 0x1c]
movups xmmword [rbp + 0x40], xmm0
mov dword [rbp + 0x10], eax
mov rdi, rsi
cmp rsi, rcx
je 0x140054210
test rbx, rbx
je 0x1400541f8
lea rdx, [rbx + rcx*4]
lea rax, [rcx - 1]
test rcx, rcx
je 0x1400541f0
nop word [rax + rax]
sub rdx, 4
mov dword [rdx], 0
sub rax, 1
jae 0x1400541e0
mov rcx, rbx
call method.CryptoPP.UnalignedDeallocate_void_
test edi, edi
je 0x140054980
lea rcx, [rsi*4]
call method.CryptoPP.UnalignedAllocate_unsigned_long_long_
mov rbx, rax
mov edi, r14d
mov qword [rbp + 0x28], rsi
mov esi, r13d
movabs rax, 0x3fffffffffffffff
lea r12, [rdi*4]
mov qword [rbp + 0x30], rbx
mov qword [rbp + 0x20], rax
cmp r12, rsi
jb 0x1400549fd
test r15, r15
je 0x140054255
test rbx, rbx
je 0x140054255
mov r8, rsi
mov rdx, r15
mov rcx, rbx
call sym.memcpy
mov r8, r12
xor edx, edx
lea rcx, [rbx + rsi]
sub r8, rsi
add rsi, 3
call sym.memset
shr rsi, 2
mov rax, rbx
lea rdx, [rbx + rsi*4]
je 0x140054290
nop word [rax + rax]
mov ecx, dword [rax]
add rax, 4
bswap ecx
mov dword [rax - 4], ecx
cmp rax, rdx
jne 0x140054280
mov rsi, qword [rbp + 0x30]
mov rax, qword [rbp + 0x28]
mov rdx, rbx
lea r10d, [r14 - 1]
mov rcx, qword [0x1401cd8a0]
mov rbx, qword [0x1401cd890]
lea r8, [r12 + 0x10]
lea r9, [rsi + rax*4]
jmp 0x140054348
cmp r13d, 0x20
jne 0x140054345
mov eax, dword [rdx + 0x2c]
mov r15d, dword [rdx + 0x1c]
mov r14d, eax
movzx r11d, al
shr r14d, 0x18
movzx r11d, byte [rbx + r11]
xor r11d, dword [rdx + 0x10]
movzx r14d, byte [rbx + r14]
shl r14d, 0x18
xor r11d, r14d
mov r14d, eax
movzx eax, ah
shr r14d, 0x10
movzx eax, byte [rbx + rax]
movzx r14d, r14b
movzx r14d, byte [rbx + r14]
shl eax, 8
shl r14d, 0x10
xor r11d, r14d
mov r14d, dword [rdx + 0x14]
xor eax, r11d
mov r11d, dword [rdx + 0x18]
xor r14d, eax
movd xmm0, eax
xor r11d, r14d
movd xmm4, r14d
xor r15d, r11d
movd xmm1, r11d
punpckldq xmm0, xmm4
movd xmm3, r15d
punpckldq xmm1, xmm3
punpcklqdq xmm0, xmm1
movups xmmword [rdx + 0x30], xmm0
add rdx, r12
mov r11d, dword [rdx + r10*4]
add rcx, 4
mov eax, dword [rdx]
xor eax, dword [rcx - 4]
mov r14d, r11d
shr r14d, 0x18
movzx r14d, byte [rbx + r14]
xor eax, r14d
movzx r14d, r11b
movzx r14d, byte [rbx + r14]
shl r14d, 8
xor eax, r14d
mov r14d, r11d
shr r14d, 0x10
movzx r14d, r14b
movzx r14d, byte [rbx + r14]
shl r14d, 0x18
xor eax, r14d
mov r15d, eax
mov eax, r11d
movzx eax, ah
movzx r11d, byte [rbx + rax]
mov eax, r15d
shl r11d, 0x10
xor eax, r11d
mov dword [rdx + r12], eax
xor eax, dword [rdx + 4]
mov dword [rdx + rdi*4 + 4], eax
xor eax, dword [rdx + 8]
mov dword [rdx + rdi*4 + 8], eax
xor eax, dword [rdx + 0xc]
mov dword [rdx + rdi*4 + 0xc], eax
lea rax, [r8 + rdx]
cmp r9, rax
je 0x140054400
cmp r13d, 0x18
jne 0x1400542c0
mov eax, dword [rdx + 0x24]
mov r11d, dword [rdx + 0x10]
movq xmm1, qword [rdx + 0x10]
xor r11d, eax
movd xmm0, eax
movd xmm2, r11d
punpckldq xmm0, xmm2
pxor xmm0, xmm1
movq qword [rdx + 0x28], xmm0
jmp 0x140054345
mov rax, qword [rbp + 8]
lea rcx, [rbp + 8]
call qword [rax + 0x48]
test al, al
je 0x140054478
movzx eax, byte [0x140249251]
test al, al
je 0x1400549d0
mov rax, rsi
lea rcx, [rsi + 0x10]
nop dword [rax]
mov edx, dword [rax]
add rax, 4
bswap edx
mov dword [rax - 4], edx
cmp rax, rcx
jne 0x140054428
mov edx, dword [rbp + 0x10]
lea edx, [rdx*4]
shl rdx, 2
add rsi, rdx
add rdx, rax
nop dword [rax]
mov eax, dword [rsi]
add rsi, 4
bswap eax
mov dword [rsi - 4], eax
cmp rsi, rdx
jne 0x140054450
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [0x140249250]
test al, al
je 0x1400549c0
mov eax, dword [rbp + 0x10]
lea r9d, [rax*4 - 4]
cmp r9d, 4
jbe 0x1400549da
mov eax, r9d
mov r15d, 4
lea r10, [rsi + rax*4]
lea rax, [0x140249260]
mov ecx, r15d
lea r12, [rsi + rcx*4]
mov r8d, dword [r12]
movzx ecx, r8b
mov edx, r8d
movzx edi, byte [rbx + rcx]
mov ecx, r8d
shr ecx, 0x18
movzx r11d, byte [rbx + rcx]
mov ecx, dword [rax + rdi*4 + 0xc00]
movzx edi, dh
xor ecx, dword [rax + r11*4]
mov r11d, r8d
movzx r8d, byte [rbx + rdi]
shr r11d, 0x10
movzx r11d, r11b
movzx r11d, byte [rbx + r11]
xor ecx, dword [rax + r11*4 + 0x400]
mov r11d, dword [r10]
xor ecx, dword [rax + r8*4 + 0x800]
movzx r8d, r11b
mov edx, r11d
movzx r13d, byte [rbx + r8]
mov r8d, r11d
shr r8d, 0x18
movzx edi, byte [rbx + r8]
mov r8d, dword [rax + r13*4 + 0xc00]
xor r8d, dword [rax + rdi*4]
mov edi, r11d
shr edi, 0x10
movzx edi, dil
movzx edi, byte [rbx + rdi]
xor r8d, dword [rax + rdi*4 + 0x400]
movzx edi, dh
movzx r11d, byte [rbx + rdi]
xor r8d, dword [rax + r11*4 + 0x800]
mov dword [r12], r8d
mov dword [r10], ecx
lea ecx, [r15 + 1]
lea r11, [rsi + rcx*4]
mov edi, dword [r11]
movzx ecx, dil
mov edx, edi
movzx r12d, byte [rbx + rcx]
mov ecx, edi
shr ecx, 0x18
movzx r8d, byte [rbx + rcx]
mov ecx, dword [rax + r12*4 + 0xc00]
xor ecx, dword [rax + r8*4]
mov r8d, edi
movzx edi, dh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rbx + r8]
xor ecx, dword [rax + r8*4 + 0x400]
movzx r8d, byte [rbx + rdi]
xor ecx, dword [rax + r8*4 + 0x800]
lea r8d, [r9 + 1]
lea r12, [rsi + r8*4]
mov edi, dword [r12]
movzx r8d, dil
mov edx, edi
movzx r14d, byte [rbx + r8]
mov r8d, edi
shr r8d, 0x18
movzx r13d, byte [rbx + r8]
mov r8d, dword [rax + r14*4 + 0xc00]
xor r8d, dword [rax + r13*4]
mov r13d, edi
movzx edi, dh
shr r13d, 0x10
movzx edi, byte [rbx + rdi]
movzx r13d, r13b
movzx r13d, byte [rbx + r13]
xor r8d, dword [rax + r13*4 + 0x400]
xor r8d, dword [rax + rdi*4 + 0x800]
mov dword [r11], r8d
mov dword [r12], ecx
lea ecx, [r15 + 2]
lea r11, [rsi + rcx*4]
mov edi, dword [r11]
movzx ecx, dil
mov edx, edi
movzx r12d, byte [rbx + rcx]
mov ecx, edi
shr ecx, 0x18
movzx r8d, byte [rbx + rcx]
mov ecx, dword [rax + r12*4 + 0xc00]
xor ecx, dword [rax + r8*4]
mov r8d, edi
movzx edi, dh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rbx + r8]
xor ecx, dword [rax + r8*4 + 0x400]
movzx r8d, byte [rbx + rdi]
xor ecx, dword [rax + r8*4 + 0x800]
lea r8d, [r9 + 2]
lea r12, [rsi + r8*4]
mov edi, dword [r12]
movzx r8d, dil
mov edx, edi
movzx r14d, byte [rbx + r8]
mov r8d, edi
shr r8d, 0x18
movzx r13d, byte [rbx + r8]
mov r8d, dword [rax + r14*4 + 0xc00]
xor r8d, dword [rax + r13*4]
mov r13d, edi
movzx edi, dh
shr r13d, 0x10
movzx edi, byte [rbx + rdi]
movzx r13d, r13b
movzx r13d, byte [rbx + r13]
xor r8d, dword [rax + r13*4 + 0x400]
xor r8d, dword [rax + rdi*4 + 0x800]
mov dword [r11], r8d
mov dword [r12], ecx
lea ecx, [r15 + 3]
lea r11, [rsi + rcx*4]
mov edi, dword [r11]
movzx ecx, dil
mov edx, edi
movzx r12d, byte [rbx + rcx]
mov ecx, edi
shr ecx, 0x18
movzx r8d, byte [rbx + rcx]
mov ecx, dword [rax + r12*4 + 0xc00]
xor ecx, dword [rax + r8*4]
mov r8d, edi
movzx edi, dh
shr r8d, 0x10
sub r10, 0x10
movzx r8d, r8b
movzx r8d, byte [rbx + r8]
xor ecx, dword [rax + r8*4 + 0x400]
movzx r8d, byte [rbx + rdi]
xor ecx, dword [rax + r8*4 + 0x800]
lea r8d, [r9 + 3]
sub r9d, 4
lea r12, [rsi + r8*4]
mov edi, dword [r12]
movzx r8d, dil
mov edx, edi
movzx r14d, byte [rbx + r8]
mov r8d, edi
shr r8d, 0x18
movzx r13d, byte [rbx + r8]
mov r8d, dword [rax + r14*4 + 0xc00]
xor r8d, dword [rax + r13*4]
mov r13d, edi
movzx edi, dh
shr r13d, 0x10
movzx edi, byte [rbx + rdi]
movzx r13d, r13b
movzx r13d, byte [rbx + r13]
xor r8d, dword [rax + r13*4 + 0x400]
xor r8d, dword [rax + rdi*4 + 0x800]
mov dword [r11], r8d
mov dword [r12], ecx
mov ecx, r15d
add r15d, 4
cmp r15d, r9d
jb 0x1400544b0
mov edx, r15d
lea r11d, [rcx + 5]
lea r9d, [rcx + 6]
add ecx, 7
shl rdx, 2
shl r11, 2
lea r15, [rcx*4]
shl r9, 2
add rdx, rsi
add r11, rsi
add r9, rsi
mov r10d, dword [rdx]
movzx r8d, r10b
mov ecx, r10d
movzx r12d, byte [rbx + r8]
mov r8d, r10d
shr r8d, 0x18
movzx edi, byte [rbx + r8]
mov r8d, dword [rax + r12*4 + 0xc00]
xor r8d, dword [rax + rdi*4]
mov edi, r10d
shr edi, 0x10
movzx edi, dil
movzx edi, byte [rbx + rdi]
xor r8d, dword [rax + rdi*4 + 0x400]
movzx edi, ch
movzx r10d, byte [rbx + rdi]
xor r8d, dword [rax + r10*4 + 0x800]
mov dword [rdx], r8d
mov r8d, dword [r11]
movzx edx, r8b
mov ecx, r8d
movzx edi, byte [rbx + rdx]
mov edx, r8d
shr edx, 0x18
movzx r10d, byte [rbx + rdx]
mov edx, dword [rax + rdi*4 + 0xc00]
movzx edi, ch
xor edx, dword [rax + r10*4]
mov r10d, r8d
movzx r8d, byte [rbx + rdi]
shr r10d, 0x10
movzx r10d, r10b
movzx r10d, byte [rbx + r10]
xor edx, dword [rax + r10*4 + 0x400]
xor edx, dword [rax + r8*4 + 0x800]
mov dword [r11], edx
mov edi, dword [r9]
movzx edx, dil
mov ecx, edi
movzx r11d, byte [rbx + rdx]
mov edx, edi
shr edx, 0x18
movzx r10d, byte [rbx + rdx]
mov edx, dword [rax + r11*4 + 0xc00]
xor edx, dword [rax + r10*4]
mov r10d, edi
movzx edi, ch
shr r10d, 0x10
movzx r8d, byte [rbx + rdi]
movzx r10d, r10b
movzx r10d, byte [rbx + r10]
xor edx, dword [rax + r10*4 + 0x400]
xor edx, dword [rax + r8*4 + 0x800]
mov dword [r9], edx
lea r9, [rsi + r15]
mov ecx, dword [r9]
movzx edx, cl
movzx r10d, byte [rbx + rdx]
mov edx, ecx
shr edx, 0x18
movzx r8d, byte [rbx + rdx]
mov edx, dword [rax + r10*4 + 0xc00]
xor edx, dword [rax + r8*4]
mov r8d, ecx
movzx ecx, ch
shr r8d, 0x10
movzx ecx, byte [rbx + rcx]
movzx r8d, r8b
movzx r8d, byte [rbx + r8]
xor edx, dword [rax + r8*4 + 0x400]
xor edx, dword [rax + rcx*4 + 0x800]
mov dword [r9], edx
mov edx, dword [rbp + 0x10]
mov eax, dword [rsi]
lea edx, [rdx*4]
mov edx, dword [rsi + rdx*4]
bswap eax
bswap edx
mov dword [rsi], edx
mov edx, dword [rbp + 0x10]
lea edx, [rdx*4]
mov dword [rsi + rdx*4], eax
mov edx, dword [rbp + 0x10]
mov eax, dword [rsi + 4]
lea edx, [rdx*4 + 1]
mov edx, dword [rsi + rdx*4]
bswap eax
bswap edx
mov dword [rsi + 4], edx
mov edx, dword [rbp + 0x10]
lea edx, [rdx*4 + 1]
mov dword [rsi + rdx*4], eax
mov eax, dword [rbp + 0x10]
mov edx, dword [rsi + 8]
lea eax, [rax*4 + 2]
mov eax, dword [rsi + rax*4]
bswap edx
bswap eax
mov dword [rsi + 8], eax
mov eax, dword [rbp + 0x10]
lea eax, [rax*4 + 2]
mov dword [rsi + rax*4], edx
mov edx, dword [rbp + 0x10]
mov eax, dword [rsi + 0xc]
lea edx, [rdx*4 + 3]
mov edx, dword [rsi + rdx*4]
bswap eax
bswap edx
mov dword [rsi + 0xc], edx
mov edx, dword [rbp + 0x10]
lea edx, [rdx*4 + 3]
mov dword [rsi + rdx*4], eax
jmp 0x140054460
mov edi, r14d
mov esi, r13d
movabs rax, 0x3fffffffffffffff
mov qword [rbp + 0x30], 0
lea r12, [rdi*4]
mov qword [rbp + 0x28], 0
mov qword [rbp + 0x20], rax
cmp r12, rsi
jb 0x1400549fd
xor ebx, ebx
jmp 0x140054255
call method.CryptoPP::Rijndael::Base.FillDecTable__
jmp 0x140054487
call method.CryptoPP::Rijndael::Base.FillEncTable__
jmp 0x14005441e
mov r15d, 0x1c
mov r9d, 0x18
mov r11d, 0x14
mov edx, 0x10
lea rax, [0x140249260]
jmp 0x1400547a5
mov ecx, 0x30
lea rdi, [rsp + 0x20]
call sym.__cxa_allocate_exception
lea rdx, [0x1401c6d58]
mov rcx, rdi
mov rsi, rax
call fcn.1401b7200
mov r8, rdi
mov edx, 1
mov rcx, rsi
call fcn.1400b5fd0
lea rax, method.CryptoPP::InvalidArgument.InvalidArgument__
mov rcx, rdi
mov qword [rsi], rax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea r8, [method.CryptoPP::InvalidArgument.InvalidArgument__]
lea rdx, [0x1401dd050]
mov rcx, rsi
call sym.__cxa_throw
mov rbx, rax
jmp 0x140054a66
mov rcx, rsi
call sym.__cxa_free_exception
mov rcx, rbx
call sym._Unwind_Resume
nop
nop
nop dword [rax + rax]