Function at 0x1401522e0
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, 0x138
movaps xmmword [rsp + 0x120], xmm6
mov r13, rdx
mov rax, qword [0x14029b028]
xor rax, rsp
mov qword [rsp + 0x118], rax
test r8, r8
je 0x140152d9c
mov r14, rcx
mov ebp, dword [r8]
cmp ebp, 4
je 0x140152cb0
mov qword [rsp + 0x40], r13
mov eax, dword [r8 + 4]
mov dword [rsp + 0x64], eax
mov r13d, dword [r8 + 0x10]
mov eax, dword [r8 + 0x14]
mov r15d, dword [r8 + 0x18]
mov rcx, qword [r14 + 8]
lea r10d, [rax + 0x14]
xor edx, edx
cmp r10d, 0x54
jb 0x1401523ab
mov r9d, eax
and r9d, 7
jne 0x1401523ab
mov r9d, dword [rcx + 0x14]
cmp r9d, r10d
jb 0x140152db6
mov r11, qword [rcx + 8]
mov edx, dword [r11 + rax + 4]
cmp edx, 0xc8799269
jne 0x140152db6
add r11, rax
mov edx, dword [r11]
cmp edx, 0x14
jb 0x140152db6
xor edx, edx
mov r10d, dword [r11]
add r10d, eax
jb 0x1401523ab
cmp r10d, r9d
ja 0x1401523ab
mov r9d, dword [r11 + 8]
xor edx, edx
cmp r9d, 0xbcea225b
cmove rdx, r11
mov qword [rsp + 0x58], r8
lea rdi, [rdx + 0x10]
test rdx, rdx
cmove rdi, rdx
lea r9d, [rax + 0x10]
xor edx, edx
cmp r9d, 0x50
jb 0x140152437
mov r8d, eax
and r8d, 7
jne 0x140152437
mov r8d, dword [rcx + 0x14]
cmp r8d, r9d
jb 0x140152e1a
mov r9, qword [rcx + 8]
mov edx, dword [r9 + rax + 4]
cmp edx, 0xc8799269
jne 0x140152e1a
add r9, rax
mov edx, dword [r9]
cmp edx, 0x10
jb 0x140152e1a
xor edx, edx
mov r10d, dword [r9]
add r10d, eax
jb 0x140152437
cmp r10d, r8d
ja 0x140152437
test r9, r9
je 0x140152437
mov edx, dword [r9]
cmp rdx, 0x11
jb 0x140152e15
add eax, edx
jb 0x140152e15
cmp eax, r8d
ja 0x140152e15
add rdx, 0xfffffffffffffff0
test rdi, rdi
je 0x140152d97
cmp r13d, 2
jb 0x140152d97
cmp r13d, 0x3ffffffe
ja 0x140152d97
lea r12d, [r13 + 1]
lea rsi, [r12*4]
cmp rdx, rsi
jb 0x140152d97
mov ecx, 0x20
call fcn.140184834
mov rbx, rax
mov rcx, rsi
call fcn.140184834
mov qword [rbx], rax
mov qword [rbx + 8], rax
lea rcx, [rax + r12*4]
mov qword [rbx + 0x10], rcx
xor edx, edx
nop word cs:[rax + rax]
mov r8, rax
add r8, rdx
je 0x140152de9
mov dword [r8], 0
add rdx, 4
cmp rsi, rdx
jne 0x1401524a0
mov qword [rbx + 8], rcx
mov qword [rbx + 0x18], 0
test r12, r12
je 0x140152dbd
mov ecx, dword [rdi]
mov dword [rax], ecx
mov eax, 1
nop word [rax + rax]
mov ecx, dword [rdi + rax*4]
cmp ecx, dword [rdi + rax*4 - 4]
jle 0x140152d8e
mov rdx, qword [rbx]
mov r8, qword [rbx + 8]
sub r8, rdx
sar r8, 2
cmp r8, rax
jbe 0x140152dbd
mov dword [rdx + rax*4], ecx
inc rax
cmp r12, rax
jne 0x1401524e0
mov rcx, qword [rbx]
mov r8, qword [rbx + 8]
mov rdx, r8
sub rdx, rcx
je 0x140152e21
mov rax, rdx
shr rax, 2
mov r9, rcx
not r9
add r9, r8
jne 0x140152539
xor r8d, r8d
jmp 0x140152580
mov r9, rdx
and r9, 0xfffffffffffffffe
xor r8d, r8d
lea r10, [0x14027c090]
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 0x140152550
test dl, 1
je 0x14015259c
movzx edx, al
movzx ecx, byte [rcx + r8]
xor ecx, edx
lea rdx, [0x14027c090]
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov dword [rbx + 0x18], eax
cmp eax, r15d
jne 0x140152d8e
test rbx, rbx
je 0x140152d97
mov rcx, qword [r14 + 0x10]
test rcx, rcx
mov rdi, qword [rsp + 0x58]
mov dword [rsp + 0x50], ebp
jne 0x140152da9
mov rcx, rbx
call fcn.1400fd3f0
mov rbx, rax
lea rbp, [r13*8]
mov edx, dword [rdi + 0x1c]
test edx, edx
jne 0x140152bc0
movabs r12, 0xfffffffc00000000
movabs rsi, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0xa8], rsi
mov r15, qword [r14 + 8]
mov rax, r15
and rax, r12
mov qword [rsp + 0x70], rax
cmp rax, qword [0x1402aaec8]
je 0x1401529ff
lea rcx, [rdi + 0x1c]
mov qword [rsp + 0x98], r15
mov dword [rsp + 0xa0], 0x53215531
cmp r13d, 0x1fffffff
mov qword [rsp + 0x68], r15
ja 0x140152e28
mov eax, ebp
mov dword [rsp + 0xa4], eax
mov dword [rsp + 0xa8], 0
mov r15, rcx
and r15, r12
cmp r15, qword [0x1402aaec8]
mov qword [rsp + 0x48], rcx
je 0x140152e30
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0x88], rsi
mov rsi, qword [r14 + 8]
mov rax, rsi
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152a0c
lea eax, [r13*4]
mov qword [rsp + 0x78], rsi
mov dword [rsp + 0x80], 0x53215531
cmp r13d, 0x1fffffff
ja 0x140152e3f
mov dword [rsp + 0x84], ebp
mov dword [rsp + 0x88], eax
cmp r15, qword [0x1402aaec8]
je 0x140152e47
mov qword [rsp + 0x90], rcx
mov eax, dword [rsp + 0x50]
cmp eax, 3
ja case.default.0x140152702
lea r13, [rdi + 0x50]
mov eax, eax
lea rcx, [0x140282194]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov ecx, 0x28
call fcn.140184834
mov r14, rax
mov qword [rax + 8], r13
mov dword [rax + 0x10], 0
lea rax, [0x140271420]
mov qword [r14], rax
xorps xmm6, xmm6
movups xmmword [r14 + 0x18], xmm6
mov rcx, r13
call fcn.1401ab6c0
lea rbp, [rsp + 0xd0]
movups xmmword [rbp + 0x34], xmm6
movups xmmword [rbp + 0x28], xmm6
movups xmmword [rbp + 0x18], xmm6
movups xmmword [rbp + 8], xmm6
movups xmmword [rbp - 8], xmm6
movaps xmm0, xmmword [0x14027a710]
movups xmmword [rbp - 0x18], xmm0
test rax, rax
je 0x1401527a0
mov rsi, rax
lea eax, [rax*8]
mov rcx, rsi
shr rcx, 0x1d
mov dword [rsp + 0xcc], ecx
mov dword [rsp + 0xc8], eax
mov r8, rsi
cmp rsi, 0x40
jae 0x140152c4b
mov dword [rsp + 0x110], esi
mov rcx, rbp
mov rdx, r13
call fcn.140188f50
mov qword [rsp + 0x50], rbx
lea rsi, [rdi + 0x20]
mov eax, dword [rsp + 0x110]
lea rcx, [rax + 1]
mov edi, dword [rsp + 0xc8]
mov ebx, dword [rsp + 0xcc]
mov byte [rsp + rax + 0xd0], 0x80
cmp rax, 0x38
jae 0x140152c7b
cmp rcx, 0x38
je 0x1401527ed
mov r8d, 0x38
sub r8, rcx
add rcx, rbp
xor edx, edx
call fcn.140189600
lea r13, [rsp + 0xb8]
mov dword [r13 + 0x50], edi
mov dword [r13 + 0x54], ebx
mov r8d, 1
mov rcx, r13
mov rdx, rbp
call fcn.140080f40
mov rdi, qword [r13]
mov ecx, 0x48
call fcn.140184834
mov r13, rax
mov qword [rax + 8], 0
mov rax, rsi
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152e7f
mov qword [r13 + 0x10], rsi
cmp qword [rsi], 0
mov rbx, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x48]
jne 0x140152854
bswap rdi
mov qword [rsi], rdi
mov qword [r13 + 0x18], 0
mov rbp, rbx
and rbp, r12
cmp rbp, qword [0x1402aaec8]
jne 0x140152878
mov rcx, rbx
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
mov qword [r13 + 0x20], rbx
mov rax, qword [rbx + 8]
sub rax, qword [rbx]
cmp rax, 4
mov rdi, qword [rsp + 0x58]
je 0x140152e8c
lea rsi, [rsp + 0xa0]
lea rax, [0x140270a20]
mov qword [r13], rax
mov rax, qword [rsp + 0x70]
cmp rax, qword [0x1402aaec8]
je 0x140152b41
mov rax, qword [rsp + 0x68]
mov qword [r13 + 0x28], rax
mov eax, dword [rsi + 8]
mov dword [r13 + 0x38], eax
mov rax, qword [rsi]
mov qword [r13 + 0x30], rax
cmp r15, qword [0x1402aaec8]
je 0x140152e8f
lea rsi, [r14 + 0x18]
mov qword [r13 + 0x40], rcx
mov eax, dword [rdi + 0x34]
cmp eax, 0xffffffff
je 0x140152cf5
lea r15, [rdi + 0x38]
mov rcx, qword [rsi]
mov qword [rsi], r13
test rcx, rcx
jne 0x140152e9e
mov rax, qword [r13 + 0x10]
mov rdi, qword [rax]
mov ecx, 0x48
call fcn.140184834
mov rsi, rax
mov qword [rax + 8], 0
mov rax, r15
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152eb4
mov qword [rsi + 0x10], r15
cmp qword [r15], 0
mov r13, qword [rsp + 0x40]
jne 0x140152943
mov qword [r15], rdi
mov qword [rsi + 0x18], 0
cmp rbp, qword [0x1402aaec8]
jne 0x14015295c
mov rcx, rbx
call fcn.1400da330
mov qword [rsi + 0x20], rbx
mov rax, qword [rbx + 8]
sub rax, qword [rbx]
cmp rax, 4
je 0x140152ec1
lea rdi, [rsp + 0x80]
lea rax, [0x140270a20]
mov qword [rsi], rax
mov rbx, qword [rdi - 8]
mov rax, rbx
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152b55
mov qword [rsi + 0x28], rbx
mov eax, dword [rdi + 8]
mov dword [rsi + 0x38], eax
mov rax, qword [rdi]
mov qword [rsi + 0x30], rax
mov rbx, qword [rsp + 0x90]
mov rax, rbx
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152ec4
mov qword [rsi + 0x40], rbx
mov rax, qword [rsp + 0x58]
mov eax, dword [rax + 0x4c]
cmp eax, 0xffffffff
je 0x140152d1c
mov rcx, qword [r14 + 0x20]
mov qword [r14 + 0x20], rsi
test rcx, rcx
je 0x140152a7c
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401eda70.0]
jmp 0x140152a7c
mov rcx, r15
call fcn.1400da330
jmp 0x14015261d
mov rcx, rsi
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
jmp 0x140152699
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.140184834
mov r14, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x78]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x98]
mov rcx, r14
mov rdx, r13
mov r8, rbx
call fcn.1400fd970
lea rax, [0x1402714e0]
mov qword [r14], rax
lea rax, [r14 + 0x30]
xorps xmm0, xmm0
movups xmmword [r14 + 0x30], xmm0
mov qword [r14 + 0x28], rax
mov r13, qword [rsp + 0x40]
test r14, r14
je 0x140152e63
mov eax, dword [rsp + 0x64]
lock or dword [r14 + 0x10], eax
mov qword [r13], r14
mov rcx, qword [rsp + 0x90]
mov rax, rcx
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152e6b
mov qword [rsp + 0x90], 0
mov rcx, qword [rsp + 0x78]
mov rax, rcx
and rax, r12
cmp rax, qword [0x1402aaec8]
jne 0x140152ad2
call fcn.1400da480
mov rcx, qword [rsp + 0xb0]
mov rax, rcx
and rax, r12
cmp rax, qword [0x1402aaec8]
je 0x140152e75
mov qword [rsp + 0xb0], 0
mov rcx, qword [rsp + 0x98]
and r12, rcx
cmp r12, qword [0x1402aaec8]
jne 0x140152b12
call fcn.1400da480
mov rcx, qword [rsp + 0x118]
xor rcx, rsp
call fcn.1401874c0
mov rax, r13
movaps xmm6, xmmword [rsp + 0x120]
add rsp, 0x138
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rsp + 0x68]
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
jmp 0x1401528b7
mov rcx, rbx
call fcn.1400da330
jmp 0x14015299a
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x40
call fcn.140184834
mov r14, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x78]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x98]
mov rcx, r14
mov rdx, r13
mov r8, rbx
call fcn.1400fd970
lea rax, [r14 + 0x30]
xorps xmm0, xmm0
movups xmmword [r14 + 0x30], xmm0
mov qword [r14 + 0x28], rax
lea rax, [0x1402715a0]
mov qword [r14], rax
jmp 0x140152a77
lea r9d, [rdx + 0x10]
xor eax, eax
cmp r9d, 0x50
jb 0x140152c3d
mov ecx, edx
and ecx, 7
jne 0x140152c3d
mov rcx, qword [r14 + 8]
mov r8d, dword [rcx + 0x14]
cmp r8d, r9d
jb 0x140152ed6
mov r9, qword [rcx + 8]
mov eax, dword [r9 + rdx + 4]
cmp eax, 0xc8799269
jne 0x140152ed6
add r9, rdx
mov eax, dword [r9]
cmp eax, 0x10
jb 0x140152ed6
xor eax, eax
mov r10d, dword [r9]
add r10d, edx
jb 0x140152c3d
cmp r10d, r8d
ja 0x140152c3d
test r9, r9
je 0x140152c3d
mov eax, dword [r9]
cmp rax, 0x11
jb 0x140152ed1
add edx, eax
jb 0x140152ed1
cmp edx, r8d
ja 0x140152ed1
add rax, 0xfffffffffffffff0
cmp rax, rbp
jae 0x1401525e5
jmp 0x140152d97
shr r8, 6
lea rcx, [rsp + 0xb8]
mov rdx, r13
call fcn.140080f40
mov r8, rsi
and r8, 0x3f
je 0x1401527a0
and rsi, 0xffffffffffffffc0
add r13, rsi
mov esi, r8d
jmp 0x14015278e
cmp eax, 0x3f
je 0x140152c93
mov r8d, 0x3f
sub r8, rax
add rcx, rbp
xor edx, edx
call fcn.140189600
lea rcx, [rsp + 0xb8]
mov r8d, 1
mov rdx, rbp
call fcn.140080f40
xor ecx, ecx
jmp 0x1401527da
mov r12, r8
lea rdi, [r8 + 0x38]
lea rsi, [r8 + 0x20]
lea rbx, [r8 + 0x50]
mov ecx, 0x38
call fcn.140184834
mov r15, rax
mov qword [rsp + 0x20], rdi
mov rcx, rax
mov rdx, r14
mov r8, rbx
mov r9, rsi
call fcn.140027f80
mov qword [r13], r15
mov eax, dword [r12 + 4]
lock or dword [r15 + 0x10], eax
jmp 0x140152b12
mov rax, qword [r13 + 0x40]
mov eax, dword [rax]
test eax, eax
je 0x1401528ef
mov rcx, r13
add rcx, 0x28
call fcn.1400015b0
mov qword [r13 + 0x18], rax
mov rax, qword [r13 + 0x18]
jmp 0x1401528ef
mov rax, qword [rsi + 0x40]
mov eax, dword [rax]
test eax, eax
je 0x1401529db
mov rcx, rsi
add rcx, 0x28
call fcn.1400015b0
mov qword [rsi + 0x18], rax
mov rax, qword [rsi + 0x18]
jmp 0x1401529db
lea rsi, [rdi + 0x38]
add rdi, 0x20
mov ecx, 0x28
call fcn.140184834
mov r14, rax
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0x78]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x98]
mov rcx, r14
mov rdx, r13
mov r8, rbx
call fcn.1400fd970
lea rax, [0x140271660]
jmp 0x140152bb8
test rbx, rbx
jne 0x140152edd
mov r13, qword [rsp + 0x40]
mov qword [r13], 0
jmp 0x140152b12
mov rdx, rbx
call fcn.1400fe240
jmp 0x1401525cf
xor edx, edx
jmp 0x1401523ab
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, 0x5b5
call fcn.1401c1b10
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, 0x25
call fcn.1401c1b10
call fcn.1401c44e0
xor edx, edx
jmp 0x140152437
xor eax, eax
jmp 0x14015259c
int3
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
jmp 0x140152672
int3
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
jmp 0x1401526d9
xor r14d, r14d
mov r13, qword [rsp + 0x40]
jmp 0x140152a8e
xor r14d, r14d
jmp 0x140152a8e
call fcn.1400da480
jmp 0x140152aad
call fcn.1400da480
jmp 0x140152aed
mov rcx, rsi
call fcn.1400da330
jmp 0x14015283a
int3
call fcn.1400da330
mov rcx, qword [rsp + 0x48]
jmp 0x1401528db
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x1401eda70.0]
jmp 0x140152902
mov rcx, r15
call fcn.1400da330
jmp 0x140152931
int3
mov rcx, rbx
call fcn.1400da330
jmp 0x1401529c6
call fcn.1401c44e0
xor eax, eax
jmp 0x140152c3d
mov rcx, qword [rbx]
test rcx, rcx
je 0x140152eee
mov qword [rbx + 8], rcx
call fcn.14018482c
mov rcx, rbx
call fcn.14018482c
jmp 0x140152d97