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

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp + 8]
or eax, 0xffffffff
push edi
mov edi, dword [ebp + 0xc]
cmp edi, 0x10
jb 0x51f666
mov bl, byte [esi]
movsx edx, bl
sub bl, 0x61
cmp bl, 0x19
mov bl, byte [esi + 1]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 2]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 3]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 4]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 5]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 6]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 7]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 8]
lea ecx, [edx - 0x20]
cmova ecx, edx
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x70caf0]
movsx edx, bl
sub bl, 0x61
cmp bl, 0x19
mov bl, byte [esi + 9]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xa]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xb]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xc]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xd]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xe]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
mov bl, byte [esi + 0xf]
lea ecx, [edx - 0x20]
cmova ecx, edx
movsx edx, bl
xor ecx, eax
sub bl, 0x61
movzx ecx, cl
shr eax, 8
xor eax, dword [ecx*4 + 0x70caf0]
cmp bl, 0x19
lea ecx, [edx - 0x20]
cmova ecx, edx
add esi, 0x10
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x70caf0]
sub edi, 0x10
cmp edi, 0x10
jae 0x51f448
test edi, edi
je 0x51f698
nop word [eax + eax]
mov bl, byte [esi]
lea esi, [esi + 1]
movsx edx, bl
sub bl, 0x61
cmp bl, 0x19
lea ecx, [edx - 0x20]
cmova ecx, edx
xor ecx, eax
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x70caf0]
sub edi, 1
jne 0x51f670
pop edi
pop esi
not eax
pop ebx
pop ebp
ret