Function at 0x416740
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, dword [0x438490]
xor eax, eax
push edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], eax
mov edx, dword [esi + 0x49cc]
sub edx, 1
mov byte [ebp - 8], al
js 0x41678f
mov eax, dword [esi + 0x49d4]
lea ecx, [edx + edx*4]
lea eax, [eax + ecx*8]
add eax, 4
mov edi, dword [eax]
test edi, edi
je 0x416787
test dword [edi + 0xc], 0x8000000
jne 0x416832
sub eax, 0x28
sub edx, 1
jns 0x416774
xor edi, edi
cmp dword [esi + 0x4bb4], 0
je 0x4167e3
cmp dword [esi + 0x4bb0], 0
jne 0x4167e3
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [0x435a88]
movss xmm1, dword [esi + 0x4bc0]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, dword [esi + 0x4bd8]
maxss xmm1, xmm0
movss dword [esi + 0x4bc0], xmm1
jb 0x4167e3
comiss xmm0, xmm1
jb 0x4167e3
mov dword [esi + 0x4bb4], 0
or ebx, 0xffffffff
mov edx, 0x430f05
mov al, 0x23
or esi, 0xffffffff
cmp al, 0x23
jne 0x4167fe
cmp byte [edx], al
jne 0x4167fe
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 + 0x431358]
test al, al
jne 0x4167f0
mov esi, dword [ebp - 0xc]
not ebx
mov ecx, dword [esi + 8]
mov al, cl
test cl, 2
je 0x416841
test byte [esi + 0xc], 1
je 0x416841
mov byte [ebp - 3], 1
jmp 0x416847
mov dword [esi + 0x4bb0], 0
jmp 0x416791
mov byte [ebp - 3], 0
mov cl, al
and ecx, 0xffffff01
mov dword [ebp - 0x18], ecx
test edi, edi
jne 0x416892
mov eax, dword [esi + 0x4ba8]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x416892
push 0x1101
mov edx, ebx
mov ecx, eax
call fcn.00410690
add esp, 4
test al, al
je 0x416892
mov ecx, dword [ebp - 0x14]
mov edx, ebx
push 0x1101
call fcn.00412290
add esp, 4
test al, al
je 0x416892
mov byte [ebp - 1], 1
jmp 0x41689a
mov byte [ebp - 1], 0
test edi, edi
jne 0x4168d8
mov eax, dword [esi + 0x4bac]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4168d8
push 0x1101
mov edx, ebx
mov ecx, eax
call fcn.00410690
add esp, 4
test al, al
je 0x4168d8
mov ecx, dword [ebp - 0x14]
mov edx, ebx
push 0x1101
call fcn.00412290
add esp, 4
test al, al
je 0x4168d8
mov byte [ebp - 2], 1
jmp 0x4168e0
mov byte [ebp - 2], 0
test edi, edi
jne 0x41690b
cmp byte [ebp - 3], 0
je 0x41690b
cmp dword [esi + 0x4bb0], 0
jne 0x41690b
push 0
xor edx, edx
mov ecx, 0x279
call fcn.00410790
add esp, 4
test al, al
je 0x41690b
mov cl, 1
mov byte [ebp - 3], cl
jmp 0x416914
xor cl, cl
mov byte [ebp - 3], cl
test edi, edi
jne 0x41692d
cmp dword [esi + 0x4bb0], 0
jne 0x41692d
cmp byte [ebp - 1], 0
jne 0x416929
cmp byte [ebp - 2], 0
je 0x41692d
mov al, 1
jmp 0x41692f
xor al, al
mov byte [ebp - 4], al
test cl, cl
jne 0x41693e
test al, al
je 0x416a80
mov eax, dword [esi + 0x4a00]
test eax, eax
jne 0x416969
mov ecx, dword [esi + 0x3f4c]
mov edx, 0x80000001
push 0xffffffffffffffff
dec ecx
call fcn.00416630
add esp, 4
test eax, eax
je 0x416a80
mov cl, byte [ebp - 3]
mov eax, dword [eax + 0x308]
mov dword [esi + 0x4bb4], eax
mov dword [esi + 0x4bb0], eax
movzx eax, byte [ebp - 4]
xor eax, 1
mov dword [esi + 0x4bc0], 0
add eax, 2
mov dword [esi + 0x4bbc], 0
cmp byte [ebp - 1], 0
mov dword [esi + 0x4bd0], 0
mov dword [esi + 0x4bd4], 0
mov dword [esi + 0x4bc8], 0
mov dword [esi + 0x4bcc], 0
mov byte [esi + 0x4bc4], cl
mov dword [esi + 0x4a30], eax
jne 0x4169dd
cmp byte [ebp - 2], 0
je 0x416a80
mov edi, dword [esi + 0x4bac]
or edi, dword [esi + 0x4ba8]
mov ecx, dword [0x438490]
test edi, 0x1000
je 0x416a0c
mov edx, 0x1000
call fcn.00403d20
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x2000
je 0x416a29
mov edx, 0x2000
call fcn.00403d20
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x4000
je 0x416a46
mov edx, 0x4000
call fcn.00403d20
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x8000
je 0x416a63
mov edx, 0x8000
call fcn.00403d20
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x800
je 0x416a80
mov edx, 0x800
call fcn.00403d20
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
cmp dword [esi + 0x4bb0], 0
xorps xmm6, xmm6
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x4bbc]
movss xmm1, dword [0x4359f8]
movss xmm2, dword [0x4359ec]
movss xmm5, dword [0x435a48]
movss dword [esi + 0x4bbc], xmm0
je 0x416c07
cmp dword [esi + 0x4a30], 3
jne 0x416c07
subss xmm0, xmm1
divss xmm0, xmm2
comiss xmm6, xmm0
jbe 0x416adc
xorps xmm1, xmm1
jmp 0x416ae3
movaps xmm1, xmm5
minss xmm1, xmm0
movss xmm7, dword [esi + 0x4bc0]
xor edx, edx
maxss xmm7, xmm1
mov ecx, 0x281
push 1
movss dword [esi + 0x4bc0], xmm7
call fcn.00410790
add esp, 4
xor edx, edx
mov ecx, 0x282
mov bl, al
push 1
call fcn.00410790
movzx ecx, al
add esp, 4
movzx eax, bl
sub eax, ecx
je 0x416b39
mov ecx, eax
call fcn.004166a0
mov dword [esi + 0x4bc0], 0x3f800000
movaps xmm7, xmm5
mov ebx, dword [0x438490]
mov edx, 0x279
mov ecx, ebx
call fcn.004101f0
cmp byte [eax], 0
je 0x416b60
mov edx, 0x279
call fcn.00403d20
cmp byte [eax + 8], 0
je 0x416b9c
comiss xmm5, xmm7
seta al
and byte [esi + 0x4bc4], al
je 0x416b7d
cmp dword [esi + 0x4a00], 0
je 0x416b92
mov byte [ebp - 8], 1
jmp 0x416b92
mov eax, dword [esi + 0x4bb0]
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 2]
mov byte [ebp - 2], al
mov al, byte [ebp - 1]
mov byte [ebp - 1], al
mov dword [esi + 0x4bb0], 0
movss xmm2, dword [0x4359ec]
movss xmm1, dword [0x4359f8]
cmp dword [esi + 0x4bb0], 0
je 0x416c61
cmp dword [esi + 0x4a30], 2
jne 0x416c61
movss xmm0, dword [esi + 0x4bbc]
mov edx, 0xf800
mov eax, dword [esi + 0x4ba8]
subss xmm0, xmm1
test eax, eax
mov ecx, edx
cmovne ecx, eax
mov eax, dword [esi + 0x4bac]
test eax, eax
divss xmm0, xmm2
cmovne edx, eax
and edx, ecx
mov ecx, edx
and ecx, 0xf800
comiss xmm6, xmm0
jbe 0x416c0f
xorps xmm5, xmm5
jmp 0x416c13
mov ebx, dword [0x438490]
jmp 0x416bac
minss xmm5, xmm0
movss xmm0, dword [esi + 0x4bc0]
mov al, byte [ebp - 1]
maxss xmm0, xmm5
movss dword [esi + 0x4bc0], xmm0
test al, al
jne 0x416c4f
cmp byte [ebp - 2], al
jne 0x416c4f
mov eax, dword [esi + 0xe20]
and eax, edx
and eax, 0xf800
cmp eax, ecx
je 0x416c61
mov eax, dword [esi + 0x4bb0]
mov dword [ebp - 0x10], eax
jmp 0x416c61
movzx ecx, al
xor ecx, 1
lea ecx, [ecx*2 - 1]
call fcn.004166a0
cmp byte [ebp - 0x18], 0
je 0x416c8e
push 0
or edx, 0xffffffff
mov ecx, 0x4000
call fcn.00410790
add esp, 4
test al, al
je 0x416c8e
mov byte [esi + 0x4bc4], 1
mov dword [esi + 0x4a30], 2
cmp byte [esi + 0x4bc4], 0
mov edi, 1
je 0x416dc7
cmp dword [esi + 0x4a30], 2
jne 0x416dc7
cmp dword [esi + 0x3898], 0
jg 0x416ce2
cmp byte [esi + 0xe1c], 0
jne 0x416ce2
cmp byte [esi + 0xe1d], 0
jne 0x416ce2
cmp byte [esi + 0xe1f], 0
jne 0x416ce2
mov edx, 0x4000
mov ecx, ebx
call fcn.00403d20
cmp dword [eax], 0xffffffff
je 0x416ce9
mov byte [esi + 0x4bc4], 0
mov edx, 0x4000
mov ecx, ebx
call fcn.004101f0
comiss xmm6, dword [eax + 8]
ja 0x416d9f
cmp byte [eax], 0
jne 0x416d9f
mov edx, 0x4000
call fcn.00403d20
cmp byte [eax + 8], 0
jne 0x416d9f
cmp byte [esi + 0x4bc4], 0
je 0x416d9f
cmp dword [esi + 0x3fd8], 0
je 0x416d37
cmp byte [esi + 0x3fe5], 0
je 0x416d9f
lea eax, [esi + 0x37c8]
test eax, eax
jne 0x416d47
lea eax, [ebx + 0xe00]
movss xmm0, dword [eax]
movss xmm1, dword [0x435af4]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x416d66
comiss xmm2, xmm1
jb 0x416d66
mov cl, 1
jmp 0x416d68
xor cl, cl
lea eax, [esi + 0xe00]
test eax, eax
jne 0x416d78
lea eax, [ebx + 0xe00]
movss xmm0, dword [eax]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x416d8f
comiss xmm2, xmm1
jb 0x416d8f
mov al, 1
jmp 0x416d91
xor al, al
mov edx, dword [ebp - 8]
cmp al, cl
movzx edx, dl
cmove edx, edi
mov dword [ebp - 8], edx
mov edx, 0x4000
mov ecx, ebx
call fcn.004101f0
cmp byte [eax], 0
je 0x416dc0
mov edx, 0x4000
call fcn.00403d20
cmp byte [eax + 8], 0
je 0x416dc7
mov byte [esi + 0x4bc4], 0
mov eax, dword [esi + 0x4bb0]
test eax, eax
je 0x416f5f
test byte [eax + 0xc], 4
jne 0x416f5f
mov eax, dword [esi + 0x4a30]
cmp eax, 2
jne 0x416e22
cmp byte [esi + 0xe1d], 0
jne 0x416f5f
mov edx, 0x203
mov ecx, ebx
call fcn.004101f0
mov edx, 0x201
mov edi, eax
call fcn.004101f0
mov edx, 0x202
mov esi, eax
call fcn.004101f0
mov edx, 0x204
jmp 0x416e54
cmp eax, 3
jne 0x416f5f
mov edx, 0x289
mov ecx, ebx
call fcn.004101f0
mov edx, 0x287
mov edi, eax
call fcn.004101f0
mov edx, 0x288
mov esi, eax
call fcn.004101f0
mov edx, 0x28a
movss xmm2, dword [eax + 0xc]
mov ecx, ebx
subss xmm2, dword [esi + 0xc]
call fcn.004101f0
ucomiss xmm2, xmm6
movss xmm3, dword [eax + 0xc]
subss xmm3, dword [edi + 0xc]
lahf
test ah, 0x44
jp 0x416e85
ucomiss xmm3, xmm6
lahf
test ah, 0x44
jnp 0x416f57
mov esi, dword [ebp - 0xc]
movss xmm1, dword [esi + 0x3c]
movss xmm0, dword [esi + 0x18]
minss xmm1, dword [esi + 0x40]
mulss xmm0, dword [0x435ac8]
mov byte [esi + 0x4a43], 1
mulss xmm1, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
addss xmm2, dword [esi + 0x4bc8]
addss xmm3, dword [esi + 0x4bcc]
cvttss2si eax, xmm2
movss dword [esi + 0x4bc8], xmm2
movss dword [esi + 0x4bcc], xmm3
movd xmm5, eax
cvtdq2ps xmm5, xmm5
cvttss2si eax, xmm3
ucomiss xmm5, xmm6
movd xmm4, eax
cvtdq2ps xmm4, xmm4
lahf
test ah, 0x44
jp 0x416efa
ucomiss xmm4, xmm6
lahf
test ah, 0x44
jnp 0x416f5a
mov eax, dword [esi + 0x4bb0]
lea edx, [ebp - 0x1c]
movaps xmm0, xmm5
push 1
mov ecx, dword [eax + 0x308]
addss xmm0, dword [ecx + 0x18]
movss dword [ebp - 0x1c], xmm0
movaps xmm0, xmm4
addss xmm0, dword [ecx + 0x1c]
movss dword [ebp - 0x18], xmm0
call fcn.0040fee0
movss xmm0, dword [esi + 0x4bc8]
add esp, 4
subss xmm0, xmm5
movss dword [esi + 0x4bc8], xmm0
movss xmm0, dword [esi + 0x4bcc]
subss xmm0, xmm4
movss dword [esi + 0x4bcc], xmm0
jmp 0x416f5a
mov esi, dword [ebp - 0xc]
mov edi, 1
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x416fde
mov eax, dword [esi + 0x4a00]
test eax, eax
je 0x416f78
cmp ebx, dword [eax + 0x308]
je 0x416fd4
xor edx, edx
xor ecx, ecx
call fcn.00407260
mov eax, dword [0x438490]
xor dl, dl
mov ecx, ebx
mov word [eax + 0x4a41], 1
mov byte [eax + 0x4a43], 1
call fcn.00412e70
mov edx, edi
mov ecx, ebx
call fcn.0040fae0
mov edi, dword [esi + 0x4a00]
cmp dword [edi + 0x31c], 0
jne 0x416fc0
xor dl, dl
mov ecx, edi
call fcn.00414490
cmp word [edi + 0x156], 2
jne 0x416fd4
mov dword [esi + 0x4a34], 1
mov dword [esi + 0x4bb0], 0
cmp byte [ebp - 8], 0
je 0x4170a2
cmp dword [esi + 0x4a00], 0
je 0x4170a2
xor edx, edx
xor ecx, ecx
call fcn.00407260
mov edi, dword [esi + 0x4a00]
cmp dword [edi + 0x300], 0
lea ecx, [edi + 0x300]
je 0x41703c
test byte [edi + 0x154], 2
jne 0x41703c
mov eax, dword [edi + 0xc]
and eax, 0x15000000
cmp eax, 0x1000000
jne 0x41703c
mov edi, dword [ecx]
cmp dword [edi + 0x300], 0
lea ecx, [edi + 0x300]
jne 0x417013
mov ebx, dword [esi + 0x4a00]
cmp edi, ebx
je 0x417055
xor edx, edx
mov ecx, edi
call fcn.0040fae0
mov dword [edi + 0x318], ebx
mov eax, dword [esi + 0x4a00]
test byte [eax + 0x154], 2
je 0x41706f
mov ecx, dword [esi + 0x4a34]
xor ecx, 1
jmp 0x417071
xor ecx, ecx
cmp ecx, dword [esi + 0x4a34]
je 0x4170a2
cmp ecx, 1
jne 0x417088
mov dword [eax + 0x320], 0
call fcn.004143e0
mov eax, dword [0x438490]
mov word [eax + 0x4a41], 1
mov byte [eax + 0x4a43], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret