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

Disassembly:
push rbx
mov eax, ecx
test r8, r8
not eax
je 0x4517b2
test dl, 3
je 0x4517c0
lea r9, [0x00489d40]
jmp 0x451795
test dl, 3
je 0x4517c0
add rdx, 1
movzx r10d, byte [rdx - 1]
xor r10d, eax
shr eax, 8
movzx r10d, r10b
xor eax, dword [r9 + r10*4]
sub r8, 1
jne 0x451790
not eax
pop rbx
ret
cmp r8, 0x1f
jbe 0x451996
lea rcx, [r8 - 0x20]
lea r9, [0x00489d40]
and rcx, 0xffffffffffffffe0
lea r10, [rdx + rcx + 0x20]
nop
xor eax, dword [rdx]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [r9 + rbx*4]
xor ecx, dword [rdx + 4]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
movzx ecx, ch
mov eax, dword [r9 + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [r9 + rbx*4]
xor eax, dword [rdx + 8]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [r9 + rbx*4]
xor ecx, dword [rdx + 0xc]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
movzx ecx, ch
mov eax, dword [r9 + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [r9 + rbx*4]
xor eax, dword [rdx + 0x10]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov r11d, eax
mov ebx, eax
movzx ecx, al
shr r11d, 0x10
shr ebx, 0x18
movzx eax, ah
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx r11d, r11b
xor ecx, dword [r9 + rbx*4]
xor ecx, dword [rdx + 0x14]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
movzx ecx, ch
shr ebx, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
movzx r11d, r11b
xor eax, dword [r9 + rbx*4]
add rdx, 0x20
xor eax, dword [rdx - 8]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov ecx, eax
mov r11d, eax
movzx ebx, al
shr ecx, 0x10
shr r11d, 0x18
movzx eax, ah
mov ebx, dword [r9 + rbx*4 + 0xc00]
movzx ecx, cl
xor ebx, dword [r9 + r11*4]
xor ebx, dword [rdx - 4]
xor ebx, dword [r9 + rax*4 + 0x800]
xor ebx, dword [r9 + rcx*4 + 0x400]
mov ecx, ebx
mov r11d, ebx
movzx eax, bl
shr ecx, 0x10
shr r11d, 0x18
movzx ebx, bh
mov eax, dword [r9 + rax*4 + 0xc00]
movzx ecx, cl
xor eax, dword [r9 + r11*4]
xor eax, dword [r9 + rbx*4 + 0x800]
xor eax, dword [r9 + rcx*4 + 0x400]
cmp rdx, r10
jne 0x4517e0
and r8d, 0x1f
cmp r8, 3
jbe 0x451b92
xor eax, dword [rdx]
lea r10, [0x00489d40]
mov r9d, eax
mov ecx, eax
movzx r11d, al
shr r9d, 0x10
shr ecx, 0x18
movzx eax, ah
movzx r9d, r9b
mov ecx, dword [r10 + rcx*4]
xor ecx, dword [r10 + r11*4 + 0xc00]
xor ecx, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r9*4 + 0x400]
xor eax, ecx
lea rcx, [r8 - 4]
cmp rcx, 3
jbe 0x451b85
xor eax, dword [rdx + 4]
mov r11d, eax
mov r9d, eax
movzx ebx, al
shr r11d, 0x10
shr r9d, 0x18
movzx eax, ah
movzx r11d, r11b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + rbx*4 + 0xc00]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
lea r9, [r8 - 8]
cmp r9, 3
jbe 0x451b85
xor eax, dword [rdx + 8]
mov r11d, eax
mov r9d, eax
movzx ebx, al
shr r11d, 0x10
shr r9d, 0x18
movzx eax, ah
movzx r11d, r11b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + rbx*4 + 0xc00]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
lea r9, [r8 - 0xc]
cmp r9, 3
jbe 0x451b85
xor eax, dword [rdx + 0xc]
mov r11d, eax
mov r9d, eax
movzx ebx, al
shr r11d, 0x10
shr r9d, 0x18
movzx eax, ah
movzx r11d, r11b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + rbx*4 + 0xc00]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
lea r9, [r8 - 0x10]
cmp r9, 3
jbe 0x451b85
xor eax, dword [rdx + 0x10]
mov r11d, eax
mov r9d, eax
movzx ebx, al
shr r11d, 0x10
shr r9d, 0x18
movzx eax, ah
movzx r11d, r11b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + rbx*4 + 0xc00]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
lea r9, [r8 - 0x14]
cmp r9, 3
jbe 0x451b85
xor eax, dword [rdx + 0x14]
mov r11d, eax
mov r9d, eax
movzx ebx, al
shr r11d, 0x10
shr r9d, 0x18
movzx eax, ah
movzx r11d, r11b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + rbx*4 + 0xc00]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
lea r9, [r8 - 0x18]
cmp r9, 3
jbe 0x451b85
xor eax, dword [rdx + 0x18]
mov r11d, eax
mov ebx, eax
movzx r9d, al
shr r11d, 0x10
movzx eax, ah
shr ebx, 0x18
mov r9d, dword [r10 + r9*4 + 0xc00]
movzx r11d, r11b
xor r9d, dword [r10 + rbx*4]
xor r9d, dword [r10 + rax*4 + 0x800]
mov eax, dword [r10 + r11*4 + 0x400]
xor eax, r9d
shr rcx, 2
and r8d, 3
lea rdx, [rdx + rcx*4 + 4]
test r8, r8
je 0x4517b2
movzx r9d, byte [rdx]
lea r10, [0x00489d40]
xor r9d, eax
shr eax, 8
movzx r9d, r9b
xor eax, dword [r10 + r9*4]
cmp r8, 1
je 0x4517b2
movzx r9d, byte [rdx + 1]
xor r9d, eax
shr eax, 8
movzx r9d, r9b
xor eax, dword [r10 + r9*4]
cmp r8, 2
je 0x4517b2
movzx ebx, byte [rdx + 2]
xor ebx, eax
shr eax, 8
movzx edx, bl
xor eax, dword [r10 + rdx*4]
not eax
pop rbx
ret
test rdx, rdx
je 0x451db0
mov r8d, r8d
jmp 0x451770
xor eax, eax
ret