Function at 0x140158df8
Capabilities:
Encode data using xor
Hash data using djb2

Disassembly:
mov qword [rsp + 0x10], rbx
mov dword [rsp + 0x18], r8d
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x40
mov r14, qword [rbp + 0x68]
mov r15, r9
mov r9d, r8d
mov r12d, edx
mov rbx, rcx
mov dword [r14], 0xc000000
mov eax, dword [rcx + 0x18]
bt rax, 0xc
jae 0x140158edc
mov r8d, edx
mov qword [rsp + 0x20], r14
mov r13d, 0xffffff
and r8d, 0xff000000
and r12d, r13d
mov edx, r12d
call fcn.140195b34
test eax, eax
js 0x140158ec4
mov edx, dword [r14]
test edx, edx
je 0x140158ebf
test r15, r15
je 0x140158fe2
lea rcx, [rbx + 0x998]
and edx, r13d
mov rax, qword [rcx]
lea r8, [rbp - 0x10]
call qword [rax + 0xa8]
test eax, eax
js 0x140158ec4
mov rdx, qword [rbp - 0x10]
lea r9, [rbp + 0x68]
lea r8, [rbp - 8]
mov rcx, rbx
call fcn.14015cab8
test eax, eax
js 0x140158ec4
mov eax, dword [rbp + 0x60]
cmp eax, dword [rbp + 0x68]
jne 0x140158ebf
mov rdx, qword [rbp - 8]
mov r8d, eax
mov rcx, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
je 0x140158fe2
mov eax, 1
mov rbx, qword [rsp + 0x88]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rsi, qword [rcx + 0x430]
test rsi, rsi
je 0x140158fe9
mov dword [rbp + 0x68], r12d
lea rdx, [rbp + 0x68]
mov ecx, 0x1505
movzx eax, byte [rdx]
inc rdx
imul ecx, ecx, 0x21
xor ecx, eax
lea rax, [rbp + 0x6c]
cmp rdx, rax
jb 0x140158ef9
mov eax, ecx
xor edx, edx
div dword [rsi + 0x20]
mov rax, qword [rsi + 0x18]
movsxd rcx, edx
lea rdx, [rbp + 0x40]
mov ecx, dword [rax + rcx*4]
mov dword [rbp + 0x40], ecx
mov rcx, rsi
call fcn.14015a224
mov rdi, rax
test rax, rax
je 0x140158ebf
mov r13d, 0xffffff
mov edx, dword [rdi]
lea rcx, [rbx + 0x998]
mov rax, qword [rcx]
lea r8, [rbp - 0x10]
and edx, r13d
call qword [rax + 0xa8]
test eax, eax
js 0x140158ec4
mov r10, qword [rbp - 0x10]
mov rcx, rbx
mov rdx, r10
call fcn.14015c7a0
cmp eax, r12d
jne 0x140158fbb
mov rdx, r10
mov rcx, rbx
call fcn.14015ca34
cmp dword [rbp + 0x50], eax
jne 0x140158fbb
test r15, r15
je 0x140158fe2
lea r9, [rbp + 0x68]
mov rdx, r10
lea r8, [rbp - 8]
mov rcx, rbx
call fcn.14015cab8
test eax, eax
js 0x140158ec4
mov eax, dword [rbp + 0x60]
cmp eax, dword [rbp + 0x68]
jne 0x140158fbb
mov rdx, qword [rbp - 8]
mov r8d, eax
mov rcx, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
je 0x140158fd8
lea rdx, [rbp + 0x40]
mov rcx, rsi
call fcn.14015a224
mov rdi, rax
test rax, rax
je 0x140158ebf
jmp 0x140158f3b
mov eax, dword [rdi]
or eax, 0xc000000
mov dword [r14], eax
xor eax, eax
jmp 0x140158ec4
mov esi, dword [rcx + 0x50]
mov edi, 1
inc esi
cmp esi, edi
jbe 0x140158ebf
mov r13d, dword [rbp + 0x60]
add rcx, 0x998
mov rax, qword [rcx]
lea r8, [rbp - 0x10]
mov edx, edi
call qword [rax + 0xa8]
test eax, eax
js 0x140158ec4
mov r10, qword [rbp - 0x10]
mov rcx, rbx
mov rdx, r10
call fcn.14015c7a0
cmp eax, r12d
jne 0x14015907a
mov rdx, r10
mov rcx, rbx
call fcn.14015ca34
cmp dword [rbp + 0x50], eax
jne 0x14015907a
test r15, r15
je 0x140158fe2
lea r9, [rbp + 0x68]
mov rdx, r10
lea r8, [rbp - 8]
mov rcx, rbx
call fcn.14015cab8
test eax, eax
js 0x140158ec4
cmp r13d, dword [rbp + 0x68]
jne 0x14015907a
mov rdx, qword [rbp - 8]
mov r8, r13
mov rcx, r15
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
je 0x140159090
inc edi
cmp edi, esi
jae 0x140158ebf
lea rcx, [rbx + 0x998]
jmp 0x140159006
or edi, 0xc000000
mov dword [r14], edi
jmp 0x140158fe2