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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x402738
mov edx, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
not ebx
test edx, edx
je 0x40255f
mov eax, ecx
and eax, 3
je 0x40255f
lea eax, [ecx + 1]
mov esi, edx
movzx edx, byte [ecx]
inc ecx
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [edi*4 + 0x40b134]
lea edx, [esi - 1]
cmp esi, 1
je 0x40255f
mov esi, eax
and esi, 3
inc eax
test esi, esi
jne 0x402538
cmp edx, 0x20
jb 0x402723
mov dword [ebp - 0x10], edx
xor ebx, dword [ecx]
mov esi, ebx
mov edx, 0xff
and esi, edx
mov edi, ebx
shr edi, 8
and edi, edx
mov edi, dword [edi*4 + 0x40b934]
xor edi, dword [esi*4 + 0x40bd34]
mov esi, ebx
shr esi, 0xe
mov eax, 0x3fc
and esi, eax
mov eax, 0x3fc
xor edi, dword [esi + 0x40b534]
shr ebx, 0x18
xor edi, dword [ebx*4 + 0x40b134]
xor edi, dword [ecx + 4]
mov esi, edi
and esi, edx
mov ebx, edi
shr ebx, 8
and ebx, edx
mov ebx, dword [ebx*4 + 0x40b934]
xor ebx, dword [esi*4 + 0x40bd34]
mov esi, edi
shr esi, 0xe
and esi, eax
xor ebx, dword [esi + 0x40b534]
shr edi, 0x18
xor ebx, dword [edi*4 + 0x40b134]
xor ebx, dword [ecx + 8]
mov esi, ebx
and esi, edx
mov edi, ebx
shr edi, 8
and edi, edx
mov edi, dword [edi*4 + 0x40b934]
xor edi, dword [esi*4 + 0x40bd34]
mov esi, ebx
shr esi, 0xe
and esi, eax
xor edi, dword [esi + 0x40b534]
shr ebx, 0x18
xor edi, dword [ebx*4 + 0x40b134]
xor edi, dword [ecx + 0xc]
mov esi, edi
and esi, edx
mov ebx, edi
shr ebx, 8
and ebx, edx
mov ebx, dword [ebx*4 + 0x40b934]
xor ebx, dword [esi*4 + 0x40bd34]
mov esi, edi
shr esi, 0xe
and esi, eax
xor ebx, dword [esi + 0x40b534]
shr edi, 0x18
xor ebx, dword [edi*4 + 0x40b134]
xor ebx, dword [ecx + 0x10]
mov esi, ebx
and esi, edx
mov edi, ebx
shr edi, 8
and edi, edx
mov edi, dword [edi*4 + 0x40b934]
xor edi, dword [esi*4 + 0x40bd34]
mov esi, ebx
shr esi, 0xe
and esi, eax
xor edi, dword [esi + 0x40b534]
shr ebx, 0x18
xor edi, dword [ebx*4 + 0x40b134]
xor edi, dword [ecx + 0x14]
mov esi, edi
and esi, edx
mov ebx, edi
shr ebx, 8
and ebx, edx
mov ebx, dword [ebx*4 + 0x40b934]
xor ebx, dword [esi*4 + 0x40bd34]
mov esi, edi
shr esi, 0xe
and esi, eax
xor ebx, dword [esi + 0x40b534]
shr edi, 0x18
xor ebx, dword [edi*4 + 0x40b134]
xor ebx, dword [ecx + 0x18]
mov esi, ebx
and esi, edx
mov edi, ebx
shr edi, 8
and edi, edx
mov edi, dword [edi*4 + 0x40b934]
xor edi, dword [esi*4 + 0x40bd34]
mov esi, ebx
shr esi, 0xe
and esi, eax
xor edi, dword [esi + 0x40b534]
shr ebx, 0x18
xor edi, dword [ebx*4 + 0x40b134]
xor edi, dword [ecx + 0x1c]
mov esi, edi
and esi, edx
mov ebx, edi
shr ebx, 8
and ebx, edx
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebx*4 + 0x40b934]
xor ebx, dword [esi*4 + 0x40bd34]
mov esi, edi
shr esi, 0xe
and esi, eax
xor ebx, dword [esi + 0x40b534]
shr edi, 0x18
xor ebx, dword [edi*4 + 0x40b134]
add ecx, 0x20
add edx, 0xffffffe0
cmp edx, 0x1f
ja 0x402568
cmp edx, 4
jae 0x40273c
mov eax, ebx
test edx, edx
jne 0x402786
not eax
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
jmp 0x402730
mov esi, 0xff
xor ebx, dword [ecx]
mov edi, ebx
and edi, esi
mov eax, ebx
shr eax, 8
and eax, esi
mov eax, dword [eax*4 + 0x40b934]
xor eax, dword [edi*4 + 0x40bd34]
mov edi, ebx
shr edi, 0xe
and edi, 0x3fc
xor eax, dword [edi + 0x40b534]
add ecx, 4
shr ebx, 0x18
xor eax, dword [ebx*4 + 0x40b134]
add edx, 0xfffffffc
mov ebx, eax
cmp edx, 3
jbe 0x40272a
jmp 0x402741
xor esi, esi
movzx edi, byte [ecx + esi]
movzx ebx, al
xor ebx, edi
shr eax, 8
xor eax, dword [ebx*4 + 0x40b134]
inc esi
cmp edx, esi
je 0x40272e
jmp 0x402788