Function at 0x417760
Capabilities:
Hash data with crc32

Disassembly:
sub esp, 0x2c
mov eax, dword [0x48b040]
xor eax, esp
mov dword [esp + 0x24], eax
push ebx
push ebp
mov ebp, dword [0x48d2c8]
xor eax, eax
push esi
push edi
mov dword [esp + 0x1c], eax
mov edx, dword [ebp + 0x4a08]
sub edx, 1
mov byte [esp + 0x18], al
js 0x4177bb
mov eax, dword [ebp + 0x4a10]
lea ecx, [edx + edx*4]
lea eax, [eax + ecx*8]
add eax, 4
nop dword [eax]
mov edi, dword [eax]
test edi, edi
je 0x4177b3
test dword [edi + 0xc], 0x8000000
jne 0x417865
sub eax, 0x28
sub edx, 1
jns 0x4177a0
xor edi, edi
cmp dword [ebp + 0x4c04], 0
je 0x41780f
cmp dword [ebp + 0x4c00], 0
jne 0x41780f
movss xmm0, dword [ebp + 0x18]
mulss xmm0, dword [0x4834f8]
movss xmm1, dword [ebp + 0x4c10]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, dword [ebp + 0x4c2c]
maxss xmm1, xmm0
movss dword [ebp + 0x4c10], xmm1
jb 0x41780f
comiss xmm0, xmm1
jb 0x41780f
mov dword [ebp + 0x4c04], 0
or ebx, 0xffffffff
mov edx, 0x47cb7d
mov al, 0x23
or esi, 0xffffffff
nop dword [eax]
cmp al, 0x23
jne 0x41782e
cmp byte [edx], al
jne 0x41782e
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 + 0x47cfe8]
test al, al
jne 0x417820
mov eax, dword [ebp + 8]
not ebx
mov esi, dword [0x48d2c8]
mov cl, al
test al, 2
je 0x417874
test byte [ebp + 0xc], 1
je 0x417874
mov byte [esp + 0x12], 1
jmp 0x41787b
mov dword [ebp + 0x4c00], 0
jmp 0x4177bd
mov byte [esp + 0x12], 0
mov al, cl
and eax, 0xffffff01
mov dword [esp + 0x28], eax
test edi, edi
jne 0x4178f7
mov ecx, dword [ebp + 0x4bf8]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x4178f7
mov eax, ebx
mov dword [esp + 0x14], eax
test ebx, ebx
je 0x4178a5
cmp ebx, 0xffffffff
jne 0x4178b8
cmp ebx, 0xffffffff
je 0x4178ae
test ebx, ebx
jne 0x4178b8
mov eax, dword [esi + 0x48d8]
mov dword [esp + 0x14], eax
push 0x11001
mov edx, eax
call fcn.00410b00
add esp, 4
test al, al
je 0x4178f1
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
push 0x11021
call fcn.00412920
add esp, 4
test al, al
je 0x4178f1
mov esi, dword [0x48d2c8]
mov byte [esp + 0x10], 1
jmp 0x417900
mov esi, dword [0x48d2c8]
mov byte [esp + 0x10], 0
test edi, edi
jne 0x41796f
mov ecx, dword [ebp + 0x4bfc]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x41796f
mov eax, ebx
mov dword [esp + 0x14], eax
test ebx, ebx
je 0x41791d
cmp ebx, 0xffffffff
jne 0x417930
cmp ebx, 0xffffffff
je 0x417926
test ebx, ebx
jne 0x417930
mov eax, dword [esi + 0x48d8]
mov dword [esp + 0x14], eax
push 0x11001
mov edx, eax
call fcn.00410b00
add esp, 4
test al, al
je 0x417969
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
push 0x11021
call fcn.00412920
add esp, 4
test al, al
je 0x417969
mov esi, dword [0x48d2c8]
mov byte [esp + 0x11], 1
jmp 0x417978
mov esi, dword [0x48d2c8]
mov byte [esp + 0x11], 0
test edi, edi
jne 0x4179a5
cmp byte [esp + 0x12], 0
je 0x4179a5
cmp dword [ebp + 0x4c00], 0
jne 0x4179a5
push 0
xor edx, edx
mov ecx, 0x279
call fcn.00410d80
add esp, 4
test al, al
je 0x4179a5
mov cl, 1
mov byte [esp + 0x12], cl
jmp 0x4179af
xor cl, cl
mov byte [esp + 0x12], cl
test edi, edi
jne 0x4179ca
cmp dword [ebp + 0x4c00], 0
jne 0x4179ca
cmp byte [esp + 0x10], 0
jne 0x4179c6
cmp byte [esp + 0x11], 0
je 0x4179ca
mov al, 1
jmp 0x4179cc
xor al, al
mov byte [esp + 0x13], al
test cl, cl
jne 0x4179dc
test al, al
je 0x417b26
mov eax, dword [ebp + 0x4a38]
test eax, eax
jne 0x417a08
mov ecx, dword [ebp + 0x3f4c]
mov edx, 0x80000001
push 0xffffffffffffffff
dec ecx
call fcn.00417650
add esp, 4
test eax, eax
je 0x417b26
mov cl, byte [esp + 0x12]
mov eax, dword [eax + 0x30c]
mov dword [ebp + 0x4c04], eax
mov dword [ebp + 0x4c00], eax
movzx eax, byte [esp + 0x13]
xor eax, 1
mov dword [ebp + 0x4c10], 0
add eax, 2
mov dword [ebp + 0x4c0c], 0
cmp byte [esp + 0x10], 0
mov dword [ebp + 0x4c24], 0
mov dword [ebp + 0x4c28], 0
mov dword [ebp + 0x4c1c], 0
mov dword [ebp + 0x4c20], 0
mov byte [ebp + 0x4c14], cl
mov dword [ebp + 0x4a7c], eax
jne 0x417a7f
cmp byte [esp + 0x11], 0
je 0x417b26
mov edi, dword [ebp + 0x4bfc]
or edi, dword [ebp + 0x4bf8]
test edi, 0x1000
je 0x417aaa
mov edx, 0x1000
mov ecx, esi
call fcn.00403110
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x2000
je 0x417ac9
mov edx, 0x2000
mov ecx, esi
call fcn.00403110
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x4000
je 0x417ae8
mov edx, 0x4000
mov ecx, esi
call fcn.00403110
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x8000
je 0x417b07
mov edx, 0x8000
mov ecx, esi
call fcn.00403110
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x800
je 0x417b26
mov edx, 0x800
mov ecx, esi
call fcn.00403110
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
cmp dword [ebp + 0x4c00], 0
movss xmm0, dword [ebp + 0x18]
addss xmm0, dword [ebp + 0x4c0c]
movss xmm1, dword [0x48344c]
movss xmm2, dword [0x48343c]
movss xmm6, dword [0x4834a4]
movss dword [ebp + 0x4c0c], xmm0
je 0x417c55
cmp dword [ebp + 0x4a7c], 3
jne 0x417c55
subss xmm0, xmm1
xorps xmm1, xmm1
divss xmm0, xmm2
comiss xmm1, xmm0
ja 0x417b84
movaps xmm1, xmm6
minss xmm1, xmm0
movss xmm7, dword [ebp + 0x4c10]
xor edx, edx
maxss xmm7, xmm1
mov ecx, 0x281
push 1
movss dword [ebp + 0x4c10], xmm7
call fcn.00410d80
add esp, 4
xor edx, edx
mov ecx, 0x282
mov bl, al
push 1
call fcn.00410d80
movzx ecx, al
add esp, 4
movzx eax, bl
sub eax, ecx
je 0x417bda
mov ecx, eax
call fcn.004176c0
mov dword [ebp + 0x4c10], 0x3f800000
movaps xmm7, xmm6
mov ebx, dword [0x48d2c8]
mov edx, 0x279
mov ecx, ebx
call fcn.004105f0
cmp byte [eax], 0
je 0x417c01
mov edx, 0x279
call fcn.00403110
cmp byte [eax + 8], 0
je 0x417c43
comiss xmm6, xmm7
seta al
and byte [ebp + 0x4c14], al
je 0x417c1f
cmp dword [ebp + 0x4a38], 0
je 0x417c39
mov byte [esp + 0x18], 1
jmp 0x417c39
mov eax, dword [ebp + 0x4c00]
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x11]
mov byte [esp + 0x11], al
mov al, byte [esp + 0x10]
mov byte [esp + 0x10], al
mov dword [ebp + 0x4c00], 0
movss xmm1, dword [0x48344c]
movss xmm2, dword [0x48343c]
jmp 0x417c5b
mov ebx, dword [0x48d2c8]
cmp dword [ebp + 0x4c00], 0
xorps xmm7, xmm7
je 0x417d0e
cmp dword [ebp + 0x4a7c], 2
jne 0x417d0e
movss xmm0, dword [ebp + 0x4c0c]
mov edx, 0xf800
mov eax, dword [ebp + 0x4bf8]
subss xmm0, xmm1
test eax, eax
mov ecx, edx
cmovne ecx, eax
mov eax, dword [ebp + 0x4bfc]
test eax, eax
divss xmm0, xmm2
cmovne edx, eax
and edx, ecx
mov ecx, edx
and ecx, 0xf800
comiss xmm7, xmm0
jbe 0x417cb9
xorps xmm6, xmm6
jmp 0x417cbd
minss xmm6, xmm0
movss xmm0, dword [ebp + 0x4c10]
mov al, byte [esp + 0x10]
maxss xmm0, xmm6
movss dword [ebp + 0x4c10], xmm0
test al, al
jne 0x417cfc
cmp byte [esp + 0x11], al
jne 0x417cfc
mov eax, dword [ebp + 0xe20]
and eax, edx
and eax, 0xf800
cmp eax, ecx
je 0x417d0e
mov eax, dword [ebp + 0x4c00]
mov dword [esp + 0x1c], eax
jmp 0x417d0e
movzx ecx, al
xor ecx, 1
lea ecx, [ecx*2 - 1]
call fcn.004176c0
mov eax, dword [esp + 0x28]
lea esi, [esp + 0x2c]
mov dword [esp + 0x2c], 0x211
mov dword [esp + 0x30], 0x215
mov edi, dword [esi]
test al, al
je 0x417d43
push 0
or edx, 0xffffffff
mov ecx, edi
call fcn.00410d80
add esp, 4
test al, al
jne 0x417d50
mov eax, dword [esp + 0x28]
add esi, 4
lea ecx, [esp + 0x34]
cmp esi, ecx
jne 0x417d26
jmp 0x417d67
mov byte [ebp + 0x4c14], 1
mov dword [ebp + 0x4c18], edi
mov dword [ebp + 0x4a7c], 2
cmp byte [ebp + 0x4c14], 0
mov edi, 1
je 0x417f84
cmp dword [ebp + 0x4a7c], 2
jne 0x417f84
cmp dword [ebp + 0x3898], 0
jg 0x417daa
cmp byte [ebp + 0xe1c], 0
jne 0x417daa
cmp byte [ebp + 0xe1d], 0
jne 0x417daa
cmp byte [ebp + 0xe1f], 0
je 0x417db1
mov byte [ebp + 0x4c14], 0
mov edx, dword [ebp + 0x4c18]
cmp edx, 0x200
jl 0x417dc7
cmp edx, 0x29a
jl 0x417def
cmp edx, 0x1000
je 0x417def
cmp edx, 0x2000
je 0x417def
cmp edx, 0x4000
je 0x417def
cmp edx, 0x8000
je 0x417def
cmp edx, 0x800
jne 0x417e18
cmp byte [ebx + 0x48cc], 0
je 0x417e0c
cmp dword [ebx + 0x3fdc], 0xffffffff
je 0x417e0c
lea eax, [edx - 0x200]
cmp eax, 0x76
jbe 0x417e29
mov ecx, ebx
call fcn.00403110
cmp dword [eax], 0xffffffff
jne 0x417e29
mov edx, 0x4000
mov ecx, ebx
call fcn.00403110
cmp dword [eax], 0xffffffff
je 0x417e30
mov byte [ebp + 0x4c14], 0
mov esi, dword [ebp + 0x4c18]
mov ecx, ebx
mov edx, esi
call fcn.004105f0
comiss xmm7, dword [eax + 8]
ja 0x417f22
cmp byte [eax], 0
jne 0x417f22
cmp esi, 0x200
jl 0x417e62
cmp esi, 0x29a
jl 0x417e8a
cmp esi, 0x1000
je 0x417e8a
cmp esi, 0x2000
je 0x417e8a
cmp esi, 0x4000
je 0x417e8a
cmp esi, 0x8000
je 0x417e8a
cmp esi, 0x800
jne 0x417e9d
mov edx, esi
mov ecx, ebx
call fcn.00403110
cmp byte [eax + 8], 0
jne 0x417f22
cmp byte [ebp + 0x4c14], 0
je 0x417f22
cmp dword [ebp + 0x3fdc], 0
je 0x417eb8
cmp byte [ebp + 0x3fe9], 0
je 0x417f22
lea eax, [ebp + 0xe00]
test eax, eax
jne 0x417ec8
lea eax, [ebx + 0xe00]
movss xmm0, dword [eax]
movss xmm1, dword [0x48355c]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x417ee7
comiss xmm2, xmm1
jb 0x417ee7
mov cl, 1
jmp 0x417ee9
xor cl, cl
lea eax, [ebp + 0x37c8]
test eax, eax
jne 0x417ef9
lea eax, [ebx + 0xe00]
movss xmm0, dword [eax]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x417f10
comiss xmm2, xmm1
jb 0x417f10
mov al, 1
jmp 0x417f12
xor al, al
mov edx, dword [esp + 0x18]
cmp cl, al
movzx edx, dl
cmove edx, edi
mov dword [esp + 0x18], edx
mov esi, dword [ebp + 0x4c18]
mov ecx, ebx
mov edx, esi
call fcn.004105f0
cmp byte [eax], 0
je 0x417f7d
cmp esi, 0x200
jl 0x417f46
cmp esi, 0x29a
jl 0x417f6e
cmp esi, 0x1000
je 0x417f6e
cmp esi, 0x2000
je 0x417f6e
cmp esi, 0x4000
je 0x417f6e
cmp esi, 0x8000
je 0x417f6e
cmp esi, 0x800
jne 0x417f84
mov edx, esi
mov ecx, ebx
call fcn.00403110
cmp byte [eax + 8], 0
je 0x417f84
mov byte [ebp + 0x4c14], 0
mov eax, dword [ebp + 0x4c00]
test eax, eax
je 0x418117
test byte [eax + 0xc], 4
jne 0x418117
mov eax, dword [ebp + 0x4a7c]
cmp eax, 2
jne 0x417fdf
cmp byte [ebp + 0xe1d], 0
jne 0x418117
mov edx, 0x203
mov ecx, ebx
call fcn.004105f0
mov edx, 0x201
mov edi, eax
call fcn.004105f0
mov edx, 0x202
mov esi, eax
call fcn.004105f0
mov edx, 0x204
jmp 0x418011
cmp eax, 3
jne 0x418117
mov edx, 0x289
mov ecx, ebx
call fcn.004105f0
mov edx, 0x287
mov edi, eax
call fcn.004105f0
mov edx, 0x288
mov esi, eax
call fcn.004105f0
mov edx, 0x28a
movss xmm2, dword [eax + 0xc]
mov ecx, ebx
subss xmm2, dword [esi + 0xc]
call fcn.004105f0
ucomiss xmm2, xmm7
movss xmm3, dword [eax + 0xc]
subss xmm3, dword [edi + 0xc]
lahf
test ah, 0x44
jp 0x418042
ucomiss xmm3, xmm7
lahf
test ah, 0x44
jnp 0x418112
movss xmm1, dword [ebp + 0x3c]
movss xmm0, dword [ebp + 0x18]
minss xmm1, dword [ebp + 0x40]
mulss xmm0, dword [0x483530]
mov byte [ebp + 0x4a93], 1
mulss xmm1, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
addss xmm2, dword [ebp + 0x4c1c]
addss xmm3, dword [ebp + 0x4c20]
cvttss2si eax, xmm2
movss dword [ebp + 0x4c1c], xmm2
movss dword [ebp + 0x4c20], xmm3
movd xmm5, eax
cvtdq2ps xmm5, xmm5
cvttss2si eax, xmm3
ucomiss xmm5, xmm7
movd xmm4, eax
cvtdq2ps xmm4, xmm4
lahf
test ah, 0x44
jp 0x4180b4
ucomiss xmm4, xmm7
lahf
test ah, 0x44
jnp 0x418112
mov eax, dword [ebp + 0x4c00]
lea edx, [esp + 0x20]
movaps xmm0, xmm5
push 1
mov ecx, dword [eax + 0x30c]
addss xmm0, dword [ecx + 0x18]
movss dword [esp + 0x24], xmm0
movaps xmm0, xmm4
addss xmm0, dword [ecx + 0x1c]
movss dword [esp + 0x28], xmm0
call fcn.004100c0
movss xmm0, dword [ebp + 0x4c1c]
add esp, 4
subss xmm0, xmm5
movss dword [ebp + 0x4c1c], xmm0
movss xmm0, dword [ebp + 0x4c20]
subss xmm0, xmm4
movss dword [ebp + 0x4c20], xmm0
mov edi, 1
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x418197
mov eax, dword [ebp + 0x4a38]
test eax, eax
je 0x418131
cmp ebx, dword [eax + 0x30c]
je 0x41818d
xor edx, edx
xor ecx, ecx
call fcn.00406c80
mov eax, dword [0x48d2c8]
xor dl, dl
mov ecx, ebx
mov word [eax + 0x4a91], 1
mov byte [eax + 0x4a93], 1
call fcn.00413b30
mov edx, edi
mov ecx, ebx
call fcn.0040fcb0
mov esi, dword [ebp + 0x4a38]
cmp dword [esi + 0x324], 0
jne 0x418179
xor dl, dl
mov ecx, esi
call fcn.004151e0
cmp word [esi + 0x156], 2
jne 0x41818d
mov dword [ebp + 0x4a80], 1
mov dword [ebp + 0x4c00], 0
cmp byte [esp + 0x18], 0
je 0x41825f
cmp dword [ebp + 0x4a38], 0
je 0x41825f
xor edx, edx
xor ecx, ecx
call fcn.00406c80
mov esi, dword [ebp + 0x4a38]
cmp dword [esi + 0x304], 0
lea ecx, [esi + 0x304]
je 0x4181f9
nop dword [eax]
test byte [esi + 0x154], 2
jne 0x4181f9
mov eax, dword [esi + 0xc]
and eax, 0x15000000
cmp eax, 0x1000000
jne 0x4181f9
mov esi, dword [ecx]
cmp dword [esi + 0x304], 0
lea ecx, [esi + 0x304]
jne 0x4181d0
mov edi, dword [ebp + 0x4a38]
cmp esi, edi
je 0x418212
xor edx, edx
mov ecx, esi
call fcn.0040fcb0
mov dword [esi + 0x320], edi
mov eax, dword [ebp + 0x4a38]
test byte [eax + 0x154], 2
je 0x41822c
mov ecx, dword [ebp + 0x4a80]
xor ecx, 1
jmp 0x41822e
xor ecx, ecx
cmp ecx, dword [ebp + 0x4a80]
je 0x41825f
cmp ecx, 1
jne 0x418245
mov dword [eax + 0x328], 0
call fcn.004150c0
mov eax, dword [0x48d2c8]
mov word [eax + 0x4a91], 1
mov byte [eax + 0x4a93], 1
mov ecx, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0044c777
add esp, 0x2c
ret