Function at 0x474800
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
test rdx, rdx
mov rsi, rcx
je 0x474db0
cmp rdx, 0xfffffffffffffffc
mov ebp, dword [rdx]
je 0x474e36
mov r13d, dword [rdx + 4]
mov rdi, qword [rsi + 0x30]
mov eax, dword [rdi + 0x10]
xor ebp, dword [rdi]
xor r13d, dword [rdi + 4]
mov r12d, dword [rdi + 8]
mov dword [rsp + 0x28], eax
mov eax, dword [rdi + 0x14]
xor r12d, dword [rdx + 8]
mov ebx, dword [rdi + 0xc]
xor ebx, dword [rdx + 0xc]
mov dword [rsp + 0x2c], eax
mov r15d, dword [rdi + 0x18]
lea rax, [rdi + 0x20]
mov r14d, dword [rdi + 0x1c]
mov qword [rsp + 0x20], rax
mov rax, qword [0x0062dd50]
cmp byte [rax], 0
je 0x474d80
mov rax, qword [0x0062dd40]
mov dword [rsp + 0x3c], 0
xor edx, edx
mov r11d, dword [rsp + 0x3c]
mov r10d, dword [rax]
lea rax, [0x0069c280]
mov ecx, edx
add edx, r10d
and r11d, dword [rax + rcx]
cmp edx, 0x3ff
jbe 0x474893
and r11d, dword [0x0069c67c]
or r12d, r11d
or ebx, r11d
or r13d, r11d
mov r10d, r12d
or ebp, r11d
movzx r11d, bl
shr r10d, 0x18
mov edx, ebx
movzx ebx, bh
mov r10d, dword [rax + r10*4]
mov ecx, r13d
rol r10d, 8
xor r10d, dword [rax + r11*4]
xor r14d, r10d
mov r10d, r13d
shr r10d, 0x10
movzx r10d, r10b
mov r10d, dword [rax + r10*4]
rol r10d, 0x10
xor r14d, r10d
mov r10d, r13d
movzx r13d, r13b
shr r10d, 0x18
mov r11d, dword [rax + r10*4]
movzx r10d, r12b
rol r11d, 8
xor r11d, dword [rax + r10*4]
mov r10d, edx
shr r10d, 0x18
xor r15d, r11d
mov r11d, dword [rax + rbx*4]
mov ebx, dword [rax + r10*4]
movzx r10d, bpl
ror r11d, 8
rol ebx, 8
xor ebx, dword [rax + r10*4]
mov r10d, r12d
xor r15d, r11d
shr r10d, 0x10
xor ebx, dword [rsp + 0x28]
mov r11d, ebp
movzx r10d, r10b
shr r11d, 0x10
mov r10d, dword [rax + r10*4]
movzx r11d, r11b
mov r11d, dword [rax + r11*4]
rol r10d, 0x10
xor r10d, ebx
movzx ebx, ch
mov ecx, ebp
mov ebx, dword [rax + rbx*4]
movzx ecx, ch
rol r11d, 0x10
xor r11d, r15d
ror ebx, 8
xor ebx, r10d
mov r10d, dword [rax + rcx*4]
mov ecx, dword [rax + r13*4]
ror r10d, 8
xor r10d, r14d
shr ebp, 0x18
mov ebp, dword [rax + rbp*4]
shr edx, 0x10
rol ebp, 8
xor ecx, ebp
mov ebp, dword [rsp + 0x2c]
xor ebp, ecx
movzx ecx, dl
mov edx, dword [rax + rcx*4]
mov ecx, r12d
movzx ecx, ch
rol edx, 0x10
xor ebp, edx
mov edx, dword [rax + rcx*4]
mov ecx, dword [rsi + 0x10]
ror edx, 8
shr ecx, 1
xor edx, ebp
mov rbp, qword [rsp + 0x20]
lea r15d, [rcx - 2]
mov dword [rsp + 0x28], edx
lea r12, [r15 + 2]
shl r12, 5
add r12, rdi
nop dword [rax + rax]
mov edi, dword [rsp + 0x28]
movzx esi, bl
mov edx, r10d
movzx r13d, r11b
mov ecx, edi
shr ecx, 0x18
mov ecx, dword [rax + rcx*4]
xor ecx, dword [rbp + 4]
xor ecx, dword [rax + rsi*4 + 0xc00]
movzx esi, dh
mov edx, edi
xor ecx, dword [rax + rsi*4 + 0x800]
mov esi, r11d
movzx edi, dil
shr esi, 0x10
movzx edx, dh
movzx esi, sil
xor ecx, dword [rax + rsi*4 + 0x400]
mov esi, r11d
shr esi, 0x18
mov esi, dword [rax + rsi*4]
xor esi, dword [rbp + 8]
xor esi, dword [rax + rdi*4 + 0xc00]
mov edi, r10d
shr edi, 0x10
movzx edi, dil
xor esi, dword [rax + rdi*4 + 0x400]
movzx edi, bh
xor esi, dword [rax + rdi*4 + 0x800]
mov edi, r10d
movzx r10d, r10b
shr edi, 0x18
mov edi, dword [rax + rdi*4]
xor edi, dword [rbp + 0xc]
xor edi, dword [rax + r13*4 + 0xc00]
mov r13d, ebx
shr ebx, 0x18
xor edi, dword [rax + rdx*4 + 0x800]
mov edx, r11d
shr r13d, 0x10
movzx edx, dh
mov ebx, dword [rax + rbx*4]
movzx r13d, r13b
xor ebx, dword [rbp]
xor ebx, dword [rax + r10*4 + 0xc00]
xor ebx, dword [rax + rdx*4 + 0x800]
mov edx, dword [rsp + 0x28]
xor edi, dword [rax + r13*4 + 0x400]
mov r10d, dword [rbp + 0x1c]
shr edx, 0x10
movzx edx, dl
xor ebx, dword [rax + rdx*4 + 0x400]
mov edx, edi
shr edx, 0x18
xor r10d, dword [rax + rdx*4]
mov edx, esi
shr edx, 0x18
mov r11d, dword [rax + rdx*4]
movzx edx, cl
movzx r13d, bl
xor r11d, dword [rbp + 0x18]
xor r11d, dword [rax + rdx*4 + 0xc00]
mov edx, edi
shr edx, 0x10
movzx edx, dl
xor r11d, dword [rax + rdx*4 + 0x400]
mov edx, ecx
shr edx, 0x18
mov edx, dword [rax + rdx*4]
xor edx, dword [rbp + 0x14]
add rbp, 0x20
xor edx, dword [rax + r13*4 + 0xc00]
mov r13d, esi
shr r13d, 0x10
movzx r13d, r13b
mov r14d, edx
mov edx, edi
movzx edi, dil
movzx edx, dh
mov edx, dword [rax + rdx*4 + 0x800]
xor edx, r14d
xor edx, dword [rax + r13*4 + 0x400]
movzx r14d, sil
mov r13d, ebx
xor r10d, dword [rax + r14*4 + 0xc00]
shr r13d, 0x10
movzx r13d, r13b
mov dword [rsp + 0x28], edx
movzx edx, bh
shr ebx, 0x18
xor r11d, dword [rax + rdx*4 + 0x800]
movzx edx, ch
shr ecx, 0x10
xor r10d, dword [rax + rdx*4 + 0x800]
mov edx, esi
movzx ecx, cl
mov ebx, dword [rax + rbx*4]
movzx esi, dh
xor ebx, dword [rbp - 0x10]
xor r10d, dword [rax + r13*4 + 0x400]
xor ebx, dword [rax + rdi*4 + 0xc00]
xor ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + rcx*4 + 0x400]
cmp rbp, r12
jne 0x4749d0
movzx ecx, r11b
mov edi, r11d
mov r14d, dword [rsp + 0x28]
add r15, 1
lea rax, [0x0069c281]
shr edi, 0x10
movabs r12, 0xffffffffffffff
movzx esi, byte [rax + rcx*4]
mov ecx, r11d
movzx edi, dil
shr r11d, 0x18
movzx ecx, ch
movzx edi, byte [rax + rdi*4]
shl r15, 5
movzx ecx, byte [rax + rcx*4]
mov edx, r14d
add r15, qword [rsp + 0x20]
shl rsi, 0x38
mov sil, byte [rax + r11*4]
movzx r11d, r14b
movzx ebp, byte [rax + r11*4]
shl rdi, 0x28
shl rcx, 0x10
or rcx, rdi
movabs rdi, 0xffffffff00ffffff
and rsi, rdi
mov r11, rbp
mov rbp, rsi
movzx esi, dh
movzx esi, byte [rax + rsi*4]
shl r11, 0x18
or rbp, r11
movabs r11, 0xff00ffffffffffff
and rbp, r11
shl rsi, 0x30
or rbp, rsi
mov esi, r14d
shr esi, 0x10
and rbp, 0xffffffffff00ffff
movzx esi, sil
movzx esi, byte [rax + rsi*4]
mov rdx, rsi
mov ch, dl
mov edx, r14d
shr edx, 0x18
movzx esi, byte [rax + rdx*4]
movabs rdx, 0xffffff00ffffffff
and rcx, rdx
shl rsi, 0x20
or rcx, rsi
movzx esi, bl
movzx esi, byte [rax + rsi*4]
and rcx, r12
shl rsi, 0x38
or rcx, rsi
movzx esi, bh
movzx esi, byte [rax + rsi*4]
shl rsi, 0x10
or rsi, rbp
mov ebp, ebx
shr ebx, 0x18
shr ebp, 0x10
mov cl, byte [rax + rbx*4]
movzx ebx, r10b
movzx ebp, bpl
movzx ebx, byte [rax + rbx*4]
movzx r12d, byte [rax + rbp*4]
movabs rbp, 0xffff00ffffffffff
and rsi, rbp
shl rbx, 0x18
shl r12, 0x28
or rsi, r12
and rcx, rdi
or rcx, rbx
mov ebx, r10d
and r11, rcx
mov ecx, r10d
movzx ebx, bh
shr ecx, 0x10
shr r10d, 0x18
movzx edi, byte [rax + rbx*4]
mov rbx, rsi
movzx ecx, cl
movzx ecx, byte [rax + rcx*4]
movzx eax, byte [rax + r10*4]
shl rdi, 0x30
or r11, rdi
mov bh, cl
mov rsi, rbx
shl rax, 0x20
and rsi, rdx
lea rdx, [r9 + 4]
or rsi, rax
mov eax, dword [r15]
xor eax, r11d
test r8, r8
je 0x474dc0
test r9, r9
mov ecx, dword [r8]
je 0x474d62
xor eax, ecx
shr r11, 0x20
mov dword [r9], eax
xor r11d, dword [r15 + 4]
cmp r8, 0xfffffffffffffffc
je 0x474d70
test rdx, rdx
je 0x474e10
xor r11d, dword [r8 + 4]
lea rdx, [r8 + 0xc]
mov rax, rsi
shr rax, 0x20
mov dword [r9 + 4], r11d
xor esi, dword [r15 + 8]
xor esi, dword [r8 + 8]
mov dword [r9 + 8], esi
mov esi, dword [r15 + 0xc]
xor esi, eax
xor esi, dword [rdx]
mov dword [r9 + 0xc], esi
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
shr r11, 0x20
xor r11d, dword [r15 + 4]
cmp r8, 0xfffffffffffffffc
jne 0x474d26
lea rcx, [r9 + 8]
test rdx, rdx
je 0x474de1
mov dword [r9 + 4], r11d
jmp 0x474de1
mov qword [rsp + 0xa8], r9
mov qword [rsp + 0xa0], r8
call method.CryptoPP.DetectX86Features__
mov r9, qword [rsp + 0xa8]
mov r8, qword [rsp + 0xa0]
jmp 0x474873
xor ebp, ebp
jmp 0x474828
test r9, r9
je 0x474e2f
mov dword [r9], eax
lea rcx, [r9 + 8]
test rdx, rdx
lea rax, [r9 + 0xc]
je 0x474dea
shr r11, 0x20
xor r11d, dword [r15 + 4]
mov dword [r9 + 4], r11d
lea rax, [r9 + 0xc]
test rcx, rcx
je 0x474df4
mov edx, dword [r15 + 8]
xor edx, esi
mov dword [r9 + 8], edx
shr rsi, 0x20
xor esi, dword [r15 + 0xc]
test rax, rax
je 0x474d51
jmp 0x474d4d
mov eax, dword [r15 + 8]
lea rdx, [r8 + 0xc]
xor eax, esi
xor eax, dword [r8 + 8]
shr rsi, 0x20
mov dword [r9 + 8], eax
xor esi, dword [r15 + 0xc]
jmp 0x474d4b
mov ecx, 8
jmp 0x474dd5
xor r13d, r13d
jmp 0x47482c