Function at 0x474e50
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, 0x58
test rdx, rdx
mov r13, rcx
je 0x475412
cmp rdx, 0xfffffffffffffffc
mov esi, dword [rdx]
je 0x475499
mov edi, dword [rdx + 4]
mov rbp, qword [r13 + 0x30]
mov eax, dword [rbp + 0x10]
xor esi, dword [rbp]
xor edi, dword [rbp + 4]
mov r12d, dword [rbp + 8]
mov dword [rsp + 0x2c], eax
mov eax, dword [rbp + 0x1c]
xor r12d, dword [rdx + 8]
mov r14d, dword [rbp + 0xc]
xor r14d, dword [rdx + 0xc]
mov dword [rsp + 0x38], eax
mov r15d, dword [rbp + 0x14]
lea rax, [rbp + 0x20]
mov ecx, dword [rbp + 0x18]
mov qword [rsp + 0x30], rax
mov rax, qword [0x0062dd50]
cmp byte [rax], 0
je 0x4753e0
mov rax, qword [0x0062dd40]
mov dword [rsp + 0x4c], 0
xor edx, edx
mov r10d, dword [rsp + 0x4c]
mov r11d, dword [rax]
lea rax, [0x0069b280]
mov ebx, edx
add edx, r11d
and r10d, dword [rax + rbx]
cmp edx, 0x3ff
jbe 0x474ee3
and r10d, dword [0x0069b67c]
or r12d, r10d
or edi, r10d
or esi, r10d
or r10d, r14d
mov edx, r10d
shr edx, 0x18
mov r14d, dword [rax + rdx*4]
movzx edx, r12b
rol r14d, 8
xor r14d, dword [rax + rdx*4]
mov edx, r12d
shr edx, 0x18
mov ebx, dword [rax + rdx*4]
movzx edx, dil
xor ecx, r14d
rol ebx, 8
xor ebx, dword [rax + rdx*4]
mov edx, r10d
shr edx, 0x10
movzx edx, dl
xor r15d, ebx
mov ebx, dword [rax + rdx*4]
mov edx, edi
movzx edx, dh
mov r14d, dword [rax + rdx*4]
mov edx, edi
shr edx, 0x18
mov edx, dword [rax + rdx*4]
rol ebx, 0x10
xor ebx, r15d
ror r14d, 8
xor ecx, r14d
movzx r14d, sil
mov dword [rsp + 0x3c], ecx
mov ecx, r10d
rol edx, 8
xor edx, dword [rax + r14*4]
movzx ecx, ch
xor edx, dword [rsp + 0x2c]
movzx r10d, r10b
mov r14d, dword [rax + rcx*4]
mov ecx, esi
movzx ecx, ch
mov r15d, dword [rax + rcx*4]
mov ecx, r12d
movzx ecx, ch
ror r14d, 8
mov ecx, dword [rax + rcx*4]
xor r14d, edx
mov edx, r12d
shr edx, 0x10
ror r15d, 8
movzx edx, dl
xor r15d, ebx
mov ebx, esi
mov edx, dword [rax + rdx*4]
shr ebx, 0x10
movzx ebx, bl
rol edx, 0x10
xor edx, r14d
mov r14d, dword [rax + rbx*4]
rol r14d, 0x10
xor r14d, dword [rsp + 0x3c]
shr esi, 0x18
mov ebx, dword [rax + rsi*4]
shr edi, 0x10
movzx edi, dil
ror ecx, 8
rol ebx, 8
xor ebx, dword [rax + r10*4]
xor ebx, dword [rsp + 0x38]
xor ecx, ebx
mov ebx, dword [rax + rdi*4]
mov rdi, qword [rsp + 0x30]
rol ebx, 0x10
xor ebx, ecx
mov ecx, dword [r13 + 0x10]
mov esi, ebx
shr ecx, 1
lea r12d, [rcx - 2]
lea rcx, [r12 + 2]
shl rcx, 5
add rbp, rcx
nop word [rax + rax]
mov ecx, esi
movzx r10d, dl
mov ebx, r15d
shr ecx, 0x18
movzx ebx, bh
movzx r13d, r14b
mov ecx, dword [rax + rcx*4]
xor ecx, dword [rdi + 0xc]
xor ecx, dword [rax + r10*4 + 0xc00]
mov r10d, r14d
shr r10d, 0x10
movzx r10d, r10b
xor ecx, dword [rax + r10*4 + 0x400]
mov r10d, r14d
shr r10d, 0x18
xor ecx, dword [rax + rbx*4 + 0x800]
mov ebx, dword [rax + r10*4]
movzx r10d, sil
xor ebx, dword [rdi + 8]
xor ebx, dword [rax + r10*4 + 0xc00]
mov r10d, r15d
shr r10d, 0x10
mov dword [rsp + 0x2c], ecx
movzx ecx, dh
movzx r10d, r10b
xor ebx, dword [rax + r10*4 + 0x400]
mov r10d, r15d
movzx r15d, r15b
xor ebx, dword [rax + rcx*4 + 0x800]
shr r10d, 0x18
mov ecx, esi
mov r10d, dword [rax + r10*4]
movzx ecx, ch
shr esi, 0x10
xor r10d, dword [rdi + 4]
movzx esi, sil
xor r10d, dword [rax + r13*4 + 0xc00]
mov r13d, edx
shr edx, 0x18
xor r10d, dword [rax + rcx*4 + 0x800]
shr r13d, 0x10
mov ecx, r14d
movzx r13d, r13b
mov edx, dword [rax + rdx*4]
xor edx, dword [rdi]
xor edx, dword [rax + r15*4 + 0xc00]
xor edx, dword [rax + rsi*4 + 0x400]
movzx esi, ch
mov ecx, dword [rsp + 0x2c]
xor r10d, dword [rax + r13*4 + 0x400]
xor edx, dword [rax + rsi*4 + 0x800]
mov esi, ebx
shr esi, 0x18
mov r14d, dword [rax + rsi*4]
movzx esi, cl
xor r14d, dword [rdi + 0x18]
xor r14d, dword [rax + rsi*4 + 0xc00]
mov esi, r10d
movzx r13d, dl
shr esi, 0x10
movzx esi, sil
xor r14d, dword [rax + rsi*4 + 0x400]
mov esi, r10d
shr esi, 0x18
mov r15d, dword [rax + rsi*4]
movzx esi, bl
xor r15d, dword [rdi + 0x14]
xor r15d, dword [rax + rsi*4 + 0xc00]
movzx esi, ch
xor r15d, dword [rax + rsi*4 + 0x800]
mov esi, ecx
add rdi, 0x20
shr esi, 0x18
mov ecx, dword [rdi - 4]
xor ecx, dword [rax + rsi*4]
mov esi, dword [rax + r13*4 + 0xc00]
mov r13d, ebx
movzx ebx, bh
shr r13d, 0x10
movzx r13d, r13b
xor esi, ecx
mov ecx, r10d
xor esi, dword [rax + r13*4 + 0x400]
mov r13d, edx
movzx ecx, ch
shr r13d, 0x10
xor esi, dword [rax + rcx*4 + 0x800]
movzx ecx, dh
shr edx, 0x18
movzx r13d, r13b
xor r14d, dword [rax + rcx*4 + 0x800]
movzx r10d, r10b
mov ecx, dword [rsp + 0x2c]
mov edx, dword [rax + rdx*4]
xor edx, dword [rdi - 0x10]
xor r15d, dword [rax + r13*4 + 0x400]
shr ecx, 0x10
xor edx, dword [rax + r10*4 + 0xc00]
movzx ecx, cl
xor edx, dword [rax + rcx*4 + 0x400]
xor edx, dword [rax + rbx*4 + 0x800]
cmp rdi, rbp
jne 0x475010
add r12, 1
mov ecx, dword [rsp + 0x4c]
mov ebx, esi
xor eax, eax
shl r12, 5
mov r10, qword [0x0062dd80]
add r12, qword [rsp + 0x30]
nop
mov esi, eax
add eax, r11d
and ecx, dword [rsi + r10]
cmp eax, 0xff
jbe 0x4751f0
and ecx, dword [r10 + 0xfc]
movabs rbp, 0xffffffffffffff
or r14d, ecx
or edx, ecx
or r15d, ecx
movzx eax, r14b
or ebx, ecx
movzx esi, r15b
movzx ecx, byte [r10 + rax]
mov eax, r14d
movzx eax, ah
movzx edi, byte [r10 + rsi]
movzx r11d, byte [r10 + rax]
mov eax, r14d
shr r14d, 0x18
shr eax, 0x10
movzx eax, al
shl rcx, 0x38
movzx eax, byte [r10 + rax]
shl rdi, 0x18
shl r11, 0x10
or rcx, r11
movabs r11, 0xff00ffffffffffff
shl rax, 0x28
mov al, byte [r10 + r14]
mov r14, rcx
mov ecx, r15d
movzx esi, ch
movzx esi, byte [r10 + rsi]
and rax, r11
shl rsi, 0x30
or rax, rsi
mov esi, r15d
shr r15d, 0x18
shr esi, 0x10
movzx esi, sil
movzx esi, byte [r10 + rsi]
mov rcx, rsi
movzx esi, byte [r10 + r15]
mov ah, cl
mov rcx, r14
or rcx, rdi
movzx edi, dl
and rax, rbp
movzx edi, byte [r10 + rdi]
shl rsi, 0x20
or rcx, rsi
movabs rsi, 0xffffffff00ffffff
shl rdi, 0x38
or rax, rdi
movzx edi, dh
movzx edi, byte [r10 + rdi]
and rax, 0xffffffffff00ffff
shl rdi, 0x10
or rax, rdi
mov edi, edx
shr edx, 0x18
shr edi, 0x10
and rax, rsi
movzx edi, dil
movzx edi, byte [r10 + rdi]
shl rdi, 0x28
or rcx, rdi
mov cl, byte [r10 + rdx]
movzx edx, bl
movzx edx, byte [r10 + rdx]
shl rdx, 0x18
or rax, rdx
movzx edx, bh
and rcx, r11
movzx edx, byte [r10 + rdx]
shl rdx, 0x30
or rcx, rdx
mov edx, ebx
shr ebx, 0x18
shr edx, 0x10
movzx edx, dl
movzx edx, byte [r10 + rdx]
mov ch, dl
movzx edx, byte [r10 + rbx]
movabs r10, 0xffffff00ffffffff
and rax, r10
lea r10, [r9 + 4]
shl rdx, 0x20
or rax, rdx
mov edx, dword [r12]
xor edx, ecx
test r8, r8
je 0x475420
test r9, r9
mov r11d, dword [r8]
je 0x4753c0
xor edx, r11d
shr rcx, 0x20
mov dword [r9], edx
xor ecx, dword [r12 + 4]
cmp r8, 0xfffffffffffffffc
je 0x4753cf
test r10, r10
je 0x475470
xor ecx, dword [r8 + 4]
mov rdx, rax
shr rdx, 0x20
mov dword [r9 + 4], ecx
xor eax, dword [r12 + 8]
lea rcx, [r8 + 0xc]
xor eax, dword [r8 + 8]
mov dword [r9 + 8], eax
mov eax, dword [r12 + 0xc]
xor eax, edx
xor eax, dword [rcx]
mov dword [r9 + 0xc], eax
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
shr rcx, 0x20
xor ecx, dword [r12 + 4]
cmp r8, 0xfffffffffffffffc
jne 0x475382
lea r8, [r9 + 8]
test r10, r10
je 0x475442
mov dword [r9 + 4], ecx
jmp 0x475442
mov qword [rsp + 0xb8], r9
mov qword [rsp + 0xb0], r8
mov dword [rsp + 0x3c], ecx
call method.CryptoPP.DetectX86Features__
mov r9, qword [rsp + 0xb8]
mov r8, qword [rsp + 0xb0]
mov ecx, dword [rsp + 0x3c]
jmp 0x474ec3
xor esi, esi
jmp 0x474e78
test r9, r9
je 0x475491
mov dword [r9], edx
lea r8, [r9 + 8]
test r10, r10
lea rdx, [r9 + 0xc]
je 0x47544b
shr rcx, 0x20
xor ecx, dword [r12 + 4]
mov dword [r9 + 4], ecx
lea rdx, [r9 + 0xc]
test r8, r8
je 0x475456
mov ecx, dword [r12 + 8]
xor ecx, eax
mov dword [r9 + 8], ecx
shr rax, 0x20
xor eax, dword [r12 + 0xc]
test rdx, rdx
je 0x4753af
jmp 0x4753ab
mov edx, dword [r12 + 8]
lea rcx, [r8 + 0xc]
xor edx, eax
xor edx, dword [r8 + 8]
shr rax, 0x20
mov dword [r9 + 8], edx
xor eax, dword [r12 + 0xc]
jmp 0x4753a9
mov r8d, 8
jmp 0x475435
xor edi, edi
jmp 0x474e7b