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

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0x88
mov rsi, rcx
xor r15d, r15d
mov ebx, r15d
cmp qword [rcx + 0x3c8], rbx
jne 0x18007c319
mov ecx, dword [rcx + 0x38]
inc ecx
add ecx, dword [rsi + 0x30]
cmp ecx, 0x19
jbe 0x18007c319
lea ecx, [r15 + 0x28]
call fcn.1800db3c0
mov r12, rax
mov qword [rbp + 0x67], rax
mov qword [rax + 0x17], r15
mov qword [rax + 0x1f], r15
mov byte [rax + 0x27], bl
mov qword [rbp + 0x6f], rax
mov qword [rax], r15
mov qword [rax + 8], r15
mov eax, 0x10
mov dword [r12 + 0x10], eax
mov word [r12 + 0x14], ax
mov byte [r12 + 0x16], 1
mov qword [r12 + 0x18], r15
mov qword [r12 + 0x20], r15
mov qword [rbp - 0x49], r12
mov dword [rbp - 0x41], r15d
mov r13d, 1
mov dword [rbp - 0x41], r13d
mov eax, r15d
mov edx, 4
cmp dword [rsi + 0x1748], r13d
cmove eax, edx
lea rcx, [0x18010d228]
movsxd rbx, dword [rax + rcx]
mov eax, edx
mul rbx
mov r14, 0xffffffffffffffff
cmovo rax, r14
mov rcx, rax
call fcn.1800db3b8
mov qword [r12 + 0x18], rax
mov dword [r12 + 0x20], ebx
lea r8, [rbx*4]
mov edx, r14d
mov rcx, rax
call fcn.1800dd740
mov ebx, r15d
cmp dword [rsi + 0x28], r13d
jb 0x18007c2f4
lea r15, [rsi + 0x5f8]
mov rax, qword [r15]
lea r8, [rbp + 0x7f]
mov edx, r13d
mov rcx, r15
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c3c4
mov rdi, qword [rsi + 0x100]
movzx eax, byte [rdi + 0x10]
add rax, qword [rbp + 0x7f]
cmp byte [rdi + 0x11], 2
jne 0x18007befd
movzx r14d, word [rax]
jmp 0x18007bf00
mov r14d, dword [rax]
cmp r13d, dword [rsi + 0x28]
jae 0x18007bf4e
mov rax, qword [r15]
lea edx, [r13 + 1]
lea r8, [rbp + 0x6f]
mov rcx, r15
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c3b0
movzx eax, byte [rdi + 0x10]
add rax, qword [rbp + 0x6f]
cmp byte [rdi + 0x11], 2
jne 0x18007bf3f
movzx r15d, word [rax]
jmp 0x18007bf42
mov r15d, dword [rax]
test r15d, r15d
jne 0x18007bf97
lea r15, [rsi + 0x5f8]
mov rax, qword [r15]
lea r8, [rbp + 0x6f]
mov edx, r13d
mov rcx, r15
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c3b0
movzx eax, byte [rdi + 0x10]
add rax, qword [rbp + 0x6f]
cmp byte [rdi + 0x11], 2
jne 0x18007bf85
movzx ecx, word [rax]
jmp 0x18007bf87
mov ecx, dword [rax]
test ecx, ecx
jne 0x18007bf90
xor r15d, r15d
jmp 0x18007bf97
mov r15d, dword [rsi + 0x38]
inc r15d
cmp r14d, r15d
jae 0x18007c0dc
mov eax, dword [0x1801312d0]
cmp eax, 0x2d
jae 0x18007bff8
cmp dword [rsi + rax*4 + 0x20], 0
je 0x18007bff8
lea rcx, [rsi + 0x6e8]
mov rax, qword [rcx]
lea r8, [rbp - 0x29]
mov edx, r14d
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c32f
mov rax, qword [rsi + 0x130]
movzx ecx, byte [rax + 1]
add rcx, qword [rbp - 0x29]
cmp byte [rax + 2], 2
jne 0x18007bff4
movzx edi, word [rcx]
jmp 0x18007bffb
mov edi, dword [rcx]
jmp 0x18007bffb
mov edi, r14d
lea rcx, [rsi + 0x738]
mov rax, qword [rcx]
lea r8, [rbp - 0x21]
mov edx, edi
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c367
mov rax, qword [rsi + 0x140]
movzx ecx, byte [rax + 0xa]
add rcx, qword [rbp - 0x21]
mov edx, dword [rsi + 0x3b0]
and edx, dword [rcx]
lea rcx, [rsi + 0x14d0]
mov dword [rbp - 1], 0
mov rax, qword [rcx]
lea r8, [rbp - 9]
mov rax, qword [rax + 0x40]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c356
mov r8, qword [rbp - 9]
mov ebx, r13d
bts ebx, 0x19
mov dword [rbp - 0x39], ebx
lea rcx, [rbp - 0x39]
mov edx, 0x1505
nop dword [rax]
imul edx, edx, 0x21
movzx eax, byte [rcx]
xor edx, eax
inc rcx
lea rax, [rbp - 0x35]
cmp rcx, rax
jb 0x18007c080
mov eax, 0x1505
movsx ecx, byte [r8]
test ecx, ecx
je 0x18007c0b2
imul eax, eax, 0x21
xor eax, ecx
lea r8, [r8 + 1]
movsx ecx, byte [r8]
test ecx, ecx
jne 0x18007c0a1
add edx, eax
mov rcx, r12
call fcn.18007e580
test rax, rax
je 0x18007c340
or edi, 0x6000000
mov dword [rax], edi
mov dword [rax + 4], ebx
inc r14d
cmp r14d, r15d
jb 0x18007bfa0
mov rdi, qword [rsi + 0x100]
movzx eax, byte [rdi + 0xd]
add rax, qword [rbp + 0x7f]
cmp byte [rdi + 0xe], 2
jne 0x18007c0f7
movzx r14d, word [rax]
jmp 0x18007c0fa
mov r14d, dword [rax]
lea r15d, [r13 + 1]
cmp r13d, dword [rsi + 0x28]
jae 0x18007c14c
lea rcx, [rsi + 0x5f8]
mov rax, qword [rcx]
lea r8, [rbp + 0x77]
mov edx, r15d
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c39c
movzx eax, byte [rdi + 0xd]
add rax, qword [rbp + 0x77]
cmp byte [rdi + 0xe], 2
jne 0x18007c140
movzx r12d, word [rax]
jmp 0x18007c143
mov r12d, dword [rax]
test r12d, r12d
jne 0x18007c199
mov r12, qword [rbp + 0x67]
lea rcx, [rsi + 0x5f8]
mov rax, qword [rcx]
lea r8, [rbp + 0x77]
mov edx, r13d
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c39c
movzx eax, byte [rdi + 0xd]
add rax, qword [rbp + 0x77]
cmp byte [rdi + 0xe], 2
jne 0x18007c187
movzx ecx, word [rax]
jmp 0x18007c189
mov ecx, dword [rax]
test ecx, ecx
jne 0x18007c192
xor r12d, r12d
jmp 0x18007c199
mov r12d, dword [rsi + 0x30]
inc r12d
xor ebx, ebx
cmp r14d, r12d
jae 0x18007c2e0
mov eax, dword [0x1801312c0]
cmp eax, 0x2d
jae 0x18007c1fc
cmp dword [rsi + rax*4 + 0x20], 0
je 0x18007c1fc
lea rcx, [rsi + 0x648]
mov rax, qword [rcx]
lea r8, [rbp - 0x19]
mov edx, r14d
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c378
mov rax, qword [rsi + 0x110]
movzx ecx, byte [rax + 1]
add rcx, qword [rbp - 0x19]
cmp byte [rax + 2], 2
jne 0x18007c1f8
movzx edi, word [rcx]
jmp 0x18007c1ff
mov edi, dword [rcx]
jmp 0x18007c1ff
mov edi, r14d
lea rcx, [rsi + 0x698]
mov rax, qword [rcx]
lea r8, [rbp - 0x11]
mov edx, edi
mov rax, qword [rax + 0xa8]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c39a
mov rax, qword [rsi + 0x120]
movzx ecx, byte [rax + 4]
add rcx, qword [rbp - 0x11]
mov edx, dword [rsi + 0x3b0]
and edx, dword [rcx]
lea rcx, [rsi + 0x14d0]
xor r15d, r15d
mov dword [rbp + 0xf], r15d
mov rax, qword [rcx]
lea r8, [rbp + 7]
mov rax, qword [rax + 0x40]
call qword [0x180102408]
mov ebx, eax
test eax, eax
js 0x18007c391
mov r8, qword [rbp + 7]
mov r15d, r13d
bts r15d, 0x19
mov dword [rbp - 0x31], r15d
lea rcx, [rbp - 0x31]
mov edx, 0x1505
nop
imul edx, edx, 0x21
movzx eax, byte [rcx]
xor edx, eax
inc rcx
lea rax, [rbp - 0x2d]
cmp rcx, rax
jb 0x18007c280
mov eax, 0x1505
movsx ecx, byte [r8]
test ecx, ecx
je 0x18007c2b2
imul eax, eax, 0x21
xor eax, ecx
lea r8, [r8 + 1]
movsx ecx, byte [r8]
test ecx, ecx
jne 0x18007c2a1
add edx, eax
mov rcx, qword [rbp + 0x67]
call fcn.18007e580
test rax, rax
je 0x18007c38a
bts edi, 0x1a
mov dword [rax], edi
mov dword [rax + 4], r15d
inc r14d
cmp r14d, r12d
jb 0x18007c1a4
lea r15d, [r13 + 1]
mov r13d, r15d
mov r12, qword [rbp + 0x67]
cmp r15d, dword [rsi + 0x28]
jbe 0x18007beb7
xor r15d, r15d
xor eax, eax
lock cmpxchg qword [rsi + 0x3c8], r12
mov eax, dword [rbp - 0x41]
cmove eax, r15d
mov dword [rbp - 0x41], eax
test eax, eax
je 0x18007c319
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], r15d
mov eax, ebx
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov ebx, 0x8007000e
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov rcx, qword [rbp + 0x67]
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov ebx, 0x8007000e
jmp 0x18007c378
mov rcx, qword [rbp + 0x67]
jmp 0x18007c310
jmp 0x18007c378
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319
mov rcx, r12
call fcn.180070280
mov dword [rbp - 0x41], 0
jmp 0x18007c319