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

Disassembly:
mov qword [rsp + 0x20], r9
push rbp
push rbx
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x30
mov r13, qword [rbp + 0x60]
lea r15, [0x1401a1e53]
test r8, r8
mov r10, r9
mov r12d, edx
mov rdi, rcx
cmovne r15, r8
mov dword [r13], 0x1000000
mov r9, qword [rcx + 0x558]
mov qword [rbp - 0x10], r15
test r9, r9
je 0x14015aab4
and dword [rbp + 0x68], 0
lea rcx, [rbp + 0x68]
mov r8d, 0x1505
movzx eax, byte [rcx]
inc rcx
imul r8d, r8d, 0x21
xor r8d, eax
lea rax, [rbp + 0x6c]
cmp rcx, rax
jb 0x14015a944
mov rcx, r10
call fcn.14015af68
add eax, r8d
xor edx, edx
div dword [r9 + 0x20]
mov rax, qword [r9 + 0x18]
mov rcx, r9
movsxd r8, edx
mov edx, dword [rax + r8*4]
mov dword [rbp + 0x68], edx
jmp 0x14015aa7f
mov edx, dword [rbx]
mov ecx, edx
and ecx, 0xff000000
cmp ecx, 0x1000000
jne 0x14015aa78
and edx, 0xffffff
je 0x14015aa78
lea rcx, [rdi + 0x5d0]
mov rax, qword [rcx]
lea r8, [rbp + 0x60]
call qword [rax + 0xa8]
test eax, eax
js 0x14015aa99
mov rax, qword [rdi + 0xf0]
lea r14, [rdi + 0x1658]
lea r8, [rbp + 0x40]
movzx ecx, byte [rax + 7]
mov rax, qword [rbp + 0x60]
mov edx, dword [rcx + rax]
mov rcx, r14
and edx, dword [rdi + 0x3b0]
call fcn.14015acb8
test eax, eax
js 0x14015aa99
mov rax, qword [rdi + 0xf0]
lea r8, [rbp + 0x50]
mov rcx, r14
movzx edx, byte [rax + 4]
mov rax, qword [rbp + 0x60]
mov edx, dword [rdx + rax]
and edx, dword [rdi + 0x3b0]
call fcn.14015acb8
test eax, eax
js 0x14015aa99
mov rax, qword [rbp + 0x58]
mov r8, qword [rbp + 0x50]
sub r8, rax
movzx ecx, byte [rax]
movzx edx, byte [rax + r8]
sub ecx, edx
jne 0x14015aa38
inc rax
test edx, edx
jne 0x14015aa25
test ecx, ecx
jne 0x14015aa78
mov r8, qword [rbp + 0x40]
mov rax, r15
sub r8, r15
movzx ecx, byte [rax]
movzx edx, byte [rax + r8]
sub ecx, edx
jne 0x14015aa59
inc rax
test edx, edx
jne 0x14015aa46
test ecx, ecx
jne 0x14015aa78
mov rdx, qword [rbp + 0x60]
mov rcx, rdi
call fcn.14015c850
cmp eax, r12d
je 0x14015aaa9
or eax, r12d
test eax, 0xffffff
je 0x14015aaa9
mov rcx, qword [rdi + 0x558]
lea rdx, [rbp + 0x68]
call fcn.14015a224
mov rbx, rax
test rax, rax
jne 0x14015a981
mov eax, 0x80131130
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rbx
pop rbp
ret
mov eax, dword [rbx]
mov dword [r13], eax
jmp 0x14015abc4
mov r14d, dword [rcx + 0x24]
mov ebx, 1
cmp r14d, ebx
jb 0x14015aa94
test ebx, ebx
je 0x14015abac
lea rcx, [rdi + 0x5d0]
mov edx, ebx
mov rax, qword [rcx]
lea r8, [rbp + 0x60]
call qword [rax + 0xa8]
test eax, eax
js 0x14015aa99
mov r10, qword [rbp + 0x60]
mov rcx, rdi
mov rdx, r10
call fcn.14015c850
test eax, 0xffffff
jne 0x14015ab03
test r12d, 0xffffff
jmp 0x14015ab06
cmp eax, r12d
jne 0x14015abac
mov rax, qword [rdi + 0xf0]
lea r15, [rdi + 0x1658]
lea r8, [rbp + 0x40]
movzx ecx, byte [rax + 7]
mov edx, dword [rcx + r10]
mov rcx, r15
and edx, dword [rdi + 0x3b0]
call fcn.14015acb8
test eax, eax
js 0x14015aa99
mov rax, qword [rbp - 0x10]
mov r8, qword [rbp + 0x40]
sub r8, rax
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x14015ab5a
inc rax
test ecx, ecx
jne 0x14015ab47
test edx, edx
jne 0x14015abac
mov rax, qword [rdi + 0xf0]
lea r8, [rbp + 0x50]
mov rcx, r15
movzx edx, byte [rax + 4]
mov rax, qword [rbp + 0x60]
mov edx, dword [rdx + rax]
and edx, dword [rdi + 0x3b0]
call fcn.14015acb8
test eax, eax
js 0x14015aa99
mov rax, qword [rbp + 0x58]
mov r8, qword [rbp + 0x50]
sub r8, rax
movzx ecx, byte [rax]
movzx edx, byte [rax + r8]
sub ecx, edx
jne 0x14015aba8
inc rax
test edx, edx
jne 0x14015ab95
test ecx, ecx
je 0x14015abbc
inc ebx
cmp ebx, r14d
jbe 0x14015aac2
jmp 0x14015aa94
bts ebx, 0x18
mov dword [r13], ebx
xor eax, eax
jmp 0x14015aa99