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

Disassembly:
push ebp
mov ebp, esp
not dword [ebp + 8]
sub esp, 0xc
cmp dword [ebp + 0xc], 8
push ebx
push esi
push edi
mov esi, 0xff
jb 0x4216c9
mov eax, dword [ebp + 0xc]
fld qword [0x477958]
fld qword [0x477950]
shr eax, 3
mov dword [ebp - 0xc], eax
movzx edx, byte [ecx]
mov eax, dword [ebp + 8]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 1]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 2]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 3]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 4]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 5]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 6]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
movzx edx, byte [ecx + 7]
xor edx, eax
shr eax, 8
and edx, esi
xor eax, dword [edx*4 + 0x45dc90]
mov dword [ebp - 4], 0x28
add dword [ebp - 4], 0x62
mov edi, dword [ebp - 4]
mov dword [ebp + 8], eax
mov eax, dword [ebp - 4]
imul edi, eax
mov eax, dword [ebp - 4]
cdq
push 0x54
pop ebx
idiv ebx
push 0x2c
add ecx, 8
add edi, eax
mov eax, dword [ebp - 4]
sub edi, eax
sub edi, 0x11
mov dword [ebp - 4], edi
mov eax, dword [ebp - 4]
cdq
pop edi
idiv edi
push 0x34
pop edi
cdq
idiv edi
add eax, dword [ebp - 4]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 4]
imul eax, eax, 0x3d
sub edx, eax
mov eax, dword [ebp - 4]
sub edx, eax
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
imul eax, eax, 9
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
imul eax, eax, 0x59
mov dword [ebp - 4], eax
fld qword [0x477948]
fstp qword [ebp - 8]
sub dword [ebp + 0xc], 8
fld qword [ebp - 8]
fadd st(2)
fstp qword [ebp - 8]
fld qword [ebp - 8]
fsub qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x477940]
fsubp st(1)
fadd qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x477938]
fmul qword [0x477930]
fmul qword [ebp - 8]
fmul qword [0x477928]
fsubp st(1)
fstp qword [ebp - 8]
fld qword [ebp - 8]
fadd qword [0x477920]
fstp qword [ebp - 8]
fld qword [ebp - 8]
fadd qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x477918]
fsubp st(1)
fsub qword [0x477910]
fstp qword [ebp - 8]
fld qword [ebp - 8]
fsub qword [0x477908]
fstp qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x477900]
fsub qword [ebp - 8]
fsub qword [0x4778f8]
fstp qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [ebp - 8]
fadd qword [ebp - 8]
fsub qword [ebp - 8]
fadd qword [ebp - 8]
fadd qword [ebp - 8]
fsub qword [ebp - 8]
fsub qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x4778f0]
faddp st(1)
fadd qword [ebp - 8]
fadd qword [ebp - 8]
fadd st(2)
fstp qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x4778e8]
fsub qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [ebp - 8]
faddp st(1)
fadd st(1)
fsub qword [ebp - 8]
fsub qword [0x4778e0]
fsub qword [ebp - 8]
fadd qword [ebp - 8]
fsub qword [0x4778d8]
fadd qword [ebp - 8]
fsub qword [0x4778d0]
fstp qword [ebp - 8]
fld qword [ebp - 8]
fsub qword [ebp - 8]
fld qword [ebp - 8]
fmul qword [0x4778c8]
fsubp st(1)
fsub qword [ebp - 8]
fld qword [ebp - 8]
fmul st(2)
fmul qword [0x4778c0]
faddp st(1)
fld qword [ebp - 8]
fmul qword [ebp - 8]
faddp st(1)
dec dword [ebp - 0xc]
fstp qword [ebp - 8]
jne 0x4214a2
fstp st(1)
fstp st(0)
cmp dword [ebp + 0xc], 0
je 0x421757
movzx eax, byte [ecx]
xor eax, dword [ebp + 8]
mov edx, dword [ebp + 8]
and eax, esi
shr edx, 8
xor edx, dword [eax*4 + 0x45dc90]
inc ecx
dec dword [ebp + 0xc]
mov dword [ebp + 8], edx
jne 0x4216d3
mov dword [ebp - 4], 0x2a
mov dword [ebp + 0xc], 0x3b
mov eax, dword [ebp - 4]
imul eax, eax, 0x1f
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0xc]
imul eax, eax, 0x11
sub ecx, eax
mov eax, dword [ebp + 0xc]
imul ecx, ecx, 5
sub ecx, eax
mov eax, dword [ebp + 0xc]
sub ecx, eax
mov eax, dword [ebp + 0xc]
sub ecx, eax
mov eax, dword [ebp - 4]
sub ecx, eax
mov eax, dword [ebp - 4]
sub ecx, eax
mov eax, dword [ebp - 4]
sub ecx, eax
mov eax, dword [ebp + 0xc]
lea eax, [ecx + eax - 0x12]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
imul eax, ecx
mov ecx, dword [ebp + 0xc]
lea eax, [ecx + eax*4]
mov ecx, dword [ebp - 4]
lea eax, [eax + ecx + 3]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
pop edi
pop esi
not eax
pop ebx
leave
ret