Function at 0x520c30
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x3f8
lea rbx, [rsp + 0xdf]
mov rsi, r9
mov r12, r8
mov qword [rsp + 0x440], rcx
and rbx, 0xffffffffffffff80
mov r8, rdx
mov qword [rsp + 0x448], rdx
mov rdx, rcx
lea rdi, [rbx + 0x100]
mov rcx, rdi
call fcn.005207d0
mov r8, rsi
mov rdx, r12
mov rcx, rdi
call fcn.00514050
cmp qword [rsp + 0x470], 0
je 0x520fa2
lea rdi, [rsp + 0x5c]
mov eax, 0x1000000
mov qword [rsp + 0x38], 1
lea rsi, [rbx + 0x300]
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x30], 0
lea rbp, [rbx + 0x200]
lea rdi, [rbx + 0x80]
mov qword [rsp + 0x48], rsi
lea r12, [rbx + 0x280]
nop dword [rax]
vmovdqu xmm0, xmmword [rbx + 0x100]
mov dword [rsp + 0x5c], eax
mov rcx, rbx
mov r8d, 4
vmovdqu xmm1, xmmword [rbx + 0x110]
vmovdqu xmm2, xmmword [rbx + 0x120]
vmovups xmmword [rbx], xmm0
vmovdqu xmm3, xmmword [rbx + 0x130]
vmovups xmmword [rbx + 0x10], xmm1
vmovdqu xmm4, xmmword [rbx + 0x140]
vmovups xmmword [rbx + 0x20], xmm2
vmovdqu xmm5, xmmword [rbx + 0x150]
vmovups xmmword [rbx + 0x30], xmm3
vmovdqu xmm0, xmmword [rbx + 0x160]
vmovups xmmword [rbx + 0x40], xmm4
vmovdqu xmm1, xmmword [rbx + 0x170]
vmovups xmmword [rbx + 0x50], xmm5
vmovdqu xmm2, xmmword [rbx + 0x180]
vmovups xmmword [rbx + 0x60], xmm0
vmovdqu xmm3, xmmword [rbx + 0x190]
vmovups xmmword [rbx + 0x70], xmm1
vmovdqu xmm4, xmmword [rbx + 0x1a0]
vmovups xmmword [rbx + 0x80], xmm2
vmovdqu xmm5, xmmword [rbx + 0x1b0]
vmovups xmmword [rbx + 0x90], xmm3
vmovdqu xmm0, xmmword [rbx + 0x1c0]
vmovups xmmword [rbx + 0xa0], xmm4
vmovdqu xmm1, xmmword [rbx + 0x1d0]
vmovups xmmword [rbx + 0xb0], xmm5
vmovdqu xmm2, xmmword [rbx + 0x1e0]
vmovups xmmword [rbx + 0xc0], xmm0
vmovdqu xmm3, xmmword [rbx + 0x1f0]
vmovups xmmword [rbx + 0xd0], xmm1
vmovups xmmword [rbx + 0xe0], xmm2
vmovups xmmword [rbx + 0xf0], xmm3
mov rdx, qword [rsp + 0x40]
call fcn.00514050
mov rdx, rbp
mov rcx, rbx
call fcn.00514520
mov r8d, 0x20
mov rdx, rbp
mov rcx, rdi
call fcn.00514050
mov rdx, r12
mov rcx, rdi
call fcn.00514520
vmovdqu xmm4, xmmword [rbx + 0x280]
cmp qword [rsp + 0x460], 1
vmovdqu xmm5, xmmword [rbx + 0x290]
vmovups xmmword [rbx + 0x300], xmm4
vmovups xmmword [rbx + 0x310], xmm5
jbe 0x520f04
mov r15, qword [rbx + 0x308]
mov esi, 2
mov r13, qword [rbx + 0x318]
mov r11, qword [rbx + 0x300]
mov r14, qword [rbx + 0x310]
mov r10, r13
mov r13, r15
mov r15, r11
nop
mov r8, qword [rsp + 0x448]
mov rcx, rbx
mov qword [rsp + 0x28], r10
add rsi, 1
mov rdx, qword [rsp + 0x440]
call fcn.005207d0
mov r8d, 0x20
mov rdx, r12
mov rcx, rbx
call fcn.00514050
mov rdx, rbp
mov rcx, rbx
call fcn.00514520
mov r8d, 0x20
mov rdx, rbp
mov rcx, rdi
call fcn.00514050
mov rdx, r12
mov rcx, rdi
call fcn.00514520
xor r15, qword [rbx + 0x280]
xor r13, qword [rbx + 0x288]
xor r14, qword [rbx + 0x290]
mov r10, qword [rsp + 0x28]
xor r10, qword [rbx + 0x298]
mov qword [rbx + 0x300], r15
mov qword [rbx + 0x308], r13
mov qword [rbx + 0x310], r14
mov qword [rbx + 0x318], r10
cmp qword [rsp + 0x460], rsi
jae 0x520e60
mov rsi, qword [rsp + 0x30]
mov edx, 0x20
mov rax, qword [rsp + 0x470]
mov rcx, qword [rsp + 0x468]
sub rax, rsi
add rcx, rsi
cmp rax, 0x20
cmova rax, rdx
mov edx, eax
cmp eax, 8
jae 0x520f70
test al, 4
jne 0x520fb6
test edx, edx
je 0x520f4a
mov rax, qword [rsp + 0x48]
movzx eax, byte [rax]
mov byte [rcx], al
test dl, 2
jne 0x520fc9
add qword [rsp + 0x30], 0x20
add qword [rsp + 0x38], 1
mov rax, qword [rsp + 0x30]
cmp rax, qword [rsp + 0x470]
jae 0x520fa2
mov eax, dword [rsp + 0x38]
bswap eax
jmp 0x520ce0
mov r10, qword [rsp + 0x48]
mov edx, eax
mov r8, qword [r10 + rdx - 8]
mov qword [rcx + rdx - 8], r8
lea edx, [rax - 1]
cmp edx, 8
jb 0x520f4a
and edx, 0xfffffff8
xor eax, eax
mov r8d, eax
add eax, 8
mov r9, qword [r10 + r8]
mov qword [rcx + r8], r9
cmp eax, edx
jb 0x520f8e
jmp 0x520f4a
add rsp, 0x3f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rsi, qword [rsp + 0x48]
mov eax, dword [rsi]
mov dword [rcx], eax
mov eax, dword [rsi + rdx - 4]
mov dword [rcx + rdx - 4], eax
jmp 0x520f4a
mov rax, qword [rsp + 0x48]
movzx eax, word [rax + rdx - 2]
mov word [rcx + rdx - 2], ax
jmp 0x520f4a