Function at 0x180175340
Capabilities:
Encrypt data using rc4 prga
Hash data using djb2

Disassembly:
push rbx
push rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov r14, rdx
mov rsi, rcx
mov rdx, qword [rcx + 0x358]
test rdx, rdx
je 0x180175428
cmp qword [rcx + 0x368], 0
je 0x180175428
cmp qword [rcx + 0x1a0], 0
je 0x180175428
mov rcx, qword [rcx + 8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
mov rdi, qword [rsi + 0x358]
mov rcx, r14
mov ebx, eax
add rdi, 8
lea r15, [rdi + rbx*4]
call fcn.180174fd0
mov rcx, qword [rsi + 8]
xor edx, edx
div ebx
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
lea rdx, [rdi + rdx*4]
call qword [case.0x1800a0c66.0]
mov ebx, eax
test eax, eax
je 0x180175428
nop word [rax + rax]
mov r8d, 0xffffffff
mov edx, ebx
mov rcx, rsi
call fcn.1801771f0
mov r9d, ebx
mov rcx, r14
sub rax, r14
nop dword [rax]
movzx r8d, byte [rcx]
movzx edx, byte [rcx + rax]
sub r8d, edx
jne 0x180175404
inc rcx
test edx, edx
jne 0x1801753f0
test r8d, r8d
je 0x180175655
mov rcx, qword [rsi + 8]
lea rdx, [r15 + r9*4]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
mov ebx, eax
test eax, eax
jne 0x1801753d0
mov rdx, qword [rsi + 0x360]
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], r12
test rdx, rdx
je 0x18017563d
cmp qword [rsi + 0x368], 0
je 0x18017563d
cmp qword [rsi + 0x1a0], 0
je 0x18017563d
mov rcx, qword [rsi + 8]
mov qword [rsp + 0x68], r13
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
mov rcx, qword [rsi + 8]
mov rdx, qword [rsi + 0x360]
mov ebp, eax
add rdx, 4
mov r8, qword [rcx]
mov rax, qword [r8 + 0x28]
call qword [case.0x1800a0c66.0]
mov rcx, qword [rsi + 8]
mov r15d, eax
mov rdx, qword [rsi + 0x360]
add rdx, 8
mov r8, qword [rcx]
mov rax, qword [r8 + 0x28]
call qword [case.0x1800a0c66.0]
mov rcx, qword [rsi + 8]
mov rdx, qword [rsi + 0x360]
mov r13d, eax
add rdx, 0xc
mov r8, qword [rcx]
mov rax, qword [r8 + 0x28]
call qword [case.0x1800a0c66.0]
mov r10, qword [rsi + 0x360]
mov r12d, ebp
movzx edx, byte [r14]
add r10, 0x10
mov dword [rsp + 0x50], eax
mov rcx, r14
mov ebx, 0x1505
lea rdi, [r10 + r13*8]
test dl, dl
je 0x180175513
nop word [rax + rax]
imul ebx, ebx, 0x21
lea rcx, [rcx + 1]
movzx eax, dl
movzx edx, byte [rcx]
add ebx, eax
test dl, dl
jne 0x180175500
mov rcx, qword [rsi + 8]
lea r8d, [r13 - 1]
mov r9d, ebx
shr r9, 6
and r9, r8
mov rax, qword [rcx]
lea rdx, [r10 + r9*8]
mov rax, qword [rax + 0x30]
call qword [case.0x1800a0c66.0]
mov ecx, dword [rsp + 0x50]
mov edx, ebx
mov r13, qword [rsp + 0x68]
mov r8, rax
shr edx, cl
and edx, 0x3f
movzx ecx, dl
shr r8, cl
mov ecx, ebx
and ecx, 0x3f
shr rax, cl
and r8b, al
test r8b, 1
je 0x18017563d
mov rcx, qword [rsi + 8]
xor edx, edx
mov rax, qword [rcx]
mov r9, qword [rax + 0x28]
mov eax, ebx
div ebp
mov rax, r9
lea rdx, [rdi + rdx*4]
call qword [case.0x1800a0c66.0]
test eax, eax
je 0x18017563d
mov ecx, eax
sub eax, r15d
add rax, r12
lea rdx, [rcx + rcx*2]
mov rcx, qword [rsi + 0x368]
lea rdi, [rdi + rax*4]
lea rbp, [rcx + rdx*8]
nop word [rax + rax]
mov rcx, qword [rsi + 8]
mov rdx, rdi
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
xor eax, ebx
cmp eax, 2
jae 0x180175619
mov rcx, qword [rsi + 8]
mov rdx, rbp
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
mov r8d, 0xffffffff
mov rcx, rsi
mov edx, eax
call fcn.180177320
mov rcx, r14
sub rax, r14
nop word [rax + rax]
movzx r8d, byte [rcx]
movzx edx, byte [rcx + rax]
sub r8d, edx
jne 0x180175614
inc rcx
test edx, edx
jne 0x180175600
test r8d, r8d
je 0x180175670
mov rcx, qword [rsi + 8]
mov rdx, rdi
add rbp, 0x18
add rdi, 4
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x1800a0c66.0]
test al, 1
je 0x1801755b0
xor eax, eax
mov rbp, qword [rsp + 0x58]
mov r12, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop rdi
pop rsi
pop rbx
ret
mov rax, qword [rsi + 0x368]
lea rcx, [r9 + r9*2]
lea rax, [rax + rcx*8]
add rsp, 0x20
pop r15
pop r14
pop rdi
pop rsi
pop rbx
ret
mov rax, rbp
jmp 0x18017563f