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

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp dword [ebp + 0xc], 0
jne 0x407e5e
xor eax, eax
jmp 0x408054
push 1
pop eax
test eax, eax
je 0x407ea0
mov dword [ebp - 4], 1
movzx eax, byte [ebp - 4]
test eax, eax
je 0x407e8a
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00408056
add esp, 0xc
jmp 0x408054
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0040844c
add esp, 0xc
jmp 0x408054
mov eax, dword [ebp + 8]
xor eax, 0xffffffff
mov dword [ebp + 8], eax
cmp dword [ebp + 0x10], 8
jb 0x408011
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
sub eax, 8
mov dword [ebp + 0x10], eax
jmp 0x407ea9
cmp dword [ebp + 0x10], 0
je 0x40804e
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
mov ecx, dword [ebp + 8]
xor ecx, eax
and ecx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
mov ecx, dword [ecx*4 + 0x413aa8]
xor ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ebp + 0xc]
inc eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
dec eax
mov dword [ebp + 0x10], eax
cmp dword [ebp + 0x10], 0
jne 0x408017
mov eax, dword [ebp + 8]
xor eax, 0xffffffff
leave
ret