Function at 0x4ec0d0
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 qword [rsp + 0xd8], rdx
mov rdi, rcx
mov qword [rsp + 0xe0], r8
cmp r8, 0x3f
jbe 0x4ec6c0
test ebx, ebx
jne 0x4ec608
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 0x4ec527
shl rax, 5
add rax, qword [rsp + 0xd8]
mov qword [rsp + 0xd0], rdi
mov qword [rsp + 0x78], rax
mov rsi, qword [rsp + 0xd8]
nop dword [rax]
mov eax, dword [rsp + 0x60]
mov r12d, r14d
mov r8d, ebp
not r12d
mov dword [rsp + 0x74], eax
lea edx, [rax - 8]
sub eax, 1
or r12d, r15d
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]
mov dword [rdx + 0x3c], ecx
mov ecx, dword [rsi]
xor dword [rax + 0x24], ecx
mov ecx, dword [rdx + 0x40]
xor ecx, dword [rax + 0x28]
xor r12d, dword [rsp + 0x50]
mov dword [rdx + 0x40], ecx
mov ecx, dword [rsp + 0x6c]
rol r12d, 3
mov edx, dword [rsi + 4]
xor dword [rax + 0x28], edx
mov edx, r11d
mov eax, ecx
not edx
mov dword [rsp + 0x58], r12d
mov r12d, r9d
not eax
or edx, ebp
or eax, r13d
xor edx, r10d
not r10d
xor eax, r9d
rol edx, 1
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0x54], edx
mov edx, r11d
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]
not ebx
or r10d, dword [rsp + 0x38]
xor r10d, dword [rsp + 0x34]
or ebx, r11d
not edi
mov r11d, r9d
mov r9d, dword [rsp + 0x50]
xor ebx, r8d
mov r8d, dword [rsp + 0x30]
or edi, ecx
not r11d
xor edi, r13d
not r13d
or r11d, r14d
not ebp
not r8d
or r8d, dword [rsp + 0x2c]
or ebp, dword [rsp + 0x48]
xor r11d, r15d
xor r8d, ecx
mov ecx, dword [rsp + 0x44]
xor ebp, dword [rsp + 0x44]
not r9d
rol ebp, 0xa
or r9d, dword [rsp + 0x4c]
xor r9d, dword [rsp + 0x48]
rol edi, 0xf
ror ebx, 0xb
not ecx
or ecx, dword [rsp + 0x40]
ror r11d, 4
rol r10d, 4
xor ecx, edx
mov edx, r13d
mov r13d, eax
or edx, r12d
not r13d
or r13d, dword [rsp + 0x3c]
xor r13d, dword [rsp + 0x38]
xor r14d, edx
mov edx, r15d
mov r15d, dword [rsp + 0x54]
rol r9d, 0xd
ror r8d, 9
rol ecx, 2
not edx
mov r12d, dword [rsp + 0x34]
rol r14d, 0xe
ror r13d, 5
or edx, dword [rsp + 0x50]
xor r15d, ebp
xor r15d, dword [rsp + 0x70]
mov eax, dword [rsp + 0x48]
not r12d
xor r15d, 1
xor edx, dword [rsp + 0x4c]
or r12d, dword [rsp + 0x30]
mov dword [rsp + 0x64], r15d
mov r15d, dword [rsp + 0x54]
not eax
rol edx, 9
xor r15d, dword [rsp + 0x58]
xor r15d, dword [rsi]
xor r15d, edi
xor r12d, dword [rsp + 0x2c]
or eax, dword [rsp + 0x44]
mov dword [rsp + 0x68], r15d
xor eax, dword [rsp + 0x40]
ror r12d, 8
mov r15d, dword [rsp + 0x58]
xor r15d, dword [rsp + 0x5c]
rol eax, 8
xor r15d, dword [rsi + 4]
xor r15d, ebx
mov dword [rsp + 0x6c], r15d
mov r15d, dword [rsp + 0x5c]
xor r15d, ebp
xor ebp, edi
xor edi, ebx
xor edi, dword [rsi + 0x10]
xor r15d, dword [rsi + 8]
xor edi, r9d
xor ebx, r11d
xor ebx, dword [rsi + 0x14]
xor r15d, r11d
xor ebp, dword [rsi + 0xc]
xor r11d, r10d
mov dword [rsp + 0x34], edi
xor r11d, dword [rsi + 0x18]
mov edi, ebx
xor ebp, r10d
mov dword [rsp + 0x2c], r15d
xor edi, r8d
xor r11d, ecx
xor r10d, r9d
xor r10d, dword [rsi + 0x1c]
xor r10d, r14d
mov dword [rsp + 0x30], ebp
mov ebx, dword [rsp + 0x70]
xor r9d, r8d
mov ebp, r10d
mov r10d, dword [rsp + 0x74]
mov dword [rsp + 0x38], edi
xor r8d, ecx
mov rdi, qword [rsp + 0xd0]
mov dword [rsp + 0x3c], r11d
xor ecx, r14d
xor r14d, r13d
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 r9d, r13d
xor r8d, dword [r10 + 0x28]
xor ecx, dword [r10 + 0x2c]
xor r15d, ebx
xor r8d, edx
xor r14d, dword [r10 + 0x30]
xor ecx, r12d
xor r13d, r15d
mov r15d, dword [rsp + 0x58]
xor r14d, eax
mov dword [rsp + 0x40], r8d
xor r13d, edx
xor edx, dword [rsp + 0x54]
xor edx, dword [r10 + 0x38]
mov dword [rsp + 0x48], r14d
xor edx, r12d
xor r15d, r12d
mov dword [rsp + 0x44], ecx
xor r15d, dword [r10 + 0x3c]
mov dword [rsp + 0x4c], r13d
xor r15d, eax
mov r11d, r9d
mov dword [rsp + 0x50], edx
xor ebx, dword [r10 + 0x40]
mov r14d, dword [rsp + 0x5c]
xor r14d, ebx
xor r14d, eax
add rsi, 0x20
cmp rsi, qword [rsp + 0x78]
jne 0x4ec1f0
movd xmm2, dword [rsp + 0x6c]
movd xmm3, dword [rsp + 0x64]
mov dword [rdi + 0x464], r15d
movd xmm1, dword [rsp + 0x68]
movd xmm0, dword [rsp + 0x60]
mov dword [rdi + 0x468], r14d
movd xmm4, dword [rsp + 0x38]
movd xmm5, dword [rsp + 0x30]
punpckldq xmm1, xmm2
punpckldq xmm0, xmm3
movd xmm3, ebp
movd xmm2, dword [rsp + 0x40]
punpcklqdq xmm0, xmm1
movd xmm1, dword [rsp + 0x34]
mov rax, qword [rsp + 0xe0]
movups xmmword [rdi + 0x424], xmm0
movd xmm0, dword [rsp + 0x2c]
punpckldq xmm1, xmm4
movd xmm4, dword [rsp + 0x50]
punpckldq xmm0, xmm5
movd xmm5, dword [rsp + 0x48]
punpcklqdq xmm0, xmm1
movd xmm1, r11d
movups xmmword [rdi + 0x434], xmm0
movd xmm0, dword [rsp + 0x3c]
punpckldq xmm1, xmm2
punpckldq xmm0, xmm3
punpcklqdq xmm0, xmm1
movd xmm1, dword [rsp + 0x4c]
movups xmmword [rdi + 0x444], xmm0
movd xmm0, dword [rsp + 0x44]
punpckldq xmm1, xmm4
punpckldq xmm0, xmm5
punpcklqdq xmm0, xmm1
movups xmmword [rdi + 0x454], xmm0
and eax, 0x1f
jne 0x4ec658
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 0x4ec760
mov ecx, ebx
mov r8, rsi
add rcx, rdi
call sub.msvcrt.dll_memcpy
mov rdx, rdi
mov rcx, rdi
call fcn.004ebbc0
xor eax, eax
sub qword [rsp + 0xe0], rsi
mov dword [rdi + 0x20], eax
mov qword [rsp + 0xd8], rbp
jmp 0x4ec10b
mov r8, qword [rsp + 0xe0]
sub r8, rax
add r8, qword [rsp + 0xd8]
cmp eax, 8
jb 0x4ec710
mov rdx, qword [r8]
lea r10, [rdi + 8]
and r10, 0xfffffffffffffff8
mov qword [rdi], rdx
mov rdx, qword [rax + r8 - 8]
mov qword [rdi + rax - 8], rdx
mov rdx, rdi
sub rdx, r10
sub r8, rdx
add edx, eax
and edx, 0xfffffff8
cmp edx, 8
jb 0x4ec5eb
and edx, 0xfffffff8
xor ecx, ecx
mov r9d, ecx
add ecx, 8
mov r11, qword [r8 + r9]
mov qword [r10 + r9], r11
cmp ecx, edx
jb 0x4ec6a8
jmp 0x4ec5eb
test r8, r8
je 0x4ec708
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 0x4ec740
mov rdx, r12
mov r8, r13
add r12, r13
sub rsi, r13
call sub.msvcrt.dll_memcpy
mov rdx, rdi
mov rcx, rdi
xor ebx, ebx
call fcn.004ebbc0
test rsi, rsi
jne 0x4ec6d0
nop dword [rax + rax]
mov dword [rdi + 0x20], ebx
jmp 0x4ec5ee
test al, 4
jne 0x4ec770
test eax, eax
je 0x4ec5eb
movzx edx, byte [r8]
mov byte [rdi], dl
test al, 2
je 0x4ec5eb
movzx edx, word [rax + r8 - 2]
mov word [rdi + rax - 2], dx
jmp 0x4ec5eb
mov rdx, r12
mov r8, rsi
add ebx, esi
add r12, rsi
call sub.msvcrt.dll_memcpy
cmp ebx, 0x20
jne 0x4ec708
xor esi, esi
jmp 0x4ec6f1
mov eax, 0x20
jmp 0x4ec63d
mov edx, dword [r8]
mov dword [rdi], edx
mov edx, dword [rax + r8 - 4]
mov dword [rdi + rax - 4], edx
jmp 0x4ec5eb