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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x3c
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x40385f
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
not edx
cmp edi, 0x17
jae 0x403867
cmp edi, 8
jae 0x403bc0
test edi, edi
je 0x403863
xor ecx, ecx
mov eax, edx
xor dl, byte [ebx + ecx]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x40b1a0]
inc ecx
mov edx, eax
cmp edi, ecx
jne 0x40383e
not eax
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
jmp 0x403857
mov eax, edx
jmp 0x403855
test bl, 3
jne 0x403c63
mov esi, edx
mov ecx, 0xcccccccd
mov dword [ebp - 0x38], edi
mov eax, edi
mul ecx
shr edx, 4
lea eax, [edx*4]
lea eax, [eax + eax*4]
mov dword [ebp - 0x34], eax
mov eax, edx
dec eax
je 0x403c9b
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], ebx
mov edx, ebx
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0x10], 0
xor ecx, ecx
mov dword [ebp - 0x3c], eax
mov eax, esi
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], edx
xor eax, dword [edx]
mov edx, eax
mov esi, 0xff
and edx, esi
mov dword [ebp - 0x1c], edx
mov esi, eax
shr esi, 8
mov edx, 0xff
and esi, edx
mov esi, dword [esi*4 + 0x40b9a0]
mov edx, dword [ebp - 0x1c]
xor esi, dword [edx*4 + 0x40b5a0]
mov dword [ebp - 0x1c], esi
mov esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x20]
xor esi, dword [edx + 4]
mov dword [ebp - 0x10], esi
mov edx, esi
mov esi, 0xff
and edx, esi
mov esi, dword [ebp - 0x10]
shr esi, 8
mov ecx, 0xff
and esi, ecx
mov esi, dword [esi*4 + 0x40b9a0]
xor esi, dword [edx*4 + 0x40b5a0]
mov dword [ebp - 0x48], esi
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
xor ecx, dword [edx + 8]
mov esi, ecx
mov edx, ecx
mov ecx, 0xff
and esi, ecx
mov dword [ebp - 0x24], edx
shr edx, 8
and edx, ecx
mov edx, dword [edx*4 + 0x40b9a0]
xor edx, dword [esi*4 + 0x40b5a0]
mov dword [ebp - 0x28], edx
mov edx, dword [ebp - 0x20]
xor edi, dword [edx + 0xc]
mov esi, edi
mov edx, 0xff
and esi, edx
mov dword [ebp - 0x14], edi
shr edi, 8
and edi, edx
mov edx, dword [edi*4 + 0x40b9a0]
xor edx, dword [esi*4 + 0x40b5a0]
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x20]
xor ebx, dword [edx + 0x10]
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov edx, 0xff
and ebx, edx
shr esi, 8
and esi, edx
mov edx, dword [esi*4 + 0x40b9a0]
xor edx, dword [ebx*4 + 0x40b5a0]
mov dword [ebp - 0x40], edx
mov ebx, eax
shr ebx, 0xe
mov edi, 0x3fc
and ebx, edi
mov edx, dword [ebp - 0x1c]
xor edx, dword [ebx + 0x40bda0]
mov dword [ebp - 0x1c], edx
mov ebx, dword [ebp - 0x10]
shr ebx, 0xe
and ebx, edi
mov edx, dword [ebp - 0x48]
xor edx, dword [ebx + 0x40bda0]
mov ecx, dword [ebp - 0x24]
mov ebx, ecx
shr ebx, 0xe
and ebx, edi
mov edi, dword [ebp - 0x28]
xor edi, dword [ebx + 0x40bda0]
mov dword [ebp - 0x28], edi
mov ebx, dword [ebp - 0x14]
shr ebx, 0xe
mov edi, 0x3fc
and ebx, edi
mov edi, dword [ebp - 0x44]
xor edi, dword [ebx + 0x40bda0]
mov ebx, dword [ebp - 0x18]
shr ebx, 0xe
mov esi, 0x3fc
and ebx, esi
mov esi, dword [ebp - 0x40]
xor esi, dword [ebx + 0x40bda0]
mov ebx, eax
shr ebx, 0x18
mov eax, dword [ebp - 0x1c]
xor eax, dword [ebx*4 + 0x40c1a0]
mov ebx, dword [ebp - 0x10]
shr ebx, 0x18
xor edx, dword [ebx*4 + 0x40c1a0]
mov dword [ebp - 0x10], edx
mov ebx, ecx
shr ebx, 0x18
mov ecx, dword [ebp - 0x28]
xor ecx, dword [ebx*4 + 0x40c1a0]
mov edx, dword [ebp - 0x14]
shr edx, 0x18
xor edi, dword [edx*4 + 0x40c1a0]
mov edx, dword [ebp - 0x18]
shr edx, 0x18
mov ebx, esi
xor ebx, dword [edx*4 + 0x40c1a0]
mov edx, dword [ebp - 0x20]
add edx, 0x14
dec dword [ebp - 0x3c]
jne 0x4038b1
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
mov esi, eax
mov eax, dword [ebp - 0x2c]
lea edx, [eax + eax*4]
mov ebx, dword [ebp - 0x30]
lea ebx, [ebx + edx*4]
add ebx, 0xffffffec
mov eax, ecx
mov ecx, dword [ebp - 0x10]
mov edi, esi
xor edi, dword [ebx]
mov esi, edi
shr esi, 8
mov edx, 0xff
and edi, edx
xor esi, dword [edi*4 + 0x40b1a0]
mov edi, esi
shr edi, 8
and esi, edx
xor edi, dword [esi*4 + 0x40b1a0]
mov esi, edi
shr esi, 8
and edi, edx
xor esi, dword [edi*4 + 0x40b1a0]
mov edi, esi
and esi, edx
xor ecx, dword [esi*4 + 0x40b1a0]
xor ecx, dword [ebx + 4]
shr edi, 8
xor ecx, edi
mov esi, ecx
shr esi, 8
and ecx, edx
xor esi, dword [ecx*4 + 0x40b1a0]
mov ecx, esi
shr ecx, 8
and esi, edx
xor ecx, dword [esi*4 + 0x40b1a0]
mov esi, ecx
shr esi, 8
and ecx, edx
xor esi, dword [ecx*4 + 0x40b1a0]
mov ecx, esi
and esi, edx
xor eax, dword [esi*4 + 0x40b1a0]
xor eax, dword [ebx + 8]
shr ecx, 8
xor eax, ecx
mov ecx, eax
shr ecx, 8
and eax, edx
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
shr eax, 8
and ecx, edx
xor eax, dword [ecx*4 + 0x40b1a0]
mov ecx, eax
shr ecx, 8
and eax, edx
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
and ecx, edx
mov esi, dword [ebp - 0x14]
xor esi, dword [ecx*4 + 0x40b1a0]
xor esi, dword [ebx + 0xc]
shr eax, 8
xor esi, eax
mov eax, esi
shr eax, 8
and esi, edx
xor eax, dword [esi*4 + 0x40b1a0]
mov ecx, eax
shr ecx, 8
and eax, edx
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
shr eax, 8
and ecx, edx
xor eax, dword [ecx*4 + 0x40b1a0]
mov ecx, eax
and eax, edx
mov esi, dword [ebp - 0x18]
xor esi, dword [eax*4 + 0x40b1a0]
xor esi, dword [ebx + 0x10]
shr ecx, 8
xor esi, ecx
mov eax, esi
shr eax, 8
and esi, edx
xor eax, dword [esi*4 + 0x40b1a0]
mov ecx, eax
shr ecx, 8
and eax, edx
xor ecx, dword [eax*4 + 0x40b1a0]
mov edi, dword [ebp - 0x38]
sub edi, dword [ebp - 0x34]
mov eax, ecx
shr eax, 8
and ecx, edx
xor eax, dword [ecx*4 + 0x40b1a0]
mov ecx, eax
and eax, edx
mov edx, ecx
shr edx, 8
xor edx, dword [eax*4 + 0x40b1a0]
add ebx, 0x14
jmp 0x40382d
mov eax, edx
xor dl, byte [ebx]
shr eax, 8
movzx ecx, dl
xor eax, dword [ecx*4 + 0x40b1a0]
mov ecx, eax
xor al, byte [ebx + 1]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
xor cl, byte [ebx + 2]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x40b1a0]
mov ecx, eax
xor al, byte [ebx + 3]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
xor cl, byte [ebx + 4]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x40b1a0]
add edi, 0xfffffff8
mov ecx, eax
xor al, byte [ebx + 5]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x40b1a0]
mov eax, ecx
shr eax, 8
xor cl, byte [ebx + 6]
movzx ecx, cl
xor eax, dword [ecx*4 + 0x40b1a0]
mov edx, eax
shr edx, 8
xor al, byte [ebx + 7]
add ebx, 8
movzx eax, al
xor edx, dword [eax*4 + 0x40b1a0]
cmp edi, 7
jbe 0x403836
jmp 0x403bc0
lea esi, [ebx + 1]
mov ecx, edi
dec edi
mov eax, edx
shr eax, 8
xor dl, byte [ebx]
inc ebx
movzx edx, dl
mov dword [ebp - 0x10], edx
mov edx, eax
mov eax, dword [ebp - 0x10]
xor edx, dword [eax*4 + 0x40b1a0]
cmp ecx, 1
je 0x403870
mov ecx, esi
and ecx, 3
inc esi
test ecx, ecx
jne 0x403c66
jmp 0x403870
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
jmp 0x403a75