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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x44c00c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [0x44c448]
mov eax, ecx
push edi
mov dword [ebp - 0x10], eax
cmp byte [esi + 0x4b1b], 0
mov edi, dword [esi + 0x4004]
je 0x40a29e
cmp byte [esi + 0x4b1a], 0
jne 0x40a29e
test eax, 0x800
jne 0x40a29e
test dword [esi + 0x499c], 0x400
je 0x40a254
test eax, 0x400
je 0x40a370
mov ecx, dword [esi + 0x4ad4]
mov ebx, dword [esi + 0x4998]
cmp ecx, ebx
jne 0x40a370
test ecx, ecx
je 0x40a370
test eax, 0x1000
je 0x40a3c1
mov edx, dword [esi + 0x3d48]
mov ecx, edx
and ecx, 0xfffe3fff
and eax, 0x1c000
mov eax, dword [ebp - 0x10]
cmove ecx, edx
or eax, ecx
mov dword [ebp - 0x10], eax
jmp 0x40a3c1
mov ebx, dword [esi + 0x49a0]
test bl, 1
je 0x40a370
test eax, 0x1000
je 0x40a2d2
mov edx, dword [esi + 0x3d44]
mov ecx, edx
and ecx, 0xfffe3fff
and eax, 0x1c000
mov eax, dword [ebp - 0x10]
cmove ecx, edx
or eax, ecx
mov dword [ebp - 0x10], eax
cmp dword [esi + 0x4008], edi
je 0x40a2e9
test bl, bl
js 0x40a2e9
test eax, 0x200
je 0x40a370
mov ebx, dword [esi + 0x4998]
test al, al
js 0x40a30f
mov ecx, dword [esi + 0x4058]
test ecx, ecx
je 0x40a30f
cmp ecx, ebx
je 0x40a30f
cmp byte [esi + 0x4065], 0
jne 0x40a30f
cmp ecx, dword [edi + 0x7c]
jne 0x40a370
mov edx, dword [esi + 0x4ad0]
test edx, edx
je 0x40a383
mov edx, dword [edx + 0x314]
test edx, edx
je 0x40a383
cmp byte [edx + 0xbb], 0
je 0x40a383
mov ecx, dword [edi + 0x314]
cmp edx, ecx
je 0x40a383
test dword [edx + 0xc], 0x8000000
jne 0x40a34c
test dword [edx + 0xc], 0x4000000
je 0x40a383
test al, 0x20
jne 0x40a383
cmp dword [ecx + 0x314], edx
je 0x40a383
cmp ecx, edx
je 0x40a383
mov ecx, dword [ecx + 0x310]
test ecx, ecx
jne 0x40a354
mov ecx, dword [esi + 0x499c]
test ecx, 0x2000
jne 0x40a389
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00441be2
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0x499c]
test ecx, 0x400
je 0x40a398
test eax, 0x400
je 0x40a370
cmp ebx, dword [edi + 0x7c]
jne 0x40a3a6
cmp byte [edi + 0xbc], 0
jne 0x40a370
test ecx, 0x4000
je 0x40a3c1
test ebx, ebx
je 0x40a3c1
test eax, 0x100
jne 0x40a3c1
cmp dword [esi + 0x4048], ebx
jne 0x40a370
test eax, 0x10000
je 0x40a3d2
movss xmm1, dword [esi + 0x3d40]
jmp 0x40a3e1
test eax, 0x8000
je 0x40a3eb
movss xmm1, dword [esi + 0x3d3c]
xorps xmm0, xmm0
comiss xmm1, xmm0
ja 0x40a3f9
jmp 0x40a3ee
xorps xmm1, xmm1
test eax, 0x2000
je 0x40a49f
test ebx, ebx
jne 0x40a460
movss xmm0, dword [esi + 0x49a4]
lea edx, [ebp - 0xc]
subss xmm0, dword [edi + 0x110]
mov ecx, dword [edi + 0xf4]
mov eax, dword [edi + 0xfc]
movss dword [ebp - 0xc], xmm0
movss xmm0, dword [esi + 0x49a8]
subss xmm0, dword [edi + 0x114]
mov ebx, dword [eax + ecx*4 - 4]
mov edi, 8
not ebx
movss dword [ebp - 8], xmm0
movzx eax, byte [edx]
lea edx, [edx + 1]
movzx ecx, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [ecx*4 + 0x444d48]
sub edi, 1
jne 0x40a441
mov eax, dword [ebp - 0x10]
not ebx
test eax, 0x20000
je 0x40a479
cmp dword [esi + 0x4ea0], ebx
je 0x40a479
mov dword [esi + 0x4ea4], 0
mov dword [esi + 0x4e9c], ebx
test eax, 0x2000
je 0x40a492
cmp dword [esi + 0x4eac], ebx
jne 0x40a370
comiss xmm1, dword [esi + 0x4ea4]
ja 0x40a370
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441be2
mov esp, ebp
pop ebp
ret