Function at 0x14004cd40
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x17]
sub rsp, 0xd8
mov rbx, r9
mov qword [rsp + 0x20], rcx
mov edi, dword [rbp + 0x7f]
lea r9, [rsp + 0x30]
call fcn.14004c700
mov r14, rax
mov qword [rsp + 0x28], rax
test rax, rax
je 0x14004cd9b
lea r9, [rsp + 0x34]
mov r8d, edi
mov rdx, rbx
call fcn.14004c700
mov r13, rax
test rax, rax
jne 0x14004cdb1
mov rcx, r14
call fcn.1400a16a0
xor eax, eax
add rsp, 0xd8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov r12d, 0x811c9dc5
mov esi, r12d
mov eax, dword [rsp + 0x30]
test eax, eax
jle 0x14004cde5
mov rcx, r14
mov edx, eax
nop word [rax + rax]
imul esi, esi, 0x1000193
movsx eax, byte [rcx]
xor esi, eax
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x14004cdd0
mov eax, dword [rsp + 0x34]
test eax, eax
jle 0x14004ce09
mov rcx, r13
mov edx, eax
imul r12d, r12d, 0x1000193
movsx eax, byte [rcx]
xor r12d, eax
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x14004cdf2
lea rax, vtable.AutoLock.0
mov qword [rbp - 0x41], rax
mov rbx, qword [rsp + 0x20]
lea rax, [rbx + 8]
mov qword [rbp - 0x39], rax
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
lea r15, [rbx + 0x58]
mov rax, qword [r15]
mov rdx, qword [rax + 8]
mov rcx, rdx
mov r11, rax
cmp byte [rdx + 0x19], 0
jne 0x14004ce6b
mov r8d, dword [rcx + 0x1c]
cmp r8d, esi
jae 0x14004ce51
mov rcx, qword [rcx + 0x10]
jmp 0x14004ce65
cmp byte [r11 + 0x19], 0
je 0x14004ce5f
cmp esi, r8d
cmovb r11, rcx
mov rax, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x14004ce42
cmp byte [r11 + 0x19], 0
jne 0x14004ce75
mov rdx, qword [r11]
cmp byte [rdx + 0x19], 0
jne 0x14004ce97
nop dword [rax + rax]
cmp esi, dword [rdx + 0x1c]
jae 0x14004ce8d
mov r11, rdx
mov rdx, qword [rdx]
jmp 0x14004ce91
mov rdx, qword [rdx + 0x10]
cmp byte [rdx + 0x19], 0
je 0x14004ce80
cmp rax, r11
je 0x14004cf7d
mov rbx, qword [rbx + 0x38]
mov rdi, qword [rbx + 8]
movzx r14d, byte [rdi + 0x19]
nop dword [rax]
mov r10, rbx
test r14b, r14b
jne 0x14004ced7
mov edx, dword [rax + 0x20]
mov rcx, rdi
nop
cmp dword [rcx + 0x20], edx
jae 0x14004cecb
mov rcx, qword [rcx + 0x10]
jmp 0x14004ced1
mov r10, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x14004cec0
cmp byte [r10 + 0x19], 0
jne 0x14004cf1e
mov ecx, dword [r10 + 0x20]
cmp dword [rax + 0x20], ecx
jb 0x14004cf1e
cmp r10, rbx
je 0x14004cf1e
mov rcx, qword [r10 + 0x28]
mov r9, qword [rsp + 0x28]
sub r9, rcx
nop dword [rax + rax]
movzx r8d, byte [rcx]
movzx edx, byte [rcx + r9]
sub r8d, edx
jne 0x14004cf15
inc rcx
test edx, edx
jne 0x14004cf00
test r8d, r8d
je 0x14004cfd1
mov rcx, qword [rax + 0x10]
cmp byte [rcx + 0x19], 0
je 0x14004cf4a
mov rcx, qword [rax + 8]
cmp byte [rcx + 0x19], 0
jne 0x14004cf45
cmp rax, qword [rcx + 0x10]
jne 0x14004cf45
mov rax, rcx
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x19], 0
je 0x14004cf32
mov rax, rcx
jmp 0x14004cf6f
mov rax, rcx
mov rdx, qword [rcx]
cmp byte [rdx + 0x19], 0
jne 0x14004cf6f
nop word [rax + rax]
mov rax, rdx
mov rcx, qword [rdx]
mov rdx, rcx
cmp byte [rcx + 0x19], 0
je 0x14004cf60
cmp rax, r11
jne 0x14004ceb0
mov rbx, qword [rsp + 0x20]
mov r14d, 1
lock xadd dword [rbx + 0x30], r14d
inc r14d
add rbx, 0x38
mov rdi, qword [rbx]
mov rax, qword [rdi + 8]
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x40], 0
mov rcx, rdi
cmp byte [rax + 0x19], 0
jne 0x14004d156
mov qword [rsp + 0x38], rax
cmp dword [rax + 0x20], r14d
jae 0x14004d13e
mov dword [rsp + 0x40], 0
mov rax, qword [rax + 0x10]
jmp 0x14004d14c
mov r14d, dword [r10 + 0x20]
test r14d, r14d
je 0x14004cf78
mov r15, qword [rsp + 0x20]
mov rax, qword [r15 + 0x68]
mov rdx, qword [rax + 8]
mov rcx, rdx
mov r11, rax
cmp byte [rdx + 0x19], 0
jne 0x14004d01c
mov r8d, dword [rcx + 0x1c]
cmp r8d, r12d
jae 0x14004d002
mov rcx, qword [rcx + 0x10]
jmp 0x14004d016
cmp byte [r11 + 0x19], 0
je 0x14004d010
cmp r12d, r8d
cmovb r11, rcx
mov rax, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x14004cff3
cmp byte [r11 + 0x19], 0
jne 0x14004d026
mov rdx, qword [r11]
cmp byte [rdx + 0x19], 0
jne 0x14004d048
nop dword [rax]
cmp r12d, dword [rdx + 0x1c]
jae 0x14004d03e
mov r11, rdx
mov rdx, qword [rdx]
jmp 0x14004d042
mov rdx, qword [rdx + 0x10]
cmp byte [rdx + 0x19], 0
je 0x14004d030
cmp rax, r11
je 0x14004d1f3
mov rbx, qword [r15 + 0x48]
mov rdi, qword [rbx + 8]
movzx esi, byte [rdi + 0x19]
nop dword [rax]
mov r10, rbx
test sil, sil
jne 0x14004d087
mov edx, dword [rax + 0x20]
mov rcx, rdi
nop
cmp dword [rcx + 0x20], edx
jae 0x14004d07b
mov rcx, qword [rcx + 0x10]
jmp 0x14004d081
mov r10, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x14004d070
cmp byte [r10 + 0x19], 0
jne 0x14004d0ca
mov ecx, dword [r10 + 0x20]
cmp dword [rax + 0x20], ecx
jb 0x14004d0ca
cmp r10, rbx
je 0x14004d0ca
cmp dword [r10 + 0x28], r14d
jne 0x14004d0ca
mov rcx, qword [r10 + 0x30]
mov r9, r13
sub r9, rcx
nop dword [rax]
movzx r8d, byte [rcx]
movzx edx, byte [rcx + r9]
sub r8d, edx
jne 0x14004d0c5
inc rcx
test edx, edx
jne 0x14004d0b0
test r8d, r8d
je 0x14004d12d
mov rcx, qword [rax + 0x10]
cmp byte [rcx + 0x19], 0
je 0x14004d0f8
mov rcx, qword [rax + 8]
cmp byte [rcx + 0x19], 0
jne 0x14004d0f3
nop
cmp rax, qword [rcx + 0x10]
jne 0x14004d0f3
mov rax, rcx
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x19], 0
je 0x14004d0e0
mov rax, rcx
jmp 0x14004d11f
mov rax, rcx
mov rdx, qword [rcx]
cmp byte [rdx + 0x19], 0
jne 0x14004d11f
nop dword [rax]
nop dword [rax + rax]
mov rax, rdx
mov rcx, qword [rdx]
mov rdx, rcx
cmp byte [rcx + 0x19], 0
je 0x14004d110
cmp rax, r11
je 0x14004d1f3
jmp 0x14004d060
mov ebx, dword [r10 + 0x20]
test ebx, ebx
jne 0x14004d2dd
jmp 0x14004d1f3
mov dword [rsp + 0x40], 1
mov rcx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x14004cfb1
cmp byte [rcx + 0x19], 0
jne 0x14004d162
cmp r14d, dword [rcx + 0x20]
jae 0x14004d1ce
movabs rax, 0x555555555555555
cmp qword [rbx + 8], rax
je 0x14004d30e
mov qword [rbp - 0x61], rbx
mov qword [rbp - 0x59], 0
lfence
mov ecx, 0x30
call fcn.140091bc8
nop
mov dword [rax + 0x20], r14d
mov rcx, qword [rsp + 0x28]
mov qword [rax + 0x28], rcx
mov qword [rax], rdi
mov qword [rax + 8], rdi
mov qword [rax + 0x10], rdi
mov word [rax + 0x18], 0
mov qword [rbp - 0x59], 0
movups xmm0, xmmword [rsp + 0x38]
movaps xmmword [rbp - 0x21], xmm0
mov r8, rax
lea rdx, [rbp - 0x21]
mov rcx, rbx
call fcn.140009f10
mov dword [rbp - 0x71], esi
mov dword [rbp - 0x6d], r14d
lea r8, [rbp - 0x71]
lea rdx, [rbp - 0x31]
mov rcx, r15
call fcn.140049d10
mov qword [rsp + 0x28], 0
mov r15, qword [rsp + 0x20]
mov ebx, 1
lock xadd dword [r15 + 0x34], ebx
inc ebx
lea rdi, [r15 + 0x48]
mov dword [rbp - 0x51], r14d
mov qword [rbp - 0x49], r13
mov rsi, qword [rdi]
mov rax, qword [rsi + 8]
mov qword [rsp + 0x38], rax
xor r14d, r14d
mov dword [rsp + 0x40], r14d
mov rcx, rsi
cmp byte [rax + 0x19], r14b
jne 0x14004d259
nop dword [rax]
mov qword [rsp + 0x38], rax
cmp dword [rax + 0x20], ebx
jae 0x14004d245
mov dword [rsp + 0x40], r14d
mov rax, qword [rax + 0x10]
jmp 0x14004d253
mov dword [rsp + 0x40], 1
mov rcx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], r14b
je 0x14004d230
cmp byte [rcx + 0x19], r14b
jne 0x14004d264
cmp ebx, dword [rcx + 0x20]
jae 0x14004d2c2
movabs rax, 0x492492492492492
cmp qword [rdi + 8], rax
je 0x14004d30e
mov qword [rbp - 0x11], rdi
mov qword [rbp - 9], r14
lfence
mov ecx, 0x38
call fcn.140091bc8
nop
mov dword [rax + 0x20], ebx
movups xmm0, xmmword [rbp - 0x51]
movups xmmword [rax + 0x28], xmm0
mov qword [rax], rsi
mov qword [rax + 8], rsi
mov qword [rax + 0x10], rsi
mov word [rax + 0x18], 0
movups xmm0, xmmword [rsp + 0x38]
movaps xmmword [rbp - 1], xmm0
mov r8, rax
lea rdx, [rbp - 1]
mov rcx, rdi
call fcn.140009f10
lea rcx, [r15 + 0x68]
mov dword [rbp - 0x69], r12d
mov dword [rbp - 0x65], ebx
lea r8, [rbp - 0x69]
lea rdx, [rbp - 0x29]
call fcn.140049d10
mov r13, r14
mov rcx, qword [rbp - 0x39]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov rax, qword [rsp + 0x28]
test rax, rax
je 0x14004d2fa
mov rcx, rax
call fcn.1400a16a0
test r13, r13
je 0x14004d307
mov rcx, r13
call fcn.1400a16a0
mov eax, ebx
jmp 0x14004cd9d
call fcn.140002780
int3