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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x18
test rdx, rdx
mov r10, rdx
je 0x59f860
cmp r8, 0x2e
not ecx
jbe 0x59f732
lea r11, [0x0066ad40]
nop
mov r9, r10
and r9d, 7
je 0x59f820
add r10, 1
mov eax, ecx
xor cl, byte [r10 - 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [r11 + rcx*4]
sub r8, 1
mov ecx, eax
jne 0x59f110
mov qword [rsp + 8], 0xffffffffffffffff
mov r15, qword [rsp + 8]
lea r9, [0x00668d40]
mov r14, r10
xor ebx, ebx
xor esi, esi
xor edi, edi
xor edx, edx
nop dword [rax]
mov eax, ecx
xor rax, qword [r14]
mov ebp, ebx
xor rdx, qword [r14 + 8]
mov r12d, esi
xor rbp, qword [r14 + 0x20]
xor r12, qword [r14 + 0x18]
mov r13d, edi
add r14, 0x28
xor r13, qword [r14 - 0x18]
mov rcx, rax
movzx ebx, al
shr rcx, 0x38
movzx esi, dl
add rcx, 0x700
mov ecx, dword [r9 + rcx*4]
xor ecx, dword [r9 + rbx*4]
movzx ebx, ah
add rbx, 0x100
xor ecx, dword [r9 + rbx*4]
mov rbx, rax
shr rbx, 0x10
movzx ebx, bl
add rbx, 0x200
xor ecx, dword [r9 + rbx*4]
mov rbx, rax
shr rbx, 0x18
movzx ebx, bl
add rbx, 0x300
xor ecx, dword [r9 + rbx*4]
mov rbx, rax
shr rbx, 0x20
movzx ebx, bl
add rbx, 0x400
xor ecx, dword [r9 + rbx*4]
mov rbx, rax
shr rax, 0x30
shr rbx, 0x28
movzx ebx, bl
add rbx, 0x500
xor ecx, dword [r9 + rbx*4]
movzx ebx, al
mov rax, rdx
shr rax, 0x38
add rbx, 0x600
add rax, 0x700
xor ecx, dword [r9 + rbx*4]
mov ebx, dword [r9 + rax*4]
movzx eax, dh
xor ebx, dword [r9 + rsi*4]
add rax, 0x100
xor ebx, dword [r9 + rax*4]
mov rax, rdx
shr rax, 0x10
movzx eax, al
add rax, 0x200
xor ebx, dword [r9 + rax*4]
mov rax, rdx
shr rax, 0x18
movzx eax, al
add rax, 0x300
xor ebx, dword [r9 + rax*4]
mov rax, rdx
shr rax, 0x20
movzx eax, al
add rax, 0x400
xor ebx, dword [r9 + rax*4]
mov rax, rdx
shr rdx, 0x30
shr rax, 0x28
movzx eax, al
add rax, 0x500
xor ebx, dword [r9 + rax*4]
movzx eax, dl
add rax, 0x600
xor ebx, dword [r9 + rax*4]
mov rax, r13
shr rax, 0x38
add rax, 0x700
mov edi, dword [r9 + rax*4]
mov rax, r13
mov edx, ebx
movzx eax, ah
movzx ebx, r13b
xor edi, dword [r9 + rbx*4]
add rax, 0x100
movzx ebx, r12b
xor edi, dword [r9 + rax*4]
mov rax, r13
shr rax, 0x10
movzx eax, al
add rax, 0x200
xor edi, dword [r9 + rax*4]
mov rax, r13
shr rax, 0x18
movzx eax, al
add rax, 0x300
xor edi, dword [r9 + rax*4]
mov rax, r13
shr rax, 0x20
movzx eax, al
add rax, 0x400
xor edi, dword [r9 + rax*4]
mov rax, r13
shr r13, 0x30
shr rax, 0x28
movzx r13d, r13b
movzx eax, al
add r13, 0x600
add rax, 0x500
xor edi, dword [r9 + rax*4]
mov rax, r12
xor edi, dword [r9 + r13*4]
shr rax, 0x38
add rax, 0x700
mov esi, dword [r9 + rax*4]
mov rax, r12
xor esi, dword [r9 + rbx*4]
movzx eax, ah
add rax, 0x100
xor esi, dword [r9 + rax*4]
mov rax, r12
shr rax, 0x10
movzx eax, al
add rax, 0x200
xor esi, dword [r9 + rax*4]
mov rax, r12
shr rax, 0x18
movzx eax, al
add rax, 0x300
xor esi, dword [r9 + rax*4]
mov rax, r12
shr rax, 0x20
movzx eax, al
add rax, 0x400
xor esi, dword [r9 + rax*4]
mov rax, r12
shr r12, 0x30
shr rax, 0x28
movzx r12d, r12b
movzx eax, al
add r12, 0x600
add rax, 0x500
xor esi, dword [r9 + rax*4]
mov rax, rbp
shr rax, 0x38
xor esi, dword [r9 + r12*4]
movzx r12d, bpl
add rax, 0x700
mov ebx, dword [r9 + rax*4]
mov rax, rbp
xor ebx, dword [r9 + r12*4]
movzx eax, ah
add rax, 0x100
xor ebx, dword [r9 + rax*4]
mov rax, rbp
shr rax, 0x10
movzx eax, al
add rax, 0x200
xor ebx, dword [r9 + rax*4]
mov rax, rbp
shr rax, 0x18
movzx eax, al
add rax, 0x300
xor ebx, dword [r9 + rax*4]
mov rax, rbp
shr rax, 0x20
movzx eax, al
add rax, 0x400
xor ebx, dword [r9 + rax*4]
mov rax, rbp
shr rbp, 0x30
shr rax, 0x28
movzx ebp, bpl
movzx eax, al
add rbp, 0x600
add rax, 0x500
xor ebx, dword [r9 + rax*4]
xor ebx, dword [r9 + rbp*4]
sub r15, 1
jne 0x59f160
mov rax, qword [rsp + 8]
mov r9d, edx
mov r13d, edi
mov r12d, esi
mov ebp, ebx
lea rax, [rax + rax*4]
lea r10, [r10 + rax*8]
xor rcx, qword [r10]
mov rax, rcx
movzx ecx, cl
mov edx, dword [r11 + rcx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rax, rdx
mov rdx, r9
xor rdx, qword [r10 + 8]
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edi, dword [r11 + rdx*4]
shr rax, 8
xor rax, rdi
mov rdi, r13
xor rdi, qword [r10 + 0x10]
xor rdi, rax
mov rax, rdi
movzx edi, dil
mov edx, dword [r11 + rdi*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov esi, dword [r11 + rdx*4]
shr rax, 8
xor rax, rsi
mov rsi, r12
xor rsi, qword [r10 + 0x18]
xor rsi, rax
mov rax, rsi
movzx esi, sil
mov edx, dword [r11 + rsi*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
add r10, 0x28
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov ebx, dword [r11 + rdx*4]
shr rax, 8
xor rax, rbx
mov rbx, rbp
xor rbx, qword [r10 - 8]
xor rbx, rax
mov rax, rbx
movzx ebx, bl
mov edx, dword [r11 + rbx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rax, rdx
movzx edx, dl
mov edx, dword [r11 + rdx*4]
shr rax, 8
xor rdx, rax
mov rcx, rdx
movzx edx, dl
shr rcx, 8
xor ecx, dword [r11 + rdx*4]
cmp r8, 7
jbe 0x59f864
lea rax, [r8 - 8]
lea r11, [0x0066ad40]
and rax, 0xfffffffffffffff8
lea r9, [rax + r10 + 8]
mov edx, ecx
xor cl, byte [r10]
add r10, 8
shr edx, 8
movzx ecx, cl
xor edx, dword [r11 + rcx*4]
mov eax, edx
xor dl, byte [r10 - 7]
shr eax, 8
movzx edx, dl
xor eax, dword [r11 + rdx*4]
mov edx, eax
xor al, byte [r10 - 6]
shr edx, 8
movzx eax, al
xor edx, dword [r11 + rax*4]
mov eax, edx
xor dl, byte [r10 - 5]
shr eax, 8
movzx edx, dl
xor eax, dword [r11 + rdx*4]
mov edx, eax
xor al, byte [r10 - 4]
shr edx, 8
movzx eax, al
xor edx, dword [r11 + rax*4]
mov eax, edx
xor dl, byte [r10 - 3]
shr eax, 8
movzx edx, dl
xor eax, dword [r11 + rdx*4]
mov edx, eax
xor al, byte [r10 - 2]
shr edx, 8
movzx eax, al
xor edx, dword [r11 + rax*4]
mov ecx, edx
xor dl, byte [r10 - 1]
shr ecx, 8
movzx edx, dl
xor ecx, dword [r11 + rdx*4]
cmp r9, r10
jne 0x59f750
and r8d, 7
test r8, r8
je 0x59f80b
lea r11, [0x0066ad40]
add r8, r9
nop
add r9, 1
mov eax, ecx
xor cl, byte [r9 - 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [r11 + rcx*4]
cmp r9, r8
mov ecx, eax
jne 0x59f7f0
mov eax, ecx
not eax
add rsp, 0x18
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, r8
movabs rdx, 0xcccccccccccccccd
mul rdx
shr rdx, 5
lea rax, [rdx + rdx*4]
shl rax, 3
sub r8, rax
sub rdx, 1
mov qword [rsp + 8], rdx
jne 0x59f142
xor ebp, ebp
xor r12d, r12d
xor r13d, r13d
jmp 0x59f45c
xor eax, eax
jmp 0x59f80f
mov r9, r10
jmp 0x59f7e0
mov r8d, r8d
jmp 0x59f0e0