Function at 0x40a250
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [0x466040]
xor eax, esp
mov dword [esp + 0x18], eax
push ebx
push esi
mov esi, dword [0x466af0]
push edi
mov edi, dword [ebp + 0x10]
mov eax, edi
and eax, 0x40000000
mov dword [esp + 0x14], ecx
mov ebx, dword [esi + 0x12c4]
or eax, 0x20000000
shr eax, 0x1d
mov ecx, eax
mov dword [esp + 0x1c], edx
or ecx, 0x100
test edi, edi
cmovns ecx, eax
mov eax, dword [ebx + 0xc]
and eax, 4
mov dword [esp + 0x20], ecx
or eax, 0x1000103
or edi, eax
cmp dword [ebx + 0x1a0], 0
jne 0x40a2c2
cmp dword [esi + 0x204c], 0
mov eax, 0x23c
je 0x40a2c7
mov eax, 0x20c
movss xmm6, dword [eax + ebx]
xorps xmm2, xmm2
movss xmm7, dword [eax + ebx + 4]
xorps xmm3, xmm3
mov eax, dword [ebp + 8]
xorps xmm4, xmm4
movss xmm5, dword [ebx + 0x100]
subss xmm7, dword [ebx + 0x104]
subss xmm6, xmm5
movss xmm1, dword [eax]
comiss xmm2, xmm1
movss xmm0, dword [eax + 4]
ja 0x40a305
comiss xmm2, xmm0
jbe 0x40a338
cmp dword [ebx + 0x1a0], 0
jne 0x40a31c
cmp dword [esi + 0x204c], 0
mov eax, 0x23c
je 0x40a321
mov eax, 0x20c
movss xmm3, dword [ebx + eax]
movss xmm4, dword [ebx + eax + 4]
subss xmm3, xmm5
subss xmm4, dword [ebx + 0x104]
movss xmm5, dword [0x46068c]
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jp 0x40a34e
movaps xmm1, xmm6
jmp 0x40a35e
comiss xmm2, xmm1
jbe 0x40a35e
addss xmm3, xmm1
movaps xmm1, xmm5
maxss xmm1, xmm3
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jp 0x40a36c
movaps xmm0, xmm7
jmp 0x40a37c
comiss xmm2, xmm0
jbe 0x40a37c
addss xmm4, xmm0
movaps xmm0, xmm5
maxss xmm0, xmm4
mov eax, dword [esi + 0x1cb0]
test al, 2
je 0x40a3af
test byte [esi + 0x1cb8], 1
je 0x40a3af
movss xmm3, dword [esi + 0x1cd0]
comiss xmm3, xmm2
jbe 0x40a39f
movaps xmm1, xmm3
movss xmm3, dword [esi + 0x1cd4]
comiss xmm3, xmm2
jbe 0x40a3af
movaps xmm0, xmm3
movss dword [esi + 0x1cd0], xmm1
or eax, 0x102
movss dword [esi + 0x1cd4], xmm0
mov dword [esi + 0x1cb8], 1
mov dword [esi + 0x1ce8], ecx
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x1cb0], eax
mov eax, dword [ebx + 4]
push edx
test ecx, ecx
je 0x40a3fe
push ecx
push eax
push str._s__s__08X
lea eax, [esp + 0x24]
push 0
push eax
call fcn.004024b0
add esp, 0x18
jmp 0x40a413
push eax
push str._s__08X
lea eax, [esp + 0x20]
push 0
push eax
call fcn.004024b0
add esp, 0x14
movss xmm0, dword [esi + 0xbbc]
xor edx, edx
mov ecx, dword [esp + 0x14]
push edi
movss dword [esp + 0x1c], xmm0
call fcn.0040d4c0
mov edi, dword [esi + 0x12c4]
add esp, 4
movss xmm0, dword [esp + 0x18]
movss dword [esi + 0xbbc], xmm0
mov byte [esp + 0x13], al
cmp word [edi + 0xc8], 1
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], edi
mov dword [edi + 0x80], eax
jne 0x40a472
mov ecx, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
mov dword [ebx + 0x100], ecx
mov dword [ebx + 0x104], edx
mov edi, eax
mov edx, 0x459971
not edi
mov al, 0x23
mov ebx, edi
nop
cmp al, 0x23
jne 0x40a48e
cmp byte [edx], al
jne 0x40a48e
cmp byte [edx + 1], al
cmove ebx, edi
movzx ecx, bl
movzx eax, al
xor ecx, eax
shr ebx, 8
mov al, byte [edx]
inc edx
xor ebx, dword [ecx*4 + 0x45aef0]
test al, al
jne 0x40a480
mov edi, dword [esp + 0x18]
not ebx
cmp dword [esi + 0x1320], ebx
jne 0x40a4be
xor edx, edx
xor ecx, ecx
call fcn.00406910
mov eax, dword [esp + 0x1c]
cmp dword [esi + 0x1dac], eax
jne 0x40a50e
test dword [esp + 0x20], 0x100
jne 0x40a50e
cmp word [edi + 0x15c], 0
jne 0x40a4e7
cmp byte [edi + 0x162], 0
je 0x40a50e
xor edx, edx
mov ecx, edi
call fcn.004100c0
xor dl, dl
mov ecx, edi
call fcn.004168c0
mov edx, edi
mov ecx, ebx
call fcn.00406910
mov eax, dword [esi + 0x1dd8]
mov dword [esi + 0x1344], eax
mov ecx, dword [esp + 0x24]
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00455124
mov esp, ebp
pop ebp
ret