Function at 0x5047f0
Capabilities:
Encode data using xor
Hash data using murmur3

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov ebx, dword [rcx + 0x20]
mov rdi, rcx
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0xe0], r8
cmp r8, 0x3f
jbe 0x504dc0
test ebx, ebx
jne 0x504d18
mov eax, dword [rdi + 0x428]
mov r15d, dword [rdi + 0x464]
mov r14d, dword [rdi + 0x468]
mov dword [rsp + 0x64], eax
mov eax, dword [rdi + 0x42c]
mov dword [rsp + 0x68], eax
mov eax, dword [rdi + 0x430]
mov dword [rsp + 0x6c], eax
mov eax, dword [rdi + 0x434]
mov dword [rsp + 0x2c], eax
mov eax, dword [rdi + 0x438]
mov dword [rsp + 0x30], eax
mov eax, dword [rdi + 0x43c]
mov dword [rsp + 0x34], eax
mov eax, dword [rdi + 0x440]
mov dword [rsp + 0x38], eax
mov eax, dword [rdi + 0x444]
mov dword [rsp + 0x3c], eax
mov eax, dword [rdi + 0x448]
mov ebp, eax
mov eax, dword [rdi + 0x44c]
mov r11d, eax
mov eax, dword [rdi + 0x450]
mov dword [rsp + 0x40], eax
mov eax, dword [rdi + 0x454]
mov dword [rsp + 0x44], eax
mov eax, dword [rdi + 0x458]
mov dword [rsp + 0x48], eax
mov eax, dword [rdi + 0x45c]
mov dword [rsp + 0x4c], eax
mov eax, dword [rdi + 0x460]
mov dword [rsp + 0x50], eax
mov eax, dword [rdi + 0x424]
mov dword [rsp + 0x60], eax
mov rax, qword [rsp + 0xe0]
shr rax, 5
je 0x504c47
shl rax, 5
add rax, qword [rsp + 0xd8]
mov qword [rsp + 0xd0], rdi
mov rsi, qword [rsp + 0xd8]
mov qword [rsp + 0x78], rax
nop dword [rax]
mov eax, dword [rsp + 0x60]
mov r12d, r14d
mov r8d, ebp
not r12d
or r12d, r15d
lea edx, [rax - 8]
mov dword [rsp + 0x74], eax
sub eax, 1
mov ebx, eax
and edx, 0x1f
and ebx, 0x1f
shl rdx, 5
add rdx, qword [rsp + 0xd0]
mov eax, ebx
mov dword [rsp + 0x60], ebx
shl rax, 5
add rax, qword [rsp + 0xd0]
mov ecx, dword [rax + 0x2c]
xor dword [rdx + 0x24], ecx
mov ecx, dword [rsi + 8]
xor dword [rax + 0x2c], ecx
mov ecx, dword [rdx + 0x28]
xor ecx, dword [rax + 0x30]
mov dword [rdx + 0x28], ecx
mov ecx, dword [rsi + 0xc]
xor dword [rax + 0x30], ecx
mov ecx, dword [rdx + 0x2c]
xor ecx, dword [rax + 0x34]
mov dword [rdx + 0x2c], ecx
mov ecx, dword [rsi + 0x10]
xor dword [rax + 0x34], ecx
mov ecx, dword [rdx + 0x30]
xor ecx, dword [rax + 0x38]
mov dword [rdx + 0x30], ecx
mov ecx, dword [rsi + 0x14]
xor dword [rax + 0x38], ecx
mov ecx, dword [rdx + 0x34]
xor ecx, dword [rax + 0x3c]
mov dword [rdx + 0x34], ecx
mov ecx, dword [rsi + 0x18]
xor dword [rax + 0x3c], ecx
mov ecx, dword [rdx + 0x38]
xor ecx, dword [rax + 0x40]
mov r13d, dword [rsp + 0x68]
mov r9d, dword [rsp + 0x64]
mov r10d, dword [rsp + 0x3c]
mov dword [rdx + 0x38], ecx
mov ecx, dword [rsi + 0x1c]
xor dword [rax + 0x40], ecx
mov ecx, dword [rdx + 0x3c]
xor ecx, dword [rax + 0x24]
xor r12d, dword [rsp + 0x50]
mov dword [rdx + 0x3c], ecx
mov ecx, dword [rsi]
xor dword [rax + 0x24], ecx
rol r12d, 3
mov ecx, dword [rdx + 0x40]
mov dword [rsp + 0x58], r12d
mov r12d, r9d
xor ecx, dword [rax + 0x28]
mov dword [rdx + 0x40], ecx
mov ecx, dword [rsp + 0x6c]
mov edx, dword [rsi + 4]
xor dword [rax + 0x28], edx
mov edx, r11d
not edx
mov eax, ecx
or edx, ebp
not eax
xor edx, r10d
not r10d
or eax, r13d
rol edx, 1
xor eax, r9d
mov dword [rsp + 0x54], edx
mov edx, r11d
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x38]
not eax
or eax, dword [rsp + 0x34]
xor eax, dword [rsp + 0x30]
rol eax, 6
mov dword [rsp + 0x5c], eax
mov ebx, dword [rsp + 0x40]
mov eax, r8d
mov edi, dword [rsp + 0x2c]
mov ebp, dword [rsp + 0x4c]
or r10d, dword [rsp + 0x38]
not ebx
xor r10d, dword [rsp + 0x34]
or ebx, r11d
not edi
xor ebx, r8d
mov r8d, dword [rsp + 0x30]
or edi, ecx
mov r11d, r9d
mov r9d, dword [rsp + 0x50]
xor edi, r13d
not r13d
not r11d
or r11d, r14d
not ebp
or ebp, dword [rsp + 0x48]
rol edi, 0xf
xor ebp, dword [rsp + 0x44]
xor r11d, r15d
ror ebx, 0xb
not r8d
or r8d, dword [rsp + 0x2c]
ror r11d, 4
not r9d
or r9d, dword [rsp + 0x4c]
rol r10d, 4
xor r9d, dword [rsp + 0x48]
rol ebp, 0xa
xor r8d, ecx
mov ecx, dword [rsp + 0x44]
ror r8d, 9
rol r9d, 0xd
not ecx
or ecx, dword [rsp + 0x40]
xor ecx, edx
mov edx, r13d
mov r13d, eax
mov eax, dword [rsp + 0x48]
or edx, r12d
not r13d
or r13d, dword [rsp + 0x3c]
rol ecx, 2
xor r13d, dword [rsp + 0x38]
xor r14d, edx
mov edx, r15d
mov r15d, dword [rsp + 0x54]
rol r14d, 0xe
not edx
mov r12d, dword [rsp + 0x34]
not eax
ror r13d, 5
or edx, dword [rsp + 0x50]
xor r15d, ebp
xor r15d, dword [rsp + 0x70]
xor edx, dword [rsp + 0x4c]
not r12d
or eax, dword [rsp + 0x44]
or r12d, dword [rsp + 0x30]
xor r15d, 1
xor r12d, dword [rsp + 0x2c]
mov dword [rsp + 0x64], r15d
mov r15d, dword [rsp + 0x54]
rol edx, 9
xor r15d, dword [rsp + 0x58]
xor r15d, dword [rsi]
xor eax, dword [rsp + 0x40]
ror r12d, 8
xor r15d, edi
mov dword [rsp + 0x68], r15d
mov r15d, dword [rsp + 0x58]
rol eax, 8
xor r15d, dword [rsp + 0x5c]
xor r15d, dword [rsi + 4]
xor r15d, ebx
mov dword [rsp + 0x6c], r15d
mov r15d, dword [rsp + 0x5c]
xor r15d, ebp
xor r15d, dword [rsi + 8]
xor ebp, edi
xor edi, ebx
xor edi, dword [rsi + 0x10]
xor ebx, r11d
xor ebx, dword [rsi + 0x14]
xor ebp, dword [rsi + 0xc]
xor r15d, r11d
xor r11d, r10d
xor r11d, dword [rsi + 0x18]
xor edi, r9d
mov dword [rsp + 0x2c], r15d
mov dword [rsp + 0x34], edi
mov edi, ebx
mov ebx, dword [rsp + 0x70]
xor ebp, r10d
xor edi, r8d
xor r11d, ecx
xor r10d, r9d
xor r10d, dword [rsi + 0x1c]
mov dword [rsp + 0x30], ebp
mov dword [rsp + 0x38], edi
mov rdi, qword [rsp + 0xd0]
xor r9d, r8d
xor r8d, ecx
mov dword [rsp + 0x3c], r11d
xor ecx, r14d
xor r10d, r14d
xor r14d, r13d
mov ebp, r10d
mov r10d, dword [rsp + 0x74]
xor r10d, 0x10
mov r11, r10
shl r10, 5
add r10, rdi
shl r11, 5
mov r15d, dword [r10 + 0x34]
xor r9d, dword [r11 + rdi + 0x24]
xor r8d, dword [r10 + 0x28]
xor ecx, dword [r10 + 0x2c]
xor r15d, ebx
xor r14d, dword [r10 + 0x30]
xor r9d, r13d
xor r13d, r15d
mov r15d, dword [rsp + 0x58]
xor r8d, edx
xor r13d, edx
xor edx, dword [rsp + 0x54]
mov r11d, r9d
xor edx, dword [r10 + 0x38]
xor ecx, r12d
mov dword [rsp + 0x40], r8d
xor r14d, eax
mov dword [rsp + 0x44], ecx
mov dword [rsp + 0x48], r14d
xor r15d, r12d
xor r15d, dword [r10 + 0x3c]
mov dword [rsp + 0x4c], r13d
xor edx, r12d
mov dword [rsp + 0x50], edx
xor ebx, dword [r10 + 0x40]
mov r14d, dword [rsp + 0x5c]
xor r15d, eax
xor r14d, ebx
xor r14d, eax
add rsi, 0x20
cmp rsi, qword [rsp + 0x78]
jne 0x504910
mov rax, qword [rsp + 0xe0]
mov dword [rdi + 0x464], r15d
movd xmm1, dword [rsp + 0x68]
pinsrd xmm1, dword [rsp + 0x6c], 1
mov dword [rdi + 0x468], r14d
movd xmm0, dword [rsp + 0x60]
pinsrd xmm0, dword [rsp + 0x64], 1
punpcklqdq xmm0, xmm1
movups xmmword [rdi + 0x424], xmm0
movd xmm1, dword [rsp + 0x34]
pinsrd xmm1, dword [rsp + 0x38], 1
movd xmm0, dword [rsp + 0x2c]
pinsrd xmm0, dword [rsp + 0x30], 1
punpcklqdq xmm0, xmm1
and eax, 0x1f
movups xmmword [rdi + 0x434], xmm0
movd xmm0, dword [rsp + 0x3c]
movd xmm1, r11d
pinsrd xmm1, dword [rsp + 0x40], 1
pinsrd xmm0, ebp, 1
punpcklqdq xmm0, xmm1
movd xmm1, dword [rsp + 0x4c]
movups xmmword [rdi + 0x444], xmm0
pinsrd xmm1, dword [rsp + 0x50], 1
movd xmm0, dword [rsp + 0x44]
pinsrd xmm0, dword [rsp + 0x48], 1
punpcklqdq xmm0, xmm1
movups xmmword [rdi + 0x454], xmm0
jne 0x504d68
mov dword [rdi + 0x20], eax
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rbp, qword [rsp + 0xd8]
mov esi, 0x20
sub esi, ebx
add rbp, rsi
test rsi, rsi
je 0x504e60
mov ecx, ebx
mov r8, rsi
add rcx, rdi
call sub.msvcrt.dll_memcpy
mov rdx, rdi
mov rcx, rdi
call fcn.005042f0
xor eax, eax
sub qword [rsp + 0xe0], rsi
mov dword [rdi + 0x20], eax
mov qword [rsp + 0xd8], rbp
jmp 0x50482b
mov r8, qword [rsp + 0xe0]
sub r8, rax
add r8, qword [rsp + 0xd8]
cmp eax, 8
jb 0x504e10
mov rdx, qword [rax + r8 - 8]
lea r9d, [rax - 1]
mov qword [rdi + rax - 8], rdx
cmp r9d, 8
jb 0x504cfb
and r9d, 0xfffffff8
xor edx, edx
mov ecx, edx
add edx, 8
mov r10, qword [r8 + rcx]
mov qword [rdi + rcx], r10
cmp edx, r9d
jb 0x504da2
jmp 0x504cfb
test r8, r8
je 0x504e08
mov ebp, 0x20
mov r12, rdx
mov rsi, r8
mov r13d, ebp
mov ecx, ebx
sub r13d, ebx
add rcx, rdi
cmp r13, rsi
ja 0x504e40
mov rdx, r12
mov r8, r13
add r12, r13
call sub.msvcrt.dll_memcpy
sub rsi, r13
mov rdx, rdi
mov rcx, rdi
xor ebx, ebx
call fcn.005042f0
test rsi, rsi
jne 0x504dd0
nop dword [rax + rax]
mov dword [rdi + 0x20], ebx
jmp 0x504cfe
test al, 4
jne 0x504e70
test eax, eax
je 0x504cfb
movzx edx, byte [r8]
mov byte [rdi], dl
test al, 2
je 0x504cfb
movzx edx, word [rax + r8 - 2]
mov word [rdi + rax - 2], dx
jmp 0x504cfb
mov rdx, r12
mov r8, rsi
add ebx, esi
call sub.msvcrt.dll_memcpy
add r12, rsi
cmp ebx, 0x20
jne 0x504e08
xor esi, esi
jmp 0x504df1
mov eax, 0x20
jmp 0x504d4d
mov edx, dword [r8]
mov dword [rdi], edx
mov edx, dword [rax + r8 - 4]
mov dword [rdi + rax - 4], edx
jmp 0x504cfb