Function at 0x140110b40
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 [0x140287028]
xor rax, rsp
mov qword [rsp + 0x90], rax
test r8, r8
je 0x140110f3c
mov rdi, r8
mov rbx, rcx
mov eax, dword [r8]
cmp eax, 4
je 0x1401110a2
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 0x1401111a4
mov ecx, eax
mov r8d, 0
and ecx, 7
jne 0x140110c82
mov rcx, qword [rbx + 8]
lea r8, [rax + 0x14]
mov edx, dword [rcx + 0x14]
cmp r8, rdx
ja 0x140111197
mov r9, qword [rcx + 8]
mov r8d, dword [r9 + rax + 4]
cmp r8d, 0xc8799269
jne 0x140111197
add r9, rax
mov r8d, dword [r9]
cmp r8d, 0x14
jb 0x140111197
mov r8d, dword [r9]
add r8d, eax
cmp r8d, edx
ja 0x140111197
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 0x1401111a4
mov r9, qword [rcx + 8]
mov r8d, dword [r9 + rax + 4]
cmp r8d, 0xc8799269
jne 0x1401111a4
add r9, rax
mov r8d, dword [r9]
cmp r8d, 0x10
jb 0x1401111a4
mov r10d, dword [r9]
add r10d, eax
xor r8d, r8d
cmp r10d, edx
ja 0x140110c82
test r9, r9
je 0x140110c82
mov r8d, dword [r9]
cmp r8, 0x11
jb 0x14011119f
add eax, r8d
cmp eax, edx
ja 0x14011119f
add r8, 0xfffffffffffffff0
test rsi, rsi
je 0x140110f37
cmp r13d, 2
jb 0x140110f37
cmp r13d, 0x3ffffffe
ja 0x140110f37
lea r12d, [r13 + 1]
lea r15, [r12*4]
cmp r8, r15
jb 0x140110f37
mov ecx, 0x20
call fcn.140172a4c
mov r14, rax
mov rcx, r15
call fcn.140172a4c
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 0x14011116b
mov dword [r8], 0
add rdx, 4
cmp r15, rdx
jne 0x140110ce0
mov qword [r14 + 8], rcx
mov qword [r14 + 0x18], 0
test r12, r12
je 0x14011113f
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 0x140110f2e
mov rdx, qword [r14]
mov r8, qword [r14 + 8]
sub r8, rdx
sar r8, 2
cmp r8, rax
jbe 0x14011113f
mov dword [rdx + rax*4], ecx
inc rax
cmp r12, rax
jne 0x140110d20
mov rcx, qword [r14]
mov r8, qword [r14 + 8]
mov rdx, r8
sub rdx, rcx
je 0x1401111ac
mov rax, rdx
shr rax, 2
mov r9, rcx
not r9
add r9, r8
jne 0x140110d79
xor r8d, r8d
jmp 0x140110dc0
mov r9, rdx
and r9, 0xfffffffffffffffe
xor r8d, r8d
lea r10, [0x1402683e0]
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 0x140110d90
test dl, 1
je 0x140110ddc
movzx edx, al
movzx ecx, byte [rcx + r8]
xor ecx, edx
lea rdx, [0x1402683e0]
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov dword [r14 + 0x18], eax
cmp eax, ebp
jne 0x140110f2e
test r14, r14
je 0x140110f37
mov rcx, qword [rbx + 0x10]
test rcx, rcx
jne 0x140111132
mov rcx, r14
call fcn.140111220
mov r14, rax
lea rsi, [r13*8]
mov eax, dword [rdi + 0x1c]
test eax, eax
jne 0x14011101f
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 0x1401111c8
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 [0x140261350]
movups xmmword [rsp + 0x58], xmm0
mov qword [rsp + 0x50], rdx
mov dword [rsp + 0x58], 0x53215531
cmp r13d, 0x1fffffff
ja 0x1401111d5
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.0x140110ed9
lea r15, [rdi + 0x50]
mov eax, edx
lea rcx, [0x140111208]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.140172a4c
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.140131d30
test rbx, rbx
je case.default.0x140110ed9
mov eax, dword [rsp + 0x4c]
lock or dword [rbx + 0x10], eax
mov qword [r13], rbx
jmp 0x140110f44
test r14, r14
jne 0x1401111b3
mov r13, qword [rsp + 0x40]
mov qword [r13], 0
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1401756e0
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.140172a4c
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.140131d30
lea rax, [0x1402602e0]
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xorps xmm0, xmm0
movups xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
jmp 0x140110f17
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.140172a4c
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.140131d30
lea rax, [rbx + 0x30]
xorps xmm0, xmm0
movups xmmword [rbx + 0x30], xmm0
mov qword [rbx + 0x28], rax
lea rax, [0x1402603a0]
mov qword [rbx], rax
jmp 0x140110f17
xor edx, edx
cmp eax, 0x40
jb 0x140111094
mov ecx, eax
and ecx, 7
jne 0x140111094
mov rcx, qword [rbx + 8]
lea rdx, [rax + 0x10]
mov r8d, dword [rcx + 0x14]
cmp rdx, r8
ja 0x140111201
mov r9, qword [rcx + 8]
mov edx, dword [r9 + rax + 4]
cmp edx, 0xc8799269
jne 0x140111201
add r9, rax
mov edx, dword [r9]
cmp edx, 0x10
jb 0x140111201
mov r10d, dword [r9]
add r10d, eax
xor edx, edx
cmp r10d, r8d
ja 0x140111094
test r9, r9
je 0x140111094
mov edx, dword [r9]
cmp rdx, 0x11
jb 0x1401111fc
add eax, edx
cmp eax, r8d
ja 0x1401111fc
add rdx, 0xfffffffffffffff0
cmp rdx, rsi
jae 0x140110e1c
jmp 0x140110f37
lea rsi, [rdi + 0x38]
lea r14, [rdi + 0x20]
lea r15, [rdi + 0x50]
mov ecx, 0x38
call fcn.140172a4c
mov r12, rax
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov rdx, rbx
mov r8, r15
mov r9, r14
call fcn.140034bb0
mov qword [r13], r12
mov eax, dword [rdi + 4]
lock or dword [r12 + 0x10], eax
jmp 0x140110f44
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.140172a4c
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.140131d30
lea rax, [0x140260460]
jmp 0x140111017
xor ebx, ebx
jmp 0x140110f28
mov rdx, r14
call fcn.1401123c0
jmp 0x140110e06
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.1401b2820
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.1401b2820
xor r8d, r8d
jmp 0x140110c15
call fcn.1401b0f60
xor r8d, r8d
jmp 0x140110c82
xor eax, eax
jmp 0x140110ddc
mov rcx, r14
call fcn.140161300
mov rcx, r14
call fcn.140172a44
jmp 0x140110f37
int3
int3
call fcn.1401b0f60
xor edx, edx
jmp 0x140111094