Function at 0x140166950
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 0x140166db9
mov rsi, rdx
mov r8d, ecx
cmp rdi, 0x40
jb 0x140166985
cmp dword [0x1402b7978], 0
jne 0x140166a6e
not r8d
cmp rdi, 0x2f
jae 0x140166aa9
cmp rdi, 8
jb 0x140166a2a
lea rax, [0x14027d470]
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
ja 0x1401669a3
test rdi, rdi
je 0x140166a69
xor eax, eax
lea rcx, [0x14027d470]
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 0x140166a38
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 ebx, r8d
jmp 0x140166a54
mov rbx, rdi
and rbx, 0xfffffffffffffff0
not r8d
mov rcx, rsi
mov rdx, rbx
call fcn.140167190
mov r8d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, rbx
and rdi, 0xf
je 0x140166aa1
add rsi, rax
jmp 0x140166992
not r8d
mov ebx, r8d
jmp 0x140166a56
test sil, 7
jne 0x140166de5
movabs rcx, 0xcccccccccccccccd
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
xor ecx, ecx
dec rdx
jne 0x140166e2b
xor ebx, ebx
xor r11d, r11d
xor r10d, r10d
mov r8d, r8d
xor r8, qword [rsi]
mov r14, r8
shr r14, 8
mov edx, 0xff
and r8, rdx
lea r9, [0x14027d470]
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
xor r14d, dword [r9 + r8*4]
xor rcx, qword [rsi + 8]
xor rcx, r14
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
xor r8d, dword [r9 + rcx*4]
xor rbx, qword [rsi + 0x10]
xor rbx, r8
mov rcx, rbx
shr rcx, 8
and rbx, rdx
mov r8d, dword [r9 + rbx*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
xor ecx, dword [r9 + r8*4]
sub rdi, rax
xor r11, qword [rsi + 0x18]
xor r11, rcx
mov rax, r11
shr rax, 8
and r11, rdx
mov ecx, dword [r9 + r11*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
xor eax, dword [r9 + rcx*4]
xor r10, qword [rsi + 0x20]
xor r10, rax
mov rax, r10
shr rax, 8
and r10, rdx
mov ecx, dword [r9 + r10*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov r8, rcx
shr r8, 8
and rcx, rdx
xor r8d, dword [r9 + rcx*4]
add rsi, 0x28
jmp 0x140166992
xor ebx, ebx
test rdi, rdi
jne 0x140166a56
lea rcx, [0x1402b7980]
lea rdx, [0x1400c0e60]
xor ebx, ebx
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
jmp 0x140166a56
lea rax, [rsi + 1]
lea rcx, [0x14027d470]
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 0x140166ab3
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
je 0x140166ab3
jmp 0x140166df0
xor r13d, r13d
xor r15d, r15d
xor ebp, ebp
mov r9, rsi
mov r12d, r8d
mov r8, r9
mov qword [rsp + 0x60], r9
mov r9, qword [r9]
mov qword [rsp + 0x28], r9
mov r10, qword [r8 + 8]
mov qword [rsp + 0x30], r10
xor r12, r9
mov r9d, ebp
xor r9, r10
mov r11d, r15d
mov r10, qword [r8 + 0x10]
mov qword [rsp + 0x58], r10
xor r11, r10
mov ebx, r13d
mov r10, qword [r8 + 0x18]
mov qword [rsp + 0x48], r10
xor rbx, r10
mov r14d, ecx
mov rcx, qword [r8 + 0x20]
mov qword [rsp + 0x50], rcx
xor r14, rcx
mov r8, r12
mov qword [rsp + 0x40], r12
mov r15, r12
mov r10d, 0xff
and r15, r10
mov r12, r9
and r12, r10
mov r13, r11
mov qword [rsp + 0x38], r11
and r13, r10
mov rcx, rbx
and rcx, r10
shr r8d, 8
mov ebp, 0xff
and r8d, ebp
lea r10, [0x14027d870]
mov r8d, dword [r10 + r8*4 + 0x400]
xor r8d, dword [r10 + r15*4]
mov r15d, r9d
shr r15d, 8
and r15d, ebp
mov ebp, dword [r10 + r15*4 + 0x400]
xor ebp, dword [r10 + r12*4]
mov r15d, r11d
shr r15d, 8
mov r12d, 0xff
and r15d, r12d
mov r15d, dword [r10 + r15*4 + 0x400]
xor r15d, dword [r10 + r13*4]
mov r12d, ebx
shr r12d, 8
mov r13d, 0xff
and r12d, r13d
mov r13d, dword [r10 + r12*4 + 0x400]
xor r13d, dword [r10 + rcx*4]
mov r12, r14
mov ecx, 0xff
and r12, rcx
mov ecx, r14d
shr ecx, 8
mov r11d, 0xff
and ecx, r11d
mov ecx, dword [r10 + rcx*4 + 0x400]
xor ecx, dword [r10 + r12*4]
mov r12, qword [rsp + 0x40]
shr r12d, 0x10
and r12d, r11d
xor r8d, dword [r10 + r12*4 + 0x800]
mov r12d, r9d
shr r12d, 0x10
and r12d, r11d
xor ebp, dword [r10 + r12*4 + 0x800]
mov r12, qword [rsp + 0x38]
shr r12d, 0x10
and r12d, r11d
xor r15d, dword [r10 + r12*4 + 0x800]
mov r12d, ebx
shr r12d, 0x10
and r12d, r11d
xor r13d, dword [r10 + r12*4 + 0x800]
mov r12d, r14d
shr r12d, 0x10
and r12d, r11d
xor ecx, dword [r10 + r12*4 + 0x800]
mov r12, qword [rsp + 0x40]
shr r12d, 0x18
xor r8d, dword [r10 + r12*4 + 0xc00]
shr r9d, 0x18
xor ebp, dword [r10 + r9*4 + 0xc00]
mov r9, qword [rsp + 0x38]
shr r9d, 0x18
xor r15d, dword [r10 + r9*4 + 0xc00]
shr ebx, 0x18
xor r13d, dword [r10 + rbx*4 + 0xc00]
shr r14d, 0x18
xor ecx, dword [r10 + r14*4 + 0xc00]
mov r14, qword [rsp + 0x28]
mov r9, r14
shr r9, 0x1e
mov r11d, 0x3fc
and r9, r11
xor r8d, dword [r9 + r10 + 0x1000]
mov rbx, qword [rsp + 0x30]
mov r9, rbx
shr r9, 0x1e
and r9, r11
xor ebp, dword [r9 + r10 + 0x1000]
mov r12, qword [rsp + 0x58]
mov r9, r12
shr r9, 0x1e
and r9, r11
xor r15d, dword [r9 + r10 + 0x1000]
mov r9, qword [rsp + 0x48]
shr r9, 0x1e
and r9, r11
xor r13d, dword [r9 + r10 + 0x1000]
mov r9, qword [rsp + 0x50]
shr r9, 0x1e
and r9, r11
xor ecx, dword [r9 + r10 + 0x1000]
mov r9, r14
shr r9, 0x26
and r9, r11
xor r8d, dword [r9 + r10 + 0x1400]
mov r9, rbx
shr r9, 0x26
and r9, r11
xor ebp, dword [r9 + r10 + 0x1400]
mov r9, r12
shr r9, 0x26
and r9, r11
xor r15d, dword [r9 + r10 + 0x1400]
mov rbx, qword [rsp + 0x48]
mov r9, rbx
shr r9, 0x26
and r9, r11
xor r13d, dword [r9 + r10 + 0x1400]
mov r14, qword [rsp + 0x50]
mov r9, r14
shr r9, 0x26
and r9, r11
xor ecx, dword [r9 + r10 + 0x1400]
mov r9, qword [rsp + 0x28]
shr r9, 0x2e
and r9, r11
xor r8d, dword [r9 + r10 + 0x1800]
mov r9, qword [rsp + 0x30]
shr r9, 0x2e
and r9, r11
xor ebp, dword [r9 + r10 + 0x1800]
mov r9, r12
shr r9, 0x2e
and r9, r11
xor r15d, dword [r9 + r10 + 0x1800]
mov r9, rbx
shr r9, 0x2e
and r9, r11
xor r13d, dword [r9 + r10 + 0x1800]
mov r9, r14
shr r9, 0x2e
and r9, r11
xor ecx, dword [r9 + r10 + 0x1800]
mov r9, qword [rsp + 0x28]
shr r9, 0x38
xor r8d, dword [r10 + r9*4 + 0x1c00]
mov r9, qword [rsp + 0x30]
shr r9, 0x38
xor ebp, dword [r10 + r9*4 + 0x1c00]
shr r12, 0x38
xor r15d, dword [r10 + r12*4 + 0x1c00]
shr rbx, 0x38
xor r13d, dword [r10 + rbx*4 + 0x1c00]
shr r14, 0x38
xor ecx, dword [r10 + r14*4 + 0x1c00]
mov r9, qword [rsp + 0x60]
add r9, 0x28
dec rdx
jne 0x140166e36
add rsi, rax
add rsi, 0xffffffffffffffd8
mov r10d, ecx
mov ecx, ebp
mov ebx, r15d
mov r11d, r13d
jmp 0x140166ae6