Function at 0x140040250
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, 0x68
mov rdi, r8
test rdx, rdx
je 0x14003fb2a
mov rsi, rdx
mov r8d, ecx
cmp rdi, 0x40
jb 0x14003fa01
cmp dword [0x140188cc8], 0
jne 0x14003fa57
not r8d
cmp rdi, 0x2f
jae 0x14003fb4b
cmp rdi, 8
jae 0x14003fa8f
test rdi, rdi
je 0x14003fb22
xor eax, eax
lea rcx, [0x1401517d0]
mov ebx, r8d
xor r8b, byte [rsi + rax]
shr ebx, 8
movzx edx, r8b
xor ebx, dword [rcx + rdx*4]
inc rax
mov r8d, ebx
cmp rdi, rax
jne 0x14003fa26
not ebx
mov eax, ebx
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rbx, rdi
and rbx, 0xfffffffffffffff0
not r8d
mov rcx, rsi
mov rdx, rbx
call fcn.140069c00
mov r8d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, rbx
and rdi, 0xf
je 0x14003fa87
add rsi, rax
jmp 0x14003fa0e
not r8d
mov ebx, r8d
jmp 0x14003fa44
lea rax, [0x1401517d0]
mov ecx, r8d
xor r8b, byte [rsi]
shr ecx, 8
movzx edx, r8b
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 1]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 2]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 3]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 4]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
add rdi, 0xfffffffffffffff8
mov edx, ecx
xor cl, byte [rsi + 5]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
shr ecx, 8
xor dl, byte [rsi + 6]
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov r8d, ecx
shr r8d, 8
xor cl, byte [rsi + 7]
add rsi, 8
movzx ecx, cl
xor r8d, dword [rax + rcx*4]
cmp rdi, 7
jbe 0x14003fa14
jmp 0x14003fa96
mov ebx, r8d
jmp 0x14003fa42
xor ebx, ebx
test rdi, rdi
jne 0x14003fa44
call fcn.1400481f0
jmp 0x14003fa44
xor eax, eax
xor r9d, r9d
xor edx, edx
jmp 0x14003fef6
test sil, 7
je 0x14003fb8d
lea rax, [rsi + 1]
lea rcx, [0x1401517d0]
mov rdx, rdi
dec rdi
mov r9d, r8d
shr r9d, 8
xor r8b, byte [rsi]
inc rsi
movzx r10d, r8b
mov r8d, r9d
xor r8d, dword [rcx + r10*4]
cmp rdx, 1
je 0x14003fb8d
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
jne 0x14003fb5c
movabs rcx, 0xcccccccccccccccd
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
mov qword [rsp + 0x30], rax
xor r14d, r14d
mov rax, rdx
dec rax
mov qword [rsp + 0x38], rax
je 0x14003fb3f
lea rax, [rdx + rdx*4]
lea rax, [rax*8 - 0x28]
mov qword [rsp + 0x28], rax
lea r10, [0x140151bd0]
xor r12d, r12d
xor r13d, r13d
xor ebp, ebp
mov rax, rsi
mov qword [rsp + 0x60], rax
mov rdx, qword [rax]
mov qword [rsp + 0x40], rdx
mov rcx, qword [rax + 8]
mov qword [rsp + 0x20], rcx
xor r8d, edx
xor ebp, ecx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x48], rcx
xor r13d, ecx
mov rcx, qword [rax + 0x18]
mov qword [rsp + 0x50], rcx
xor r12d, ecx
mov rax, qword [rax + 0x20]
mov qword [rsp + 0x58], rax
xor r14d, eax
mov ecx, r8d
mov edx, 0xff
and ecx, edx
mov r15d, ebp
and r15d, edx
mov eax, r13d
and eax, edx
mov ebx, r12d
and ebx, edx
mov r9d, 0xff
mov edx, r8d
shr edx, 8
and edx, r9d
mov edx, dword [r10 + rdx*4 + 0x400]
xor edx, dword [r10 + rcx*4]
mov ecx, ebp
shr ecx, 8
and ecx, r9d
mov r11d, dword [r10 + rcx*4 + 0x400]
xor r11d, dword [r10 + r15*4]
mov ecx, r13d
shr ecx, 8
and ecx, r9d
mov ecx, dword [r10 + rcx*4 + 0x400]
xor ecx, dword [r10 + rax*4]
mov eax, r12d
shr eax, 8
and eax, r9d
mov eax, dword [r10 + rax*4 + 0x400]
xor eax, dword [r10 + rbx*4]
mov r15d, r14d
and r15d, r9d
mov ebx, r14d
shr ebx, 8
and ebx, r9d
mov ebx, dword [r10 + rbx*4 + 0x400]
xor ebx, dword [r10 + r15*4]
mov r15d, r8d
shr r15d, 0xe
mov r9d, 0x3fc
and r15d, r9d
xor edx, dword [r15 + r10 + 0x800]
mov r15d, ebp
shr r15d, 0xe
and r15d, r9d
xor r11d, dword [r15 + r10 + 0x800]
mov r15d, r13d
shr r15d, 0xe
and r15d, r9d
xor ecx, dword [r15 + r10 + 0x800]
mov r15d, r12d
shr r15d, 0xe
and r15d, r9d
xor eax, dword [r15 + r10 + 0x800]
mov r15d, r14d
shr r15d, 0xe
and r15d, r9d
xor ebx, dword [r15 + r10 + 0x800]
shr r8d, 0x18
xor edx, dword [r10 + r8*4 + 0xc00]
shr ebp, 0x18
xor r11d, dword [r10 + rbp*4 + 0xc00]
shr r13d, 0x18
xor ecx, dword [r10 + r13*4 + 0xc00]
shr r12d, 0x18
xor eax, dword [r10 + r12*4 + 0xc00]
shr r14d, 0x18
xor ebx, dword [r10 + r14*4 + 0xc00]
mov rbp, qword [rsp + 0x40]
mov r8, rbp
shr r8, 0x20
mov r12d, 0xff
and r8d, r12d
xor edx, dword [r10 + r8*4 + 0x1000]
mov r9, qword [rsp + 0x20]
mov r8, r9
shr r8, 0x20
and r8d, r12d
xor r11d, dword [r10 + r8*4 + 0x1000]
mov r14, qword [rsp + 0x48]
mov r8, r14
shr r8, 0x20
and r8d, r12d
xor ecx, dword [r10 + r8*4 + 0x1000]
mov r15, qword [rsp + 0x50]
mov r8, r15
shr r8, 0x20
and r8d, r12d
xor eax, dword [r10 + r8*4 + 0x1000]
mov r13, qword [rsp + 0x58]
mov r8, r13
shr r8, 0x20
and r8d, r12d
xor ebx, dword [r10 + r8*4 + 0x1000]
mov r8, rbp
shr r8, 0x28
and r8d, r12d
xor edx, dword [r10 + r8*4 + 0x1400]
mov r8, r9
shr r8, 0x28
and r8d, r12d
xor r11d, dword [r10 + r8*4 + 0x1400]
mov r8, r14
shr r8, 0x28
and r8d, r12d
xor ecx, dword [r10 + r8*4 + 0x1400]
mov r8, r15
shr r8, 0x28
and r8d, r12d
xor eax, dword [r10 + r8*4 + 0x1400]
mov r8, r13
mov r9, r13
shr r8, 0x28
and r8d, r12d
xor ebx, dword [r10 + r8*4 + 0x1400]
mov r8, rbp
shr r8, 0x30
and r8d, r12d
xor edx, dword [r10 + r8*4 + 0x1800]
mov r13, qword [rsp + 0x20]
mov r8, r13
shr r8, 0x30
and r8d, r12d
xor r11d, dword [r10 + r8*4 + 0x1800]
mov r8, r14
shr r8, 0x30
and r8d, r12d
xor ecx, dword [r10 + r8*4 + 0x1800]
mov r8, r15
shr r8, 0x30
and r8d, r12d
xor eax, dword [r10 + r8*4 + 0x1800]
mov r8, r9
shr r8, 0x30
and r8d, r12d
xor ebx, dword [r10 + r8*4 + 0x1800]
shr rbp, 0x38
mov r8d, edx
xor r8d, dword [r10 + rbp*4 + 0x1c00]
shr r13, 0x38
mov ebp, r11d
xor ebp, dword [r10 + r13*4 + 0x1c00]
shr r14, 0x38
mov r13d, ecx
xor r13d, dword [r10 + r14*4 + 0x1c00]
shr r15, 0x38
mov r12d, eax
xor r12d, dword [r10 + r15*4 + 0x1c00]
shr r9, 0x38
mov r14d, ebx
xor r14d, dword [r10 + r9*4 + 0x1c00]
mov rax, qword [rsp + 0x60]
add rax, 0x28
dec qword [rsp + 0x38]
jne 0x14003fbe9
add rsi, qword [rsp + 0x28]
mov edx, r14d
mov r14d, ebp
mov eax, r13d
mov r9d, r12d
mov r8d, r8d
xor r8, qword [rsi]
mov r10, r8
shr r10, 8
and r8d, 0xff
lea rcx, [0x1401517d0]
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
xor r10d, dword [rcx + r8*4]
xor r10, r14
xor r10, qword [rsi + 8]
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
xor r8d, dword [rcx + r10*4]
xor r8, rax
xor r8, qword [rsi + 0x10]
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
xor eax, dword [rcx + r8*4]
sub rdi, qword [rsp + 0x30]
xor rax, r9
xor rax, qword [rsi + 0x18]
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, r8
mov r8, rax
shr r8, 8
and eax, 0xff
xor r8d, dword [rcx + rax*4]
xor r8, rdx
xor r8, qword [rsi + 0x20]
mov rax, r8
shr rax, 8
and r8d, 0xff
mov edx, dword [rcx + r8*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov rax, rdx
shr rax, 8
and edx, 0xff
mov edx, dword [rcx + rdx*4]
xor rdx, rax
mov r8, rdx
shr r8, 8
and edx, 0xff
xor r8d, dword [rcx + rdx*4]
add rsi, 0x28
jmp 0x14003fa0e
sub rsp, 0x28
test rdx, rdx
je 0x140040265
mov r8d, r8d
add rsp, 0x28
jmp 0x14003f9d0
test r8d, r8d
jne 0x14004026f
call fcn.1400481f0
xor eax, eax
add rsp, 0x28
ret