Function at 0x10023920
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x100d0008]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [0x100d24e0]
xor edx, edx
push esi
push edi
mov dword [ebp - 8], ebx
mov dword [ebp - 0x24], edx
mov byte [ebp - 0x14], dl
call fcn.1001f5b0
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x1002395e
mov dword [ebx + 0x4c54], 0
xor eax, eax
jmp 0x10023964
mov eax, dword [ebx + 0x4c54]
cmp dword [ebx + 0x4c58], 0
je 0x100239ad
test eax, eax
jne 0x100239ad
movss xmm0, dword [ebx + 0x18]
mulss xmm0, dword [0x100cc4f8]
movss xmm1, dword [ebx + 0x4c64]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, dword [ebx + 0x4c80]
maxss xmm1, xmm0
movss dword [ebx + 0x4c64], xmm1
jb 0x100239ad
comiss xmm0, xmm1
jb 0x100239ad
mov dword [ebx + 0x4c58], eax
or edx, 0xffffffff
mov esi, 0x100cbb45
mov al, 0x23
or edi, 0xffffffff
nop word [eax + eax]
cmp al, 0x23
jne 0x100239ce
cmp byte [esi], al
jne 0x100239ce
cmp byte [esi + 1], al
cmove edx, edi
movzx ecx, dl
movzx eax, al
xor ecx, eax
shr edx, 8
mov al, byte [esi]
inc esi
xor edx, dword [ecx*4 + 0x100c6630]
test al, al
jne 0x100239c0
mov eax, dword [ebx + 8]
not edx
mov edi, dword [0x100d24e0]
mov dword [ebp - 0x18], edx
test al, 2
je 0x10023a03
test byte [ebx + 0xc], 1
mov byte [ebp - 0xd], 1
jne 0x10023a07
mov byte [ebp - 0xd], 0
mov ecx, dword [ebp - 0x1c]
and eax, 0xffffff01
mov dword [ebp - 0x28], eax
test ecx, ecx
jne 0x10023a93
mov esi, dword [ebx + 0x4c4c]
test esi, esi
je 0x10023a93
mov dword [ebp - 0x20], edx
mov eax, edx
test edx, edx
je 0x10023a2e
cmp edx, 0xffffffff
jne 0x10023a37
mov eax, dword [edi + 0x4918]
mov dword [ebp - 0x20], eax
test byte [edi + 0x491c], 4
jne 0x10023a93
push eax
mov edx, 0x2001
mov ecx, esi
call fcn.1001c170
add esp, 4
test al, al
je 0x10023a8a
mov edi, dword [ebp - 0x20]
mov edx, 0x2021
push edi
mov ecx, esi
call fcn.1001e1f0
add esp, 4
test al, al
je 0x10023a8a
push ecx
and esi, 0xf000
mov edx, edi
mov ecx, esi
call fcn.1001e150
mov edi, dword [0x100d24e0]
add esp, 4
mov byte [ebp - 0xf], 1
jmp 0x10023a9f
mov edi, dword [0x100d24e0]
mov ecx, dword [ebp - 0x1c]
mov byte [ebp - 0xf], 0
test ecx, ecx
jne 0x10023b24
mov eax, dword [ebx + 0x4c50]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x10023b27
mov dword [ebp - 0x18], esi
mov eax, esi
test esi, esi
je 0x10023abd
cmp esi, 0xffffffff
jne 0x10023ac6
mov eax, dword [edi + 0x4918]
mov dword [ebp - 0x18], eax
test byte [edi + 0x491c], 4
jne 0x10023b27
mov edi, dword [ebp - 0x20]
mov edx, 0x2001
push eax
mov ecx, edi
call fcn.1001c170
add esp, 4
test al, al
je 0x10023b1c
push dword [ebp - 0x18]
mov edx, 0x2021
mov ecx, edi
call fcn.1001e1f0
add esp, 4
test al, al
je 0x10023b1c
mov edx, dword [ebp - 0x18]
and edi, 0xf000
push ecx
mov ecx, edi
call fcn.1001e150
mov edi, dword [0x100d24e0]
add esp, 4
mov byte [ebp - 0x10], 1
jmp 0x10023b31
mov edi, dword [0x100d24e0]
jmp 0x10023b27
mov esi, dword [ebp - 0x18]
cmp dword [ebp - 0x1c], 0
mov byte [ebp - 0x10], 0
jne 0x10023b64
cmp byte [ebp - 0xd], 0
je 0x10023b64
cmp dword [ebx + 0x4c54], 0
jne 0x10023b64
push 0
xor edx, edx
mov ecx, 0x279
call fcn.1001c4a0
add esp, 4
test al, al
je 0x10023b64
mov al, byte [ebp - 0x10]
mov cl, byte [ebp - 0xf]
mov byte [ebp - 0xd], 1
mov dl, byte [ebp - 0xd]
jmp 0x10023b87
xor dl, dl
cmp dword [ebp - 0x1c], 0
mov byte [ebp - 0xd], dl
jne 0x10023b93
cmp dword [ebx + 0x4c54], 0
mov al, byte [ebp - 0x10]
mov cl, byte [ebp - 0xf]
mov byte [ebp - 0xd], dl
mov byte [ebp - 0x10], al
mov byte [ebp - 0xf], cl
jne 0x10023b93
test cl, cl
jne 0x10023b8f
test al, al
je 0x10023b93
mov al, 1
jmp 0x10023b95
xor al, al
mov byte [ebp - 0xe], al
test dl, dl
jne 0x10023ba4
test al, al
je 0x10023c5c
mov eax, dword [ebx + 0x4a88]
test eax, eax
jne 0x10023bcf
mov ecx, dword [ebx + 0x3f84]
mov edx, 0x80000001
push 0xffffffffffffffff
dec ecx
call fcn.10023810
add esp, 4
test eax, eax
je 0x10023c5c
mov dl, byte [ebp - 0xd]
mov eax, dword [eax + 0x314]
mov dword [ebx + 0x4c58], eax
mov dword [ebx + 0x4c54], eax
movzx eax, byte [ebp - 0xe]
xor eax, 1
mov dword [ebx + 0x4c64], 0
add eax, 2
mov dword [ebx + 0x4c60], 0
cmp byte [ebp - 0xf], 0
mov dword [ebx + 0x4c78], 0
mov dword [ebx + 0x4c7c], 0
mov dword [ebx + 0x4c70], 0
mov dword [ebx + 0x4c74], 0
mov byte [ebx + 0x4c68], dl
mov dword [ebx + 0x4ac4], eax
jne 0x10023c3f
cmp byte [ebp - 0x10], 0
je 0x10023c5c
push ecx
mov ecx, dword [ebx + 0x4c50]
mov edx, esi
or ecx, dword [ebx + 0x4c4c]
and ecx, 0xf000
call fcn.1001e150
add esp, 4
movss xmm0, dword [ebx + 0x18]
mov eax, 1
addss xmm0, dword [ebx + 0x4c60]
mov esi, dword [ebx + 0x4c54]
mov edx, esi
movss xmm1, dword [0x100cc420]
movss xmm2, dword [0x100cc40c]
movss xmm6, dword [0x100cc48c]
movss dword [ebx + 0x4c60], xmm0
test esi, esi
je 0x10023dce
cmp dword [ebx + 0x4ac4], 3
jne 0x10023dd2
subss xmm0, xmm1
xorps xmm1, xmm1
divss xmm0, xmm2
comiss xmm1, xmm0
ja 0x10023cc2
movaps xmm1, xmm6
minss xmm1, xmm0
movss xmm7, dword [ebx + 0x4c64]
mov edx, eax
maxss xmm7, xmm1
mov ecx, 0x281
push 0
movss dword [ebx + 0x4c64], xmm7
call fcn.1001c4a0
add esp, 4
mov edx, 1
mov ecx, 0x282
mov bl, al
push 0
call fcn.1001c4a0
movzx ecx, al
add esp, 4
movzx eax, bl
sub eax, ecx
je 0x10023d26
mov ecx, eax
call fcn.10023880
mov ebx, dword [ebp - 8]
movaps xmm7, xmm6
mov esi, dword [ebx + 0x4c54]
mov dword [ebx + 0x4c64], 0x3f800000
jmp 0x10023d29
mov ebx, dword [ebp - 8]
mov edx, 0x279
mov ecx, edi
call fcn.1001bc70
cmp byte [eax], 0
je 0x10023d4b
cmp byte [edi + 0x4638], 0
mov edx, dword [ebx + 0x4c54]
mov esi, edx
je 0x10023dbe
comiss xmm6, xmm7
seta al
and byte [ebx + 0x4c68], al
je 0x10023d68
cmp dword [ebx + 0x4a88], 0
je 0x10023d6b
mov byte [ebp - 0x14], 1
jmp 0x10023d6b
mov dword [ebp - 0x24], esi
mov dword [ebx + 0x4c54], 0
xorps xmm7, xmm7
mov eax, dword [ebp - 0x28]
lea esi, [ebp - 0xc]
mov dword [ebp - 0xc], 0x211
mov dword [ebp - 8], 0x215
nop dword [eax]
test al, al
je 0x10023daf
mov edi, dword [esi]
xor edx, edx
push 0xffffffffffffffff
mov ecx, edi
call fcn.1001c4a0
add esp, 4
test al, al
jne 0x10023e77
mov eax, dword [ebp - 0x28]
add esi, 4
lea ecx, [ebp - 4]
cmp esi, ecx
jne 0x10023d90
jmp 0x10023e8e
movss xmm1, dword [0x100cc420]
movss xmm2, dword [0x100cc40c]
test edx, edx
je 0x10023d75
cmp dword [ebx + 0x4ac4], 2
xorps xmm7, xmm7
jne 0x10023d78
movss xmm0, dword [ebx + 0x4c60]
mov esi, 0xf000
mov eax, dword [ebx + 0x4c4c]
subss xmm0, xmm1
test eax, eax
mov ecx, esi
cmovne ecx, eax
mov eax, dword [ebx + 0x4c50]
test eax, eax
divss xmm0, xmm2
cmovne esi, eax
and esi, ecx
mov ecx, esi
and ecx, 0xf000
comiss xmm7, xmm0
jbe 0x10023e1f
xorps xmm6, xmm6
jmp 0x10023e23
minss xmm6, xmm0
movss xmm0, dword [ebx + 0x4c64]
mov al, byte [ebp - 0xf]
maxss xmm0, xmm6
movss dword [ebx + 0x4c64], xmm0
test al, al
jne 0x10023e60
cmp byte [ebp - 0x10], al
jne 0x10023e60
mov eax, dword [ebx + 0xdc]
and eax, esi
and eax, 0xf000
cmp eax, ecx
je 0x10023d78
mov dword [ebp - 0x24], edx
jmp 0x10023d78
movzx ecx, al
xor ecx, 1
lea ecx, [ecx*2 - 1]
call fcn.10023880
jmp 0x10023d78
mov byte [ebx + 0x4c68], 1
mov dword [ebx + 0x4c6c], edi
mov dword [ebx + 0x4ac4], 2
cmp byte [ebx + 0x4c68], 0
je 0x100240b4
cmp dword [ebx + 0x4ac4], 2
jne 0x100240b4
cmp dword [ebx + 0x2b58], 0
jg 0x10023ecc
cmp byte [ebx + 0xd8], 0
jne 0x10023ecc
cmp byte [ebx + 0xd9], 0
jne 0x10023ecc
cmp byte [ebx + 0xdb], 0
je 0x10023ed3
mov byte [ebx + 0x4c68], 0
mov esi, dword [ebx + 0x4c6c]
cmp esi, 0x200
jl 0x10023ee9
cmp esi, 0x29a
jl 0x10023f17
cmp esi, 0x1000
je 0x10023f17
cmp esi, 0x2000
je 0x10023f17
cmp esi, 0x4000
je 0x10023f17
cmp esi, 0x8000
je 0x10023f17
mov eax, dword [ebp - 0x14]
mov ecx, dword [0x100d24e0]
mov dword [ebp - 0x14], eax
jmp 0x10023f54
mov ecx, dword [0x100d24e0]
cmp byte [ecx + 0x490c], 0
je 0x10023f42
cmp dword [ecx + 0x4018], 0xffffffff
je 0x10023f42
lea eax, [esi - 0x200]
cmp eax, 0x76
ja 0x10023f42
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
jmp 0x10023f5d
mov edx, esi
call fcn.1000df30
cmp dword [eax], 0xffffffff
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], eax
jne 0x10023f5d
cmp dword [ecx + 0x47a4], 0xffffffff
je 0x10023f64
mov byte [ebx + 0x4c68], 0
mov edx, esi
mov byte [ebp - 0xd], al
call fcn.1001bc70
comiss xmm7, dword [eax + 8]
ja 0x10024062
cmp byte [eax], 0
jne 0x10024062
cmp esi, 0x200
jl 0x10023f91
cmp esi, 0x29a
jl 0x10023fb9
cmp esi, 0x1000
je 0x10023fb9
cmp esi, 0x2000
je 0x10023fb9
cmp esi, 0x4000
je 0x10023fb9
cmp esi, 0x8000
je 0x10023fb9
mov al, byte [ebp - 0xd]
mov dword [ebp - 0x14], eax
jmp 0x10023fda
mov al, byte [ebp - 0xd]
mov edx, esi
mov byte [ebp - 0x14], al
call fcn.1000df30
cmp byte [eax + 8], 0
je 0x10023fd7
mov al, byte [ebp - 0xd]
mov byte [ebp - 0x14], al
jmp 0x10024062
mov eax, dword [ebp - 0x14]
cmp byte [ebx + 0x4c68], 0
je 0x10024062
cmp dword [ebx + 0x4018], 0
je 0x10023ff5
cmp byte [ebx + 0x4025], 0
je 0x10024062
lea edx, [ebx + 0xbc]
test edx, edx
jne 0x10024005
lea edx, [ecx + 0xbc]
movss xmm0, dword [edx]
movss xmm1, dword [0x100cc598]
comiss xmm0, xmm1
movss xmm2, dword [edx + 4]
jb 0x10024024
comiss xmm2, xmm1
mov byte [ebp - 0xe], 1
jae 0x10024028
mov byte [ebp - 0xe], 0
lea edx, [ebx + 0x2a84]
test edx, edx
jne 0x10024038
lea edx, [ecx + 0xbc]
movss xmm0, dword [edx]
comiss xmm0, xmm1
movss xmm2, dword [edx + 4]
jb 0x1002404f
comiss xmm2, xmm1
jb 0x1002404f
mov dl, 1
jmp 0x10024051
xor dl, dl
cmp byte [ebp - 0xe], dl
mov edx, 1
movzx eax, al
cmove eax, edx
mov dword [ebp - 0x14], eax
mov edx, esi
call fcn.1001bc70
cmp byte [eax], 0
je 0x100240ab
cmp esi, 0x200
jl 0x1002407e
cmp esi, 0x29a
jl 0x1002409e
cmp esi, 0x1000
je 0x1002409e
cmp esi, 0x2000
je 0x1002409e
cmp esi, 0x4000
je 0x1002409e
cmp esi, 0x8000
jne 0x100240ba
mov edx, esi
call fcn.1000df30
cmp byte [eax + 8], 0
je 0x100240ba
mov byte [ebx + 0x4c68], 0
jmp 0x100240ba
mov ecx, dword [0x100d24e0]
mov eax, dword [ebx + 0x4c54]
test eax, eax
je 0x1002423f
test byte [eax + 0xc], 4
jne 0x1002423f
mov eax, dword [ebx + 0x4ac4]
cmp eax, 2
jne 0x10024113
cmp byte [ebx + 0xd9], 0
jne 0x1002423f
mov edx, 0x203
call fcn.1001bc70
mov edx, 0x201
mov edi, eax
call fcn.1001bc70
mov edx, 0x202
mov esi, eax
call fcn.1001bc70
mov edx, 0x204
jmp 0x10024143
cmp eax, 3
jne 0x1002423f
mov edx, 0x289
call fcn.1001bc70
mov edx, 0x287
mov edi, eax
call fcn.1001bc70
mov edx, 0x288
mov esi, eax
call fcn.1001bc70
mov edx, 0x28a
movss xmm2, dword [eax + 0xc]
subss xmm2, dword [esi + 0xc]
call fcn.1001bc70
ucomiss xmm2, xmm7
movss xmm3, dword [eax + 0xc]
subss xmm3, dword [edi + 0xc]
lahf
test ah, 0x44
jp 0x10024172
ucomiss xmm3, xmm7
lahf
test ah, 0x44
jnp 0x1002423f
movss xmm1, dword [ebx + 0x3c]
movss xmm0, dword [ebx + 0x18]
minss xmm1, dword [ebx + 0x40]
mulss xmm0, dword [0x100cc548]
mov byte [ebx + 0x4ad3], 1
mulss xmm1, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
addss xmm2, dword [ebx + 0x4c70]
addss xmm3, dword [ebx + 0x4c74]
cvttss2si eax, xmm2
movss dword [ebx + 0x4c70], xmm2
movss dword [ebx + 0x4c74], xmm3
movd xmm5, eax
cvtdq2ps xmm5, xmm5
cvttss2si eax, xmm3
ucomiss xmm5, xmm7
movd xmm4, eax
cvtdq2ps xmm4, xmm4
lahf
test ah, 0x44
jp 0x100241e4
ucomiss xmm4, xmm7
lahf
test ah, 0x44
jnp 0x1002423f
mov eax, dword [ebx + 0x4c54]
lea edx, [ebp - 0x2c]
movaps xmm0, xmm5
push 1
mov ecx, dword [eax + 0x314]
addss xmm0, dword [ecx + 0x18]
movss dword [ebp - 0x2c], xmm0
movaps xmm0, xmm4
addss xmm0, dword [ecx + 0x1c]
movss dword [ebp - 0x28], xmm0
call fcn.1001b6d0
movss xmm0, dword [ebx + 0x4c70]
add esp, 4
subss xmm0, xmm5
movss dword [ebx + 0x4c70], xmm0
movss xmm0, dword [ebx + 0x4c74]
subss xmm0, xmm4
movss dword [ebx + 0x4c74], xmm0
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x100242c1
mov eax, dword [ebx + 0x4a88]
test eax, eax
je 0x10024258
cmp esi, dword [eax + 0x314]
je 0x100242b7
xor edx, edx
xor ecx, ecx
call fcn.10011b40
mov eax, dword [0x100d24e0]
xor dl, dl
mov ecx, esi
mov word [eax + 0x4ad1], 1
mov byte [eax + 0x4ad3], 1
call fcn.1001f860
mov edx, 1
mov ecx, esi
call fcn.1001b050
mov esi, dword [ebx + 0x4a88]
cmp dword [esi + 0x32c], 0
jne 0x100242a3
xor dl, dl
mov ecx, esi
call fcn.10021120
cmp word [esi + 0x15e], 2
jne 0x100242b7
mov dword [ebx + 0x4a94], 1
mov dword [ebx + 0x4c54], 0
cmp byte [ebp - 0x14], 0
je 0x10024389
cmp dword [ebx + 0x4a88], 0
je 0x10024389
xor edx, edx
xor ecx, ecx
call fcn.10011b40
mov edi, dword [ebx + 0x4a88]
mov esi, edi
cmp dword [esi + 0x30c], 0
lea ecx, [esi + 0x30c]
je 0x1002433c
nop dword [eax + eax]
test byte [esi + 0x15c], 2
jne 0x10024329
mov eax, dword [esi + 0xc]
and eax, 0x15000000
cmp eax, 0x1000000
jne 0x10024329
mov esi, dword [ecx]
cmp dword [esi + 0x30c], 0
lea ecx, [esi + 0x30c]
jne 0x10024300
cmp esi, edi
je 0x1002433c
xor edx, edx
mov ecx, esi
call fcn.1001b050
mov dword [esi + 0x328], edi
mov eax, dword [ebx + 0x4a88]
test byte [eax + 0x15c], 2
je 0x10024356
mov ecx, dword [ebx + 0x4a94]
xor ecx, 1
jmp 0x10024358
xor ecx, ecx
cmp ecx, dword [ebx + 0x4a94]
je 0x10024389
cmp ecx, 1
jne 0x1002436f
mov dword [eax + 0x330], 0
call fcn.10020ff0
mov eax, dword [0x100d24e0]
mov word [eax + 0x4ad1], 1
mov byte [eax + 0x4ad3], 1
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100a95f7
mov esp, ebp
pop ebp
ret