Function at 0x18007ab40
Capabilities:
Encode data using xor
Encrypt data using rc4 prga
Hash data using djb2

Disassembly:
mov r11, rsp
mov qword [r11 + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov rbx, r8
mov r13d, edx
mov rsi, rcx
xor ebp, ebp
mov r8d, ebp
mov r15, qword [rcx + 0x530]
mov r9d, edx
and r9d, 0xffffff
mov rax, qword [rcx + 0x18]
shr rax, 0x2c
test al, 1
je 0x18007abe9
mov rdx, qword [rcx + 0x3a0]
movzx eax, word [rdx]
mov word [r11 + 8], ax
movzx eax, byte [rdx + 2]
mov byte [r11 + 0xa], al
lea rax, [r11 + 0x10]
mov qword [r11 - 0x50], rax
lea rax, [r11 + 0x20]
mov qword [r11 - 0x58], rax
lea r8, [r11 + 8]
lea edx, [rbp + 0x2c]
call fcn.18006f610
mov r8d, eax
test eax, eax
js 0x18007ae02
mov dword [rbx + 8], ebp
mov dword [rbx], 0x2c000000
mov edx, dword [rsp + 0x88]
mov dword [rbx + 0x14], edx
mov dword [rbx + 0xc], edx
mov ecx, dword [rsp + 0x98]
mov dword [rbx + 0x10], ecx
sub ecx, edx
mov dword [rbx + 4], ecx
jmp 0x18007ae02
lea r14, [rbx + 0x18]
mov dword [rbx + 4], ebp
mov qword [rbx + 0xc], rbp
mov dword [rbx + 0x14], ebp
mov qword [rsp + 0x80], r14
mov eax, 4
test r15, r15
je 0x18007ad37
mov qword [r14 + 0x14], rbp
mov dword [r14 + 0x1c], ebp
mov dword [rbx + 8], 2
mov dword [rbx], 0xffffffff
mov qword [r14], rbp
mov qword [r14 + 8], rbp
mov dword [r14 + 0x10], 0x10
mov word [r14 + 0x14], ax
mov byte [r14 + 0x16], 1
mov dword [rsp + 0x30], r13d
lea rdx, [rsp + 0x30]
mov eax, 0x1505
nop word [rax + rax]
imul eax, eax, 0x21
movzx ecx, byte [rdx]
xor eax, ecx
inc rdx
lea rcx, [rsp + 0x34]
cmp rdx, rcx
jb 0x18007ac50
xor edx, edx
div dword [r15 + 0x20]
movsxd rcx, edx
mov rax, qword [r15 + 0x18]
movsxd rdx, dword [rax + rcx*4]
cmp edx, 0xffffffff
je 0x18007ae02
lea rcx, [rdx + rdx*2]
mov rax, qword [r15]
lea rdi, [rax + rcx*4]
mov ebp, dword [rdi + 8]
test rdi, rdi
je 0x18007ae02
nop word [rax + rax]
mov rax, qword [rsi + 0x1318]
lea r8, [rsp + 0x38]
mov edx, dword [rdi]
lea rcx, [rsi + 0x1318]
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov r8d, eax
test eax, eax
js 0x18007ae02
mov rax, qword [rsi + 0x3a0]
movzx ecx, byte [rax + 1]
add rcx, qword [rsp + 0x38]
cmp byte [rax + 2], 2
jne 0x18007ace8
movzx eax, word [rcx]
jmp 0x18007acea
mov eax, dword [rcx]
or eax, 0x2a000000
cmp eax, r13d
jne 0x18007ad18
mov edi, dword [rdi]
or edi, 0x2c000000
mov rcx, r14
call fcn.18008d130
test rax, rax
je 0x18007adfc
mov dword [rax], edi
inc dword [rbx + 4]
inc dword [rbx + 0x10]
xor r8d, r8d
cmp ebp, 0xffffffff
je 0x18007ae02
movsxd rax, ebp
lea rcx, [rax + rax*2]
mov rax, qword [r15]
lea rdi, [rax + rcx*4]
mov ebp, dword [rdi + 8]
jmp 0x18007aca0
mov qword [r14 + 4], rbp
mov qword [r14 + 0x14], rbp
mov dword [r14 + 0x1c], ebp
mov dword [rbx + 8], 2
mov dword [rbx], 0xffffffff
mov qword [r14], rbp
mov dword [r14 + 0xc], ebp
mov dword [r14 + 0x10], 0x10
mov word [r14 + 0x14], ax
mov byte [r14 + 0x16], 1
mov edi, 1
cmp dword [rcx + 0xd0], edi
jb 0x18007ae02
nop word [rax + rax]
mov rax, qword [rsi + 0x1318]
lea r8, [rsp + 0x38]
mov edx, edi
lea rcx, [rsi + 0x1318]
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov r8d, eax
test eax, eax
js 0x18007ae02
mov rax, qword [rsi + 0x3a0]
movzx ecx, byte [rax + 1]
add rcx, qword [rsp + 0x38]
cmp byte [rax + 2], 2
jne 0x18007adc4
movzx eax, word [rcx]
jmp 0x18007adc6
mov eax, dword [rcx]
or eax, 0x2a000000
cmp eax, r13d
jne 0x18007adf0
mov rcx, r14
call fcn.18008d130
test rax, rax
je 0x18007adfc
mov ecx, edi
or ecx, 0x2c000000
mov dword [rax], ecx
inc dword [rbx + 4]
inc dword [rbx + 0x10]
mov r8d, ebp
inc edi
cmp edi, dword [rsi + 0xd0]
ja 0x18007ae02
jmp 0x18007ad80
mov r8d, 0x8007000e
mov eax, r8d
mov rbx, qword [rsp + 0x90]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret