Function at 0x140178510
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 0x140178a0d
mov rsi, rdx
mov r8d, ecx
cmp rdi, 0x40
jb 0x140178545
cmp dword [0x1402c86c4], 0
jne 0x14017862d
not r8d
cmp rdi, 0x2f
jae 0x140178668
cmp rdi, 8
jb 0x1401785ea
lea rax, [0x140282ff0]
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 0x140178563
test rdi, rdi
je 0x140178a05
xor eax, eax
lea rcx, [0x140282ff0]
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 0x1401785fc
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.140178e30
mov r8d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, rbx
and rdi, 0xf
je 0x140178660
add rsi, rax
jmp 0x140178552
not r8d
mov ebx, r8d
jmp 0x14017861a
test sil, 7
jne 0x140178a39
movabs rcx, 0xcccccccccccccccd
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
xor r11d, r11d
dec rdx
jne 0x140178a7f
xor r10d, r10d
xor r9d, r9d
xor edx, edx
mov r8d, r8d
xor r8, qword [rsi]
mov rbx, r8
shr rbx, 8
and r8d, 0xff
lea rcx, [0x140282ff0]
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rbx
mov rbx, r8
shr rbx, 8
and r8d, 0xff
xor ebx, dword [rcx + r8*4]
xor r11, qword [rsi + 8]
xor r11, rbx
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
xor r8d, dword [rcx + r11*4]
xor r10, qword [rsi + 0x10]
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
mov r10d, dword [rcx + r10*4]
xor r10, r8
mov r8, r10
shr r8, 8
and r10d, 0xff
xor r8d, dword [rcx + r10*4]
sub rdi, rax
xor r9, qword [rsi + 0x18]
xor r9, r8
mov rax, r9
shr rax, 8
and r9d, 0xff
mov r8d, dword [rcx + r9*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]
xor rdx, qword [rsi + 0x20]
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 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 0x140178552
mov ebx, r8d
jmp 0x140178618
xor ebx, ebx
test rdi, rdi
jne 0x14017861a
lea rcx, [0x1402c86c8]
lea rdx, [0x1400a2f20]
xor ebx, ebx
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
jmp 0x14017861a
lea rax, [rsi + 1]
lea rcx, [0x140282ff0]
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 0x140178672
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
je 0x140178672
jmp 0x140178a44
xor ebp, ebp
xor r13d, r13d
xor ecx, ecx
mov r9, rsi
mov qword [rsp + 0x60], r9
mov rbx, qword [r9]
mov qword [rsp + 0x30], rbx
mov r10, qword [r9 + 8]
mov qword [rsp + 0x40], r10
xor r8d, ebx
xor ecx, r10d
mov r10, qword [r9 + 0x10]
mov qword [rsp + 0x48], r10
xor r13d, r10d
mov r10, qword [r9 + 0x18]
mov qword [rsp + 0x50], r10
xor ebp, r10d
mov r9, qword [r9 + 0x20]
mov qword [rsp + 0x58], r9
xor r11d, r9d
mov ebx, r8d
mov r9d, 0xff
and ebx, r9d
mov r14d, ecx
and r14d, r9d
mov r15d, r13d
and r15d, r9d
mov r12d, ebp
and r12d, r9d
mov r10d, r8d
shr r10d, 8
and r10d, r9d
lea r9, [0x1402833f0]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + rbx*4]
mov dword [rsp + 0x2c], r10d
mov ebx, ecx
shr ebx, 8
mov r10d, 0xff
and ebx, r10d
mov r10d, dword [r9 + rbx*4 + 0x400]
xor r10d, dword [r9 + r14*4]
mov dword [rsp + 0x28], r10d
mov r14d, r13d
shr r14d, 8
mov ebx, 0xff
and r14d, ebx
mov r10d, dword [r9 + r14*4 + 0x400]
xor r10d, dword [r9 + r15*4]
mov dword [rsp + 0x3c], r10d
mov r15d, ebp
shr r15d, 8
and r15d, ebx
mov r10d, dword [r9 + r15*4 + 0x400]
xor r10d, dword [r9 + r12*4]
mov r15d, r10d
mov r10, r9
mov r9d, r11d
and r9d, ebx
mov r12d, r11d
shr r12d, 8
and r12d, ebx
mov ebx, dword [r10 + r12*4 + 0x400]
xor ebx, dword [r10 + r9*4]
mov dword [rsp + 0x38], ebx
mov r9d, r8d
shr r9d, 0xe
mov ebx, 0x3fc
and r9d, ebx
mov r14d, 0x3fc
mov ebx, dword [rsp + 0x2c]
xor ebx, dword [r9 + r10 + 0x800]
mov dword [rsp + 0x2c], ebx
mov r9d, ecx
shr r9d, 0xe
and r9d, r14d
mov ebx, dword [rsp + 0x28]
xor ebx, dword [r9 + r10 + 0x800]
mov r9d, r13d
shr r9d, 0xe
and r9d, r14d
mov r14d, dword [rsp + 0x3c]
xor r14d, dword [r9 + r10 + 0x800]
mov r9d, ebp
shr r9d, 0xe
mov r12d, 0x3fc
and r9d, r12d
xor r15d, dword [r9 + r10 + 0x800]
mov dword [rsp + 0x28], r15d
mov r9d, r11d
shr r9d, 0xe
mov r15d, 0x3fc
and r9d, r15d
mov r12d, dword [rsp + 0x38]
xor r12d, dword [r9 + r10 + 0x800]
shr r8d, 0x18
mov r9d, dword [rsp + 0x2c]
xor r9d, dword [r10 + r8*4 + 0xc00]
shr ecx, 0x18
xor ebx, dword [r10 + rcx*4 + 0xc00]
shr r13d, 0x18
xor r14d, dword [r10 + r13*4 + 0xc00]
shr ebp, 0x18
mov r15d, dword [rsp + 0x28]
xor r15d, dword [r10 + rbp*4 + 0xc00]
shr r11d, 0x18
xor r12d, dword [r10 + r11*4 + 0xc00]
mov r13, qword [rsp + 0x30]
mov rcx, r13
shr rcx, 0x20
mov ebp, 0xff
and ecx, ebp
xor r9d, dword [r10 + rcx*4 + 0x1000]
mov dword [rsp + 0x2c], r9d
mov r9, qword [rsp + 0x40]
mov rcx, r9
shr rcx, 0x20
and ecx, ebp
xor ebx, dword [r10 + rcx*4 + 0x1000]
mov dword [rsp + 0x28], ebx
mov r11, qword [rsp + 0x48]
mov rcx, r11
shr rcx, 0x20
and ecx, ebp
xor r14d, dword [r10 + rcx*4 + 0x1000]
mov r8, qword [rsp + 0x50]
mov rcx, r8
shr rcx, 0x20
and ecx, ebp
xor r15d, dword [r10 + rcx*4 + 0x1000]
mov rbx, qword [rsp + 0x58]
mov rcx, rbx
shr rcx, 0x20
and ecx, ebp
xor r12d, dword [r10 + rcx*4 + 0x1000]
mov rcx, r13
shr rcx, 0x28
and ecx, ebp
mov r13d, dword [rsp + 0x2c]
xor r13d, dword [r10 + rcx*4 + 0x1400]
mov dword [rsp + 0x2c], r13d
mov rcx, r9
mov r13, r9
shr rcx, 0x28
and ecx, ebp
mov r9d, dword [rsp + 0x28]
xor r9d, dword [r10 + rcx*4 + 0x1400]
mov dword [rsp + 0x28], r9d
mov rcx, r11
shr rcx, 0x28
and ecx, ebp
xor r14d, dword [r10 + rcx*4 + 0x1400]
mov rcx, r8
mov r11, r8
shr rcx, 0x28
and ecx, ebp
xor r15d, dword [r10 + rcx*4 + 0x1400]
mov rcx, rbx
mov r9, rbx
shr rcx, 0x28
and ecx, ebp
xor r12d, dword [r10 + rcx*4 + 0x1400]
mov rcx, qword [rsp + 0x30]
shr rcx, 0x30
and ecx, ebp
mov r8d, dword [rsp + 0x2c]
xor r8d, dword [r10 + rcx*4 + 0x1800]
mov rcx, r13
shr rcx, 0x30
and ecx, ebp
mov ebx, dword [rsp + 0x28]
xor ebx, dword [r10 + rcx*4 + 0x1800]
mov r13, qword [rsp + 0x48]
mov rcx, r13
shr rcx, 0x30
and ecx, ebp
xor r14d, dword [r10 + rcx*4 + 0x1800]
mov rcx, r11
shr rcx, 0x30
and ecx, ebp
xor r15d, dword [r10 + rcx*4 + 0x1800]
mov rcx, r9
shr rcx, 0x30
and ecx, ebp
xor r12d, dword [r10 + rcx*4 + 0x1800]
mov rcx, qword [rsp + 0x30]
shr rcx, 0x38
xor r8d, dword [r10 + rcx*4 + 0x1c00]
mov rbp, qword [rsp + 0x40]
shr rbp, 0x38
mov ecx, ebx
xor ecx, dword [r10 + rbp*4 + 0x1c00]
mov rbx, r13
shr rbx, 0x38
mov r13d, r14d
xor r13d, dword [r10 + rbx*4 + 0x1c00]
shr r11, 0x38
mov ebp, r15d
xor ebp, dword [r10 + r11*4 + 0x1c00]
shr r9, 0x38
mov r11d, r12d
xor r11d, dword [r10 + r9*4 + 0x1c00]
mov r9, qword [rsp + 0x60]
add r9, 0x28
dec rdx
jne 0x140178a89
add rsi, rax
add rsi, 0xffffffffffffffd8
mov edx, r11d
mov r11d, ecx
mov r10d, r13d
mov r9d, ebp
jmp 0x1401786a6