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

Disassembly:
test ecx, ecx
not eax
je 0x422b3c
push ebp
push edi
push esi
push ebx
sub esp, 4
jmp 0x4228d1
add edx, 1
mov ebx, eax
shr eax, 8
xor bl, byte [edx - 1]
movzx ebx, bl
xor eax, dword [ebx*4 + 0xe8ac40]
sub ecx, 1
je 0x422b32
test dl, 3
jne 0x4228b3
cmp ecx, 0x1f
jbe 0x422a9e
mov esi, edx
mov ebx, ecx
mov dword [esp], edx
lea esi, [esi]
lea edi, [edi]
xor eax, dword [esi]
mov edx, eax
mov ebp, eax
shr edx, 0x10
shr ebp, 0x18
movzx edi, dl
movzx edx, al
movzx eax, ah
mov edx, dword [edx*4 + 0xe8b840]
xor edx, dword [ebp*4 + 0xe8ac40]
xor edx, dword [esi + 4]
xor edx, dword [eax*4 + 0xe8b440]
xor edx, dword [edi*4 + 0xe8b040]
mov eax, edx
mov ebp, edx
shr eax, 0x10
shr ebp, 0x18
movzx edi, al
movzx eax, dl
movzx edx, dh
mov eax, dword [eax*4 + 0xe8b840]
xor eax, dword [ebp*4 + 0xe8ac40]
xor eax, dword [esi + 8]
xor eax, dword [edx*4 + 0xe8b440]
xor eax, dword [edi*4 + 0xe8b040]
mov edx, eax
mov ebp, eax
shr edx, 0x10
shr ebp, 0x18
movzx edi, dl
movzx edx, al
movzx eax, ah
mov edx, dword [edx*4 + 0xe8b840]
xor edx, dword [ebp*4 + 0xe8ac40]
xor edx, dword [esi + 0xc]
xor edx, dword [eax*4 + 0xe8b440]
xor edx, dword [edi*4 + 0xe8b040]
mov eax, edx
mov ebp, edx
shr eax, 0x10
shr ebp, 0x18
movzx edi, al
movzx eax, dl
movzx edx, dh
mov eax, dword [eax*4 + 0xe8b840]
xor eax, dword [ebp*4 + 0xe8ac40]
xor eax, dword [esi + 0x10]
xor eax, dword [edx*4 + 0xe8b440]
xor eax, dword [edi*4 + 0xe8b040]
mov edx, eax
mov ebp, eax
shr edx, 0x10
shr ebp, 0x18
movzx edi, dl
movzx edx, al
movzx eax, ah
mov edx, dword [edx*4 + 0xe8b840]
xor edx, dword [ebp*4 + 0xe8ac40]
xor edx, dword [esi + 0x14]
xor edx, dword [eax*4 + 0xe8b440]
xor edx, dword [edi*4 + 0xe8b040]
mov eax, edx
mov ebp, edx
shr eax, 0x10
shr ebp, 0x18
movzx edi, al
movzx eax, dl
movzx edx, dh
mov eax, dword [eax*4 + 0xe8b840]
xor eax, dword [ebp*4 + 0xe8ac40]
add esi, 0x20
xor eax, dword [esi - 8]
sub ebx, 0x20
xor eax, dword [edx*4 + 0xe8b440]
xor eax, dword [edi*4 + 0xe8b040]
mov edx, eax
mov ebp, eax
shr edx, 0x10
shr ebp, 0x18
movzx edi, dl
movzx edx, al
movzx eax, ah
mov edx, dword [edx*4 + 0xe8b840]
xor edx, dword [ebp*4 + 0xe8ac40]
xor edx, dword [esi - 4]
xor edx, dword [eax*4 + 0xe8b440]
xor edx, dword [edi*4 + 0xe8b040]
mov eax, edx
movzx ebp, dl
shr eax, 0x10
movzx edi, al
mov eax, edx
movzx edx, dh
shr eax, 0x18
mov eax, dword [eax*4 + 0xe8ac40]
xor eax, dword [ebp*4 + 0xe8b840]
xor eax, dword [edx*4 + 0xe8b440]
xor eax, dword [edi*4 + 0xe8b040]
cmp ebx, 0x1f
ja 0x4228f0
lea ebx, [ecx - 0x20]
mov edx, dword [esp]
and ecx, 0x1f
and ebx, 0xffffffe0
lea edx, [edx + ebx + 0x20]
cmp ecx, 3
jbe 0x422b3f
lea ebx, [ecx - 4]
shr ebx, 2
lea esi, [edx + ebx*4 + 4]
add edx, 4
xor eax, dword [edx - 4]
mov ebx, eax
mov ebp, eax
shr ebx, 0x10
shr ebp, 0x18
movzx edi, bl
movzx ebx, al
mov ebp, dword [ebp*4 + 0xe8ac40]
xor ebp, dword [ebx*4 + 0xe8b840]
movzx ebx, ah
mov eax, dword [ebx*4 + 0xe8b440]
xor eax, ebp
xor eax, dword [edi*4 + 0xe8b040]
cmp edx, esi
jne 0x422ab1
and ecx, 3
test ecx, ecx
je 0x422b32
mov edx, eax
xor dl, byte [esi]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0xe8ac40]
cmp ecx, 1
je 0x422b32
mov edx, eax
xor dl, byte [esi + 1]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0xe8ac40]
cmp ecx, 2
je 0x422b32
mov edx, eax
xor dl, byte [esi + 2]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0xe8ac40]
add esp, 4
not eax
pop ebx
pop esi
pop edi
pop ebp
ret
not eax
ret
mov esi, edx
jmp 0x422aef
mov edx, dword [esp + 8]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
test edx, edx
je 0x422d05
jmp 0x4228a0
xor eax, eax
ret