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

Disassembly:
push rbx
mov eax, ecx
test r8, r8
mov r9, rdx
not eax
je 0x49f3ff
lea rdx, [0x004fa820]
test r9b, 3
jne 0x49f3e6
jmp 0x49f408
test r9b, 3
je 0x49f408
movzx ecx, byte [r9]
add r9, 1
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
sub r8, 1
jne 0x49f3e0
not eax
pop rbx
ret
cmp r8, 0x1f
jbe 0x49f653
lea rcx, [r8 - 0x20]
and rcx, 0xffffffffffffffe0
lea r10, [r9 + rcx + 0x20]
nop
xor eax, dword [r9]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [rdx + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [rdx + rbx*4]
xor ecx, dword [r9 + 4]
xor ecx, dword [rdx + rax*4 + 0x800]
xor ecx, dword [rdx + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
movzx ecx, ch
mov eax, dword [rdx + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [rdx + rbx*4]
xor eax, dword [r9 + 8]
xor eax, dword [rdx + rcx*4 + 0x800]
xor eax, dword [rdx + r11*4 + 0x400]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [rdx + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [rdx + rbx*4]
xor ecx, dword [r9 + 0xc]
xor ecx, dword [rdx + rax*4 + 0x800]
xor ecx, dword [rdx + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
movzx ecx, ch
mov eax, dword [rdx + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [rdx + rbx*4]
xor eax, dword [r9 + 0x10]
xor eax, dword [rdx + rcx*4 + 0x800]
xor eax, dword [rdx + r11*4 + 0x400]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [rdx + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [rdx + rbx*4]
xor ecx, dword [r9 + 0x14]
xor ecx, dword [rdx + rax*4 + 0x800]
xor ecx, dword [rdx + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
movzx ecx, ch
shr ebx, 0x18
mov eax, dword [rdx + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [rdx + rbx*4]
add r9, 0x20
xor eax, dword [r9 - 8]
xor eax, dword [rdx + rcx*4 + 0x800]
xor eax, dword [rdx + r11*4 + 0x400]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [rdx + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [rdx + rbx*4]
xor ecx, dword [r9 - 4]
xor ecx, dword [rdx + rax*4 + 0x800]
xor ecx, dword [rdx + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
movzx ecx, ch
mov eax, dword [rdx + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [rdx + rbx*4]
xor eax, dword [rdx + rcx*4 + 0x800]
xor eax, dword [rdx + r11*4 + 0x400]
cmp r9, r10
jne 0x49f420
mov rbx, r8
and ebx, 0x1f
and r8d, 0x1c
je 0x49f64e
lea rcx, [rbx - 4]
shr rcx, 2
lea r9, [r10 + rcx*4 + 4]
nop dword [rax]
xor eax, dword [r10]
add r10, 4
mov r8d, eax
mov r11d, eax
movzx ecx, al
shr r8d, 0x10
shr r11d, 0x18
movzx eax, ah
mov ecx, dword [rdx + rcx*4 + 0xc00]
movzx r8d, r8b
xor ecx, dword [rdx + r11*4]
xor ecx, dword [rdx + rax*4 + 0x800]
mov eax, dword [rdx + r8*4 + 0x400]
xor eax, ecx
cmp r10, r9
jne 0x49f5e0
and ebx, 3
mov r8, rbx
test r8, r8
je 0x49f3ff
add r8, r9
movzx ecx, byte [r9]
add r9, 1
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
cmp r9, r8
jne 0x49f632
not eax
pop rbx
ret
mov r8, rbx
jmp 0x49f626
cmp r8, 3
mov r10, r9
mov rbx, r8
ja 0x49f5d0
jmp 0x49f62f
test rdx, rdx
je 0x49f850
mov r8d, r8d
jmp 0x49f3c0
xor eax, eax
ret