Function at 0x40c3a0
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x45f040]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0xc]
or ecx, 2
mov dword [ebp - 0x18], edx
push ebx
push esi
mov esi, dword [ebp + 0x10]
test esi, 0x40000000
push edi
cmove ecx, dword [ebp + 0xc]
mov edi, dword [0x45f4d8]
mov edx, ecx
or edx, 0x100
test esi, esi
cmovns edx, ecx
mov eax, dword [edi + 0x400c]
mov ecx, edx
and ecx, 0xfffffffb
mov dword [ebp - 0x1c], eax
test dl, 0x10
mov eax, 0x1000001
cmove ecx, edx
mov edx, 0x1000041
mov ebx, ecx
and ebx, 0xfffffff7
test cl, 0x20
cmove ebx, ecx
test bl, 0x70
mov dword [ebp - 0xc], ebx
cmove edx, eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0xc]
and eax, 4
or edx, eax
or edx, esi
mov dword [ebp - 0x10], edx
test bl, 0xc
jne 0x40c42f
or edx, 0x102
mov dword [ebp - 0x10], edx
test bl, bl
jns 0x40c551
movups xmm0, xmmword [edi + 0x39f4]
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 3
push eax
lea ecx, [edi + 0x4a68]
movups xmmword [ebp - 0x2c], xmm0
call fcn.0041ef70
cmp dword [edi + 0x4a64], 3
je 0x40c46f
movups xmm0, xmmword [edi + 0x3a34]
movups xmmword [edi + 0x39f4], xmm0
mov esi, dword [0x45f4d8]
lea eax, [ebp - 0x28]
movss xmm0, dword [edi + 0x3918]
movss dword [ebp - 0xc], xmm0
push eax
movss xmm0, dword [esi + 0x3900]
lea ecx, [esi + 0x4a74]
mov dword [ebp - 0x28], 7
movss dword [ebp - 0x24], xmm0
call fcn.0041ee60
movss xmm0, dword [ebp - 0xc]
lea eax, [ebp - 0x28]
movss dword [esi + 0x3900], xmm0
mov esi, dword [0x45f4d8]
movss xmm0, dword [edi + 0x391c]
movss dword [ebp - 0xc], xmm0
push eax
movss xmm0, dword [esi + 0x3904]
lea ecx, [esi + 0x4a74]
mov dword [ebp - 0x28], 8
movss dword [ebp - 0x24], xmm0
call fcn.0041ee60
movss xmm0, dword [ebp - 0xc]
lea eax, [ebp - 0x28]
movss dword [esi + 0x3904], xmm0
mov esi, dword [0x45f4d8]
push eax
mov dword [ebp - 0x28], 2
movss xmm0, dword [esi + 0x38dc]
lea ecx, [esi + 0x4a74]
movss xmm1, dword [esi + 0x38e0]
movss dword [ebp - 0x24], xmm0
movss dword [ebp - 0x20], xmm1
call fcn.0041ee60
mov eax, dword [edi + 0x3910]
or ebx, 3
mov ecx, dword [edi + 0x3914]
mov dword [esi + 0x38dc], eax
mov dword [esi + 0x38e0], ecx
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0xc], ebx
or esi, 4
jmp 0x40c554
mov esi, dword [ebp - 0x10]
mov ecx, dword [0x45f4d8]
mov dword [ebp - 0x10], ebx
mov edx, dword [ecx + 0x400c]
cmp dword [edx + 0x1a0], 0
jne 0x40c57a
cmp dword [ecx + 0x4d94], 0
mov eax, 0x23c
je 0x40c57f
mov eax, 0x20c
movss xmm5, dword [edx + eax]
xorps xmm0, xmm0
movss xmm7, dword [edx + eax + 4]
movss xmm6, dword [edx + 0x100]
subss xmm5, xmm6
subss xmm7, dword [edx + 0x104]
test bl, 0x20
je 0x40c5a9
xorps xmm7, xmm7
test bl, 0x10
je 0x40c5b1
xorps xmm5, xmm5
mov eax, dword [ebp + 8]
xorps xmm3, xmm3
xorps xmm4, xmm4
movss xmm2, dword [eax]
comiss xmm0, xmm2
movss xmm1, dword [eax + 4]
ja 0x40c5cd
comiss xmm0, xmm1
jbe 0x40c600
cmp dword [edx + 0x1a0], 0
jne 0x40c5e4
cmp dword [ecx + 0x4d94], 0
mov eax, 0x23c
je 0x40c5e9
mov eax, 0x20c
movss xmm3, dword [edx + eax]
movss xmm4, dword [edx + eax + 4]
subss xmm3, xmm6
subss xmm4, dword [edx + 0x104]
movss xmm6, dword [0x45ce00]
ucomiss xmm2, xmm0
lahf
test ah, 0x44
jp 0x40c616
movaps xmm2, xmm5
jmp 0x40c626
comiss xmm0, xmm2
jbe 0x40c626
addss xmm3, xmm2
movaps xmm2, xmm6
maxss xmm2, xmm3
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x40c634
movaps xmm1, xmm7
jmp 0x40c644
comiss xmm0, xmm1
jbe 0x40c644
addss xmm4, xmm1
movaps xmm1, xmm6
maxss xmm1, xmm4
test byte [edi + 0x49f8], 2
je 0x40c68c
test byte [edi + 0x4a00], 1
je 0x40c68c
movss xmm3, dword [edi + 0x4a18]
comiss xmm3, xmm0
jbe 0x40c666
movaps xmm2, xmm3
mov ebx, dword [ebp - 0x10]
and ebx, 0xfffffffb
comiss xmm3, xmm0
movss xmm3, dword [edi + 0x4a1c]
cmovbe ebx, dword [ebp - 0x10]
comiss xmm3, xmm0
mov dword [ebp - 0xc], ebx
jbe 0x40c68c
and ebx, 0xfffffff7
movaps xmm1, xmm3
mov dword [ebp - 0xc], ebx
or dword [ecx + 0x49f8], 2
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
movss dword [ecx + 0x4a18], xmm2
movss dword [ecx + 0x4a1c], xmm1
mov dword [ecx + 0x4a00], 1
or dword [edi + 0x49f8], 0x100
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x4a30], ebx
mov eax, dword [eax + 4]
push ecx
test edx, edx
je 0x40c6e5
push edx
push eax
push str._s__s__08X
lea eax, [ebp - 0x10]
push 0
push eax
call fcn.004028f0
add esp, 0x18
jmp 0x40c6f9
push eax
push str._s__08X
lea eax, [ebp - 0x10]
push 0
push eax
call fcn.004028f0
add esp, 0x14
movss xmm0, dword [edi + 0x3904]
movss dword [ebp - 0x14], xmm0
test bl, 1
jne 0x40c715
mov dword [edi + 0x3904], 0
mov ecx, dword [ebp - 0x10]
xor edx, edx
push esi
call fcn.0040f800
movss xmm0, dword [ebp - 0x14]
add esp, 4
mov byte [ebp - 5], al
movss dword [edi + 0x3904], xmm0
test bl, bl
jns 0x40c74b
mov ecx, 3
call fcn.004042a0
mov ecx, 1
call fcn.00404230
mov esi, dword [edi + 0x400c]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x14], esi
cmp word [esi + 0xc8], 1
mov dword [esi + 0x80], edx
jne 0x40c77c
mov ebx, dword [ebp - 0x1c]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov dword [ebx + 0x100], eax
mov dword [ebx + 0x104], ecx
mov esi, edx
mov al, 0x23
not esi
mov edx, 0x456789
mov ebx, esi
nop dword [eax]
cmp al, 0x23
jne 0x40c79e
cmp byte [edx], al
jne 0x40c79e
cmp byte [edx + 1], al
cmove ebx, esi
movzx ecx, bl
movzx eax, al
xor ecx, eax
shr ebx, 8
mov al, byte [edx]
inc edx
xor ebx, dword [ecx*4 + 0x457de0]
test al, al
jne 0x40c790
mov esi, dword [ebp - 0x14]
not ebx
cmp dword [edi + 0x4068], ebx
jne 0x40c7cd
xor edx, edx
xor ecx, ecx
call fcn.00408ae0
mov ecx, dword [ebp - 0x18]
cmp dword [edi + 0x4af4], ecx
jne 0x40c81b
test dword [ebp - 0xc], 0x100
jne 0x40c81b
cmp word [esi + 0x15c], 0
jne 0x40c7f4
cmp byte [esi + 0x162], 0
je 0x40c81b
xor edx, edx
mov ecx, esi
call fcn.00412390
xor dl, dl
mov ecx, esi
call fcn.00419200
mov edx, esi
mov ecx, ebx
call fcn.00408ae0
mov eax, dword [edi + 0x4b20]
mov dword [edi + 0x408c], eax
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 5]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00453924
mov esp, ebp
pop ebp
ret