Function at 0x14013eaf0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r13, rdx
mov rax, qword [0x14029a038]
xor rax, rsp
mov qword [rsp + 0x90], rax
test r8, r8
je 0x14013eeec
mov rdi, r8
mov rbx, rcx
mov eax, dword [r8]
cmp eax, 4
je 0x14013f052
mov dword [rsp + 0x48], eax
mov qword [rsp + 0x40], r13
mov eax, dword [rdi + 4]
mov dword [rsp + 0x4c], eax
mov r13d, dword [rdi + 0x10]
mov eax, dword [rdi + 0x14]
xor esi, esi
mov ebp, dword [rdi + 0x18]
cmp rax, 0x40
jb 0x14013f154
mov ecx, eax
mov r8d, 0
and ecx, 7
jne 0x14013ec32
mov rcx, qword [rbx + 8]
lea r8, [rax + 0x14]
mov edx, dword [rcx + 0x14]
cmp r8, rdx
ja 0x14013f147
mov r9, qword [rcx + 8]
mov r8d, dword [r9 + rax + 4]
cmp r8d, 0xc8799269
jne 0x14013f147
add r9, rax
mov r8d, dword [r9]
cmp r8d, 0x14
jb 0x14013f147
mov r8d, dword [r9]
add r8d, eax
cmp r8d, edx
ja 0x14013f147
mov r10d, dword [r9 + 8]
xor r8d, r8d
cmp r10d, 0xbcea225b
cmove r8, r9
lea rsi, [r8 + 0x10]
test r8, r8
cmove rsi, r8
lea r8, [rax + 0x10]
cmp r8, rdx
ja 0x14013f154
mov r9, qword [rcx + 8]
mov r8d, dword [r9 + rax + 4]
cmp r8d, 0xc8799269
jne 0x14013f154
add r9, rax
mov r8d, dword [r9]
cmp r8d, 0x10
jb 0x14013f154
mov r10d, dword [r9]
add r10d, eax
xor r8d, r8d
cmp r10d, edx
ja 0x14013ec32
test r9, r9
je 0x14013ec32
mov r8d, dword [r9]
cmp r8, 0x11
jb 0x14013f14f
add eax, r8d
cmp eax, edx
ja 0x14013f14f
add r8, 0xfffffffffffffff0
test rsi, rsi
je 0x14013eee7
cmp r13d, 2
jb 0x14013eee7
cmp r13d, 0x3ffffffe
ja 0x14013eee7
lea r12d, [r13 + 1]
lea r15, [r12*4]
cmp r8, r15
jb 0x14013eee7
mov ecx, 0x20
call fcn.14017b1d8
mov r14, rax
mov rcx, r15
call fcn.14017b1d8
mov qword [r14], rax
mov qword [r14 + 8], rax
lea rcx, [rax + r12*4]
mov qword [r14 + 0x10], rcx
xor edx, edx
nop dword [rax]
mov r8, rax
add r8, rdx
je 0x14013f11b
mov dword [r8], 0
add rdx, 4
cmp r15, rdx
jne 0x14013ec90
mov qword [r14 + 8], rcx
mov qword [r14 + 0x18], 0
test r12, r12
je 0x14013f0ef
mov ecx, dword [rsi]
mov dword [rax], ecx
mov eax, 1
nop word [rax + rax]
mov ecx, dword [rsi + rax*4]
cmp ecx, dword [rsi + rax*4 - 4]
jle 0x14013eede
mov rdx, qword [r14]
mov r8, qword [r14 + 8]
sub r8, rdx
sar r8, 2
cmp r8, rax
jbe 0x14013f0ef
mov dword [rdx + rax*4], ecx
inc rax
cmp r12, rax
jne 0x14013ecd0
mov rcx, qword [r14]
mov r8, qword [r14 + 8]
mov rdx, r8
sub rdx, rcx
je 0x14013f15c
mov rax, rdx
shr rax, 2
mov r9, rcx
not r9
add r9, r8
jne 0x14013ed29
xor r8d, r8d
jmp 0x14013ed70
mov r9, rdx
and r9, 0xfffffffffffffffe
xor r8d, r8d
lea r10, [0x140278d30]
nop word [rax + rax]
movzx r11d, al
movzx esi, byte [rcx + r8]
xor esi, r11d
shr eax, 8
xor eax, dword [r10 + rsi*4]
movzx r11d, al
movzx esi, byte [rcx + r8 + 1]
xor esi, r11d
shr eax, 8
xor eax, dword [r10 + rsi*4]
add r8, 2
cmp r9, r8
jne 0x14013ed40
test dl, 1
je 0x14013ed8c
movzx edx, al
movzx ecx, byte [rcx + r8]
xor ecx, edx
lea rdx, [0x140278d30]
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov dword [r14 + 0x18], eax
cmp eax, ebp
jne 0x14013eede
test r14, r14
je 0x14013eee7
mov rcx, qword [rbx + 0x10]
test rcx, rcx
jne 0x14013f0e2
mov rcx, r14
call fcn.14013de50
mov r14, rax
lea rsi, [r13*8]
mov eax, dword [rdi + 0x1c]
test eax, eax
jne 0x14013efcf
lea rax, [rdi + 0x1c]
movabs rcx, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x80], rcx
mov rdx, qword [rbx + 8]
mov qword [rsp + 0x70], rdx
mov dword [rsp + 0x78], 0x53215531
cmp r13d, 0x1fffffff
ja 0x14013f178
mov r8d, esi
lea ecx, [r13*4]
mov dword [rsp + 0x7c], r8d
mov dword [rsp + 0x80], 0
mov byte [rsp + 0x84], 0
mov qword [rsp + 0x88], rax
movaps xmm0, xmmword [0x140270690]
movups xmmword [rsp + 0x58], xmm0
mov qword [rsp + 0x50], rdx
mov dword [rsp + 0x58], 0x53215531
cmp r13d, 0x1fffffff
ja 0x14013f185
mov dword [rsp + 0x5c], esi
mov r13, qword [rsp + 0x40]
mov edx, dword [rsp + 0x48]
mov dword [rsp + 0x60], ecx
mov byte [rsp + 0x64], 0
mov qword [rsp + 0x68], rax
cmp edx, 3
ja case.default.0x14013ee89
lea r15, [rdi + 0x50]
mov eax, edx
lea rcx, [0x14013f1b8]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.14017b1d8
mov rbx, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov rcx, rbx
mov rdx, r15
mov r8, r14
call fcn.14013f1d0
test rbx, rbx
je case.default.0x14013ee89
mov eax, dword [rsp + 0x4c]
lock or dword [rbx + 0x10], eax
mov qword [r13], rbx
jmp 0x14013eef4
test r14, r14
jne 0x14013f163
mov r13, qword [rsp + 0x40]
mov qword [r13], 0
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.14017e7b0
mov rax, r13
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.14017b1d8
mov rbx, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov rcx, rbx
mov rdx, r15
mov r8, r14
call fcn.14013f1d0
lea rax, [0x14026f628]
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xorps xmm0, xmm0
movups xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
jmp 0x14013eec7
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.14017b1d8
mov rbx, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov rcx, rbx
mov rdx, r15
mov r8, r14
call fcn.14013f1d0
lea rax, [rbx + 0x30]
xorps xmm0, xmm0
movups xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
lea rax, [0x14026f6e8]
mov qword [rbx], rax
jmp 0x14013eec7
xor edx, edx
cmp eax, 0x40
jb 0x14013f044
mov ecx, eax
and ecx, 7
jne 0x14013f044
mov rcx, qword [rbx + 8]
lea rdx, [rax + 0x10]
mov r8d, dword [rcx + 0x14]
cmp rdx, r8
ja 0x14013f1b1
mov r9, qword [rcx + 8]
mov edx, dword [r9 + rax + 4]
cmp edx, 0xc8799269
jne 0x14013f1b1
add r9, rax
mov edx, dword [r9]
cmp edx, 0x10
jb 0x14013f1b1
mov r10d, dword [r9]
add r10d, eax
xor edx, edx
cmp r10d, r8d
ja 0x14013f044
test r9, r9
je 0x14013f044
mov edx, dword [r9]
cmp rdx, 0x11
jb 0x14013f1ac
add eax, edx
cmp eax, r8d
ja 0x14013f1ac
add rdx, 0xfffffffffffffff0
cmp rdx, rsi
jae 0x14013edcc
jmp 0x14013eee7
lea rsi, [rdi + 0x38]
lea r14, [rdi + 0x20]
lea r15, [rdi + 0x50]
mov ecx, 0x38
call fcn.14017b1d8
mov r12, rax
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov rdx, rbx
mov r8, r15
mov r9, r14
call fcn.1400368d0
mov qword [r13], r12
mov eax, dword [rdi + 4]
lock or dword [r12 + 0x10], eax
jmp 0x14013eef4
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.14017b1d8
mov rbx, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x70]
mov rcx, rbx
mov rdx, r15
mov r8, r14
call fcn.14013f1d0
lea rax, [0x14026f7a8]
jmp 0x14013efc7
xor ebx, ebx
jmp 0x14013eed8
mov rdx, r14
call fcn.140140310
jmp 0x14013edb6
lea rax, str.vector___index_out_of_bounds
mov qword [rsp + 0x20], rax
lea rcx, str._s:_d:_assertion__s_failed:__s
lea rdx, str....._buildtools_third_partylibc_trunkinclude_vector
lea r9, str.__n___size__
mov r8d, 0x587
call fcn.1401bdbc0
lea rax, str.null_pointer_given_to_construct_at
mov qword [rsp + 0x20], rax
lea rcx, str._s:_d:_assertion__s_failed:__s
lea rdx, str....._buildtools_third_partylibc_trunkinclude__memoryconstruct_at.h
lea r9, str.__location___nullptr
mov r8d, 0x23
call fcn.1401bdbc0
xor r8d, r8d
jmp 0x14013ebc5
call fcn.1401bbba0
xor r8d, r8d
jmp 0x14013ec32
xor eax, eax
jmp 0x14013ed8c
mov rcx, r14
call fcn.14016fc90
mov rcx, r14
call fcn.14017b254
jmp 0x14013eee7
int3
int3
call fcn.1401bbba0
xor edx, edx
jmp 0x14013f044