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

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x28
mov r12, r8
test rdx, rdx
jne 0x140109e9a
test r12, r12
jne 0x14010a1aa
lea rcx, [0x140229f60]
lea rdx, [0x1400a5720]
xor edi, edi
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
mov eax, edi
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
mov r15, rdx
mov edi, ecx
cmp r12, 0x40
jb 0x140109eb2
cmp dword [0x140229f58], 0
jne 0x140109f6a
not edi
test r12, r12
je 0x140109efc
mov eax, r15d
and eax, 3
test rax, rax
je 0x140109efc
lea rax, [r15 + 1]
lea r8, [0x1401f9cb0]
mov rdx, r12
movzx ebx, byte [r15]
inc r15
movzx ecx, dil
xor ecx, ebx
shr edi, 8
xor edi, dword [r8 + rcx*4]
dec r12
cmp rdx, 1
je 0x140109efc
mov ecx, eax
and ecx, 3
inc rax
test rcx, rcx
jne 0x140109ecf
cmp r12, 0x20
jae 0x140109fc7
cmp r12, 4
jb 0x140109f5a
mov ecx, 0xff
lea rdx, [0x1401f9cb0]
xor edi, dword [r15]
add r15, 4
mov ebx, edi
and ebx, ecx
mov eax, edi
shr eax, 8
and eax, ecx
mov eax, dword [rdx + rax*4 + 0x800]
xor eax, dword [rdx + rbx*4 + 0xc00]
mov esi, edi
shr esi, 0x10
and esi, ecx
xor eax, dword [rdx + rsi*4 + 0x400]
shr edi, 0x18
xor eax, dword [rdx + rdi*4]
add r12, 0xfffffffffffffffc
mov edi, eax
cmp r12, 3
ja 0x140109f18
jmp 0x140109f5c
mov eax, edi
test r12, r12
jne 0x140109fa4
not eax
mov edi, eax
jmp 0x140109e8a
mov r14, r12
and r14, 0xfffffffffffffff0
not edi
mov rcx, r15
mov rdx, r14
mov r8d, edi
call fcn.14010a1c0
mov edi, eax
xor eax, eax
mov rcx, r12
and rcx, 0xf
cmovne rax, r14
not edi
and r12, 0xf
je 0x140109e8a
add r15, rax
jmp 0x140109eb2
xor ecx, ecx
lea rdx, [0x1401f9cb0]
movzx ebx, byte [r15 + rcx]
movzx edi, al
xor edi, ebx
shr eax, 8
xor eax, dword [rdx + rdi*4]
inc rcx
cmp r12, rcx
je 0x140109f61
jmp 0x140109fad
mov r8d, 0xff
lea r9, [0x1401f9cb0]
xor edi, dword [r15]
mov eax, edi
and eax, r8d
mov edx, edi
shr edx, 8
and edx, r8d
mov ecx, dword [r9 + rdx*4 + 0x800]
xor ecx, dword [r9 + rax*4 + 0xc00]
mov eax, edi
shr eax, 0x10
and eax, r8d
xor ecx, dword [r9 + rax*4 + 0x400]
shr edi, 0x18
xor ecx, dword [r9 + rdi*4]
xor ecx, dword [r15 + 4]
mov eax, ecx
and eax, r8d
mov edx, ecx
shr edx, 8
and edx, r8d
mov ebx, dword [r9 + rdx*4 + 0x800]
xor ebx, dword [r9 + rax*4 + 0xc00]
mov eax, ecx
shr eax, 0x10
and eax, r8d
xor ebx, dword [r9 + rax*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [r9 + rcx*4]
xor ebx, dword [r15 + 8]
mov eax, ebx
and eax, r8d
mov ecx, ebx
shr ecx, 8
and ecx, r8d
mov edx, dword [r9 + rcx*4 + 0x800]
xor edx, dword [r9 + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
and eax, r8d
xor edx, dword [r9 + rax*4 + 0x400]
shr ebx, 0x18
xor edx, dword [r9 + rbx*4]
xor edx, dword [r15 + 0xc]
mov eax, edx
and eax, r8d
mov ecx, edx
shr ecx, 8
and ecx, r8d
mov ebx, dword [r9 + rcx*4 + 0x800]
xor ebx, dword [r9 + rax*4 + 0xc00]
mov eax, edx
shr eax, 0x10
and eax, r8d
xor ebx, dword [r9 + rax*4 + 0x400]
shr edx, 0x18
xor ebx, dword [r9 + rdx*4]
xor ebx, dword [r15 + 0x10]
mov eax, ebx
and eax, r8d
mov ecx, ebx
shr ecx, 8
and ecx, r8d
mov edx, dword [r9 + rcx*4 + 0x800]
xor edx, dword [r9 + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
and eax, r8d
xor edx, dword [r9 + rax*4 + 0x400]
shr ebx, 0x18
xor edx, dword [r9 + rbx*4]
xor edx, dword [r15 + 0x14]
mov eax, edx
and eax, r8d
mov ecx, edx
shr ecx, 8
and ecx, r8d
mov ebx, dword [r9 + rcx*4 + 0x800]
xor ebx, dword [r9 + rax*4 + 0xc00]
mov eax, edx
shr eax, 0x10
and eax, r8d
xor ebx, dword [r9 + rax*4 + 0x400]
shr edx, 0x18
xor ebx, dword [r9 + rdx*4]
xor ebx, dword [r15 + 0x18]
mov eax, ebx
and eax, r8d
mov ecx, ebx
shr ecx, 8
and ecx, r8d
mov edx, dword [r9 + rcx*4 + 0x800]
xor edx, dword [r9 + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
and eax, r8d
xor edx, dword [r9 + rax*4 + 0x400]
shr ebx, 0x18
xor edx, dword [r9 + rbx*4]
xor edx, dword [r15 + 0x1c]
add r15, 0x20
mov eax, edx
and eax, r8d
mov ecx, edx
shr ecx, 8
and ecx, r8d
mov edi, dword [r9 + rcx*4 + 0x800]
xor edi, dword [r9 + rax*4 + 0xc00]
mov eax, edx
shr eax, 0x10
and eax, r8d
xor edi, dword [r9 + rax*4 + 0x400]
shr edx, 0x18
xor edi, dword [r9 + rdx*4]
add r12, 0xffffffffffffffe0
cmp r12, 0x1f
jbe 0x140109f06
jmp 0x140109fd4
xor edi, edi
jmp 0x140109e8a