Function at 0x10023f80
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, dword [0x10286d64]
xor eax, eax
push edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], eax
mov edx, dword [esi + 0x47d4]
sub edx, 1
mov byte [ebp - 8], al
js 0x10023fcf
mov eax, dword [esi + 0x47dc]
lea ecx, [edx + edx*4]
lea eax, [eax + ecx*8]
add eax, 4
mov edi, dword [eax]
test edi, edi
je 0x10023fc7
test dword [edi + 0xc], 0x8000000
jne 0x10024071
sub eax, 0x28
sub edx, 1
jns 0x10023fb4
xor edi, edi
cmp dword [esi + 0x496c], 0
je 0x10024023
cmp dword [esi + 0x4968], 0
jne 0x10024023
movss xmm0, dword [esi + 0x18]
mulss xmm0, dword [0x1022054c]
movss xmm1, dword [esi + 0x4978]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, dword [esi + 0x4990]
maxss xmm1, xmm0
movss dword [esi + 0x4978], xmm1
jb 0x10024023
comiss xmm0, xmm1
jb 0x10024023
mov dword [esi + 0x496c], 0
or ebx, 0xffffffff
mov edx, 0x1021ff9d
mov al, 0x23
or esi, 0xffffffff
cmp al, 0x23
jne 0x1002403e
cmp byte [edx], al
jne 0x1002403e
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 + 0x1021a9b8]
test al, al
jne 0x10024030
mov esi, dword [ebp - 0xc]
not ebx
mov eax, dword [esi + 8]
mov cl, al
test al, 2
je 0x10024080
test byte [esi + 0xc], 1
je 0x10024080
mov byte [ebp - 3], 1
jmp 0x10024086
mov dword [esi + 0x4968], 0
jmp 0x10023fd1
mov byte [ebp - 3], 0
mov al, cl
and eax, 0xffffff01
mov dword [ebp - 0x14], eax
test edi, edi
jne 0x100240b1
mov ecx, dword [esi + 0x4960]
test ecx, ecx
je 0x100240b1
push ecx
mov edx, ebx
call fcn.1001f800
add esp, 4
test al, al
je 0x100240b1
mov byte [ebp - 1], 1
jmp 0x100240b9
mov byte [ebp - 1], 0
test edi, edi
jne 0x100240d8
mov ecx, dword [esi + 0x4964]
test ecx, ecx
je 0x100240d8
push ecx
mov edx, ebx
call fcn.1001f800
add esp, 4
test al, al
je 0x100240d8
mov byte [ebp - 2], 1
jmp 0x100240e0
mov byte [ebp - 2], 0
test edi, edi
jne 0x1002410b
cmp byte [ebp - 3], 0
je 0x1002410b
cmp dword [esi + 0x4968], 0
jne 0x1002410b
push 0
xor edx, edx
mov ecx, 0x26b
call fcn.1001dda0
add esp, 4
test al, al
je 0x1002410b
mov cl, 1
mov byte [ebp - 3], cl
jmp 0x10024114
xor cl, cl
mov byte [ebp - 3], cl
test edi, edi
jne 0x1002412d
cmp dword [esi + 0x4968], 0
jne 0x1002412d
cmp byte [ebp - 1], 0
jne 0x10024129
cmp byte [ebp - 2], 0
je 0x1002412d
mov al, 1
jmp 0x1002412f
xor al, al
mov byte [ebp - 4], al
test cl, cl
jne 0x1002413e
test al, al
je 0x10024280
mov eax, dword [esi + 0x47fc]
test eax, eax
jne 0x10024169
mov ecx, dword [esi + 0x3e3c]
mov edx, reloc.WS2_32.dll_accept
push 0xffffffffffffffff
dec ecx
call fcn.10023e70
add esp, 4
test eax, eax
je 0x10024280
mov cl, byte [ebp - 3]
mov eax, dword [eax + 0x300]
mov dword [esi + 0x496c], eax
mov dword [esi + 0x4968], eax
movzx eax, byte [ebp - 4]
xor eax, 1
mov dword [esi + 0x4978], 0
add eax, 2
mov dword [esi + 0x4974], 0
cmp byte [ebp - 1], 0
mov dword [esi + 0x4988], 0
mov dword [esi + 0x498c], 0
mov dword [esi + 0x4980], 0
mov dword [esi + 0x4984], 0
mov byte [esi + 0x497c], cl
mov dword [esi + 0x482c], eax
jne 0x100241dd
cmp byte [ebp - 2], 0
je 0x10024280
mov edi, dword [esi + 0x4964]
or edi, dword [esi + 0x4960]
mov ecx, dword [0x10286d64]
test edi, 0x1000
je 0x1002420c
mov edx, 0x1000
call fcn.10011610
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x2000
je 0x10024229
mov edx, 0x2000
call fcn.10011610
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x4000
je 0x10024246
mov edx, 0x4000
call fcn.10011610
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x8000
je 0x10024263
mov edx, 0x8000
call fcn.10011610
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
test edi, 0x800
je 0x10024280
mov edx, 0x800
call fcn.10011610
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov word [eax + 8], 0
cmp dword [esi + 0x4968], 0
xorps xmm6, xmm6
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x4974]
movss xmm1, dword [0x10220494]
movss xmm2, dword [0x10220480]
movss xmm5, dword [0x102204f0]
movss dword [esi + 0x4974], xmm0
je 0x10024407
cmp dword [esi + 0x482c], 3
jne 0x10024407
subss xmm0, xmm1
divss xmm0, xmm2
comiss xmm6, xmm0
jbe 0x100242dc
xorps xmm1, xmm1
jmp 0x100242e3
movaps xmm1, xmm5
minss xmm1, xmm0
movss xmm7, dword [esi + 0x4978]
xor edx, edx
maxss xmm7, xmm1
mov ecx, 0x273
push 1
movss dword [esi + 0x4978], xmm7
call fcn.1001dda0
add esp, 4
xor edx, edx
mov ecx, 0x274
mov bl, al
push 1
call fcn.1001dda0
movzx ecx, al
add esp, 4
movzx eax, bl
sub eax, ecx
je 0x10024339
mov ecx, eax
call fcn.10023ee0
mov dword [esi + 0x4978], 0x3f800000
movaps xmm7, xmm5
mov ebx, dword [0x10286d64]
mov edx, 0x26b
mov ecx, ebx
call fcn.1001d800
cmp byte [eax], 0
je 0x10024360
mov edx, 0x26b
call fcn.10011610
cmp byte [eax + 8], 0
je 0x1002439c
comiss xmm5, xmm7
seta al
and byte [esi + 0x497c], al
je 0x1002437d
cmp dword [esi + 0x47fc], 0
je 0x10024392
mov byte [ebp - 8], 1
jmp 0x10024392
mov eax, dword [esi + 0x4968]
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 + 0x4968], 0
movss xmm2, dword [0x10220480]
movss xmm1, dword [0x10220494]
cmp dword [esi + 0x4968], 0
je 0x10024461
cmp dword [esi + 0x482c], 2
jne 0x10024461
movss xmm0, dword [esi + 0x4974]
mov edx, 0xf800
mov eax, dword [esi + 0x4960]
subss xmm0, xmm1
test eax, eax
mov ecx, edx
cmovne ecx, eax
mov eax, dword [esi + 0x4964]
test eax, eax
divss xmm0, xmm2
cmovne edx, eax
and edx, ecx
mov ecx, edx
and ecx, 0xf800
comiss xmm6, xmm0
jbe 0x1002440f
xorps xmm5, xmm5
jmp 0x10024413
mov ebx, dword [0x10286d64]
jmp 0x100243ac
minss xmm5, xmm0
movss xmm0, dword [esi + 0x4978]
mov al, byte [ebp - 1]
maxss xmm0, xmm5
movss dword [esi + 0x4978], xmm0
test al, al
jne 0x1002444f
cmp byte [ebp - 2], al
jne 0x1002444f
mov eax, dword [esi + 0xdd8]
and eax, edx
and eax, 0xf800
cmp eax, ecx
je 0x10024461
mov eax, dword [esi + 0x4968]
mov dword [ebp - 0x10], eax
jmp 0x10024461
movzx ecx, al
xor ecx, 1
lea ecx, [ecx*2 - 1]
call fcn.10023ee0
cmp byte [ebp - 0x14], 0
je 0x1002448e
push 0
or edx, 0xffffffff
mov ecx, 0x4000
call fcn.1001dda0
add esp, 4
test al, al
je 0x1002448e
mov byte [esi + 0x497c], 1
mov dword [esi + 0x482c], 2
cmp byte [esi + 0x497c], 0
mov edi, 1
je 0x100245c7
cmp dword [esi + 0x482c], 2
jne 0x100245c7
cmp dword [esi + 0x3770], 0
jg 0x100244e2
cmp byte [esi + 0xdd4], 0
jne 0x100244e2
cmp byte [esi + 0xdd5], 0
jne 0x100244e2
cmp byte [esi + 0xdd7], 0
jne 0x100244e2
mov edx, 0x4000
mov ecx, ebx
call fcn.10011610
cmp dword [eax], 0xffffffff
je 0x100244e9
mov byte [esi + 0x497c], 0
mov edx, 0x4000
mov ecx, ebx
call fcn.1001d800
comiss xmm6, dword [eax + 8]
ja 0x1002459f
cmp byte [eax], 0
jne 0x1002459f
mov edx, 0x4000
call fcn.10011610
cmp byte [eax + 8], 0
jne 0x1002459f
cmp byte [esi + 0x497c], 0
je 0x1002459f
cmp dword [esi + 0x3ec4], 0
je 0x10024537
cmp byte [esi + 0x3ed1], 0
je 0x1002459f
lea eax, [esi + 0x36a0]
test eax, eax
jne 0x10024547
lea eax, [ebx + 0xdb8]
movss xmm0, dword [eax]
movss xmm1, dword [0x102205b8]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x10024566
comiss xmm2, xmm1
jb 0x10024566
mov cl, 1
jmp 0x10024568
xor cl, cl
lea eax, [esi + 0xdb8]
test eax, eax
jne 0x10024578
lea eax, [ebx + 0xdb8]
movss xmm0, dword [eax]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x1002458f
comiss xmm2, xmm1
jb 0x1002458f
mov al, 1
jmp 0x10024591
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.1001d800
cmp byte [eax], 0
je 0x100245c0
mov edx, 0x4000
call fcn.10011610
cmp byte [eax + 8], 0
je 0x100245c7
mov byte [esi + 0x497c], 0
mov eax, dword [esi + 0x4968]
test eax, eax
je 0x1002475f
test byte [eax + 0xc], 4
jne 0x1002475f
mov eax, dword [esi + 0x482c]
cmp eax, 2
jne 0x10024622
cmp byte [esi + 0xdd5], 0
jne 0x1002475f
mov edx, 0x203
mov ecx, ebx
call fcn.1001d800
mov edx, 0x201
mov edi, eax
call fcn.1001d800
mov edx, 0x202
mov esi, eax
call fcn.1001d800
mov edx, 0x204
jmp 0x10024654
cmp eax, 3
jne 0x1002475f
mov edx, 0x27b
mov ecx, ebx
call fcn.1001d800
mov edx, 0x279
mov edi, eax
call fcn.1001d800
mov edx, 0x27a
mov esi, eax
call fcn.1001d800
mov edx, 0x27c
movss xmm2, dword [eax + 0xc]
mov ecx, ebx
subss xmm2, dword [esi + 0xc]
call fcn.1001d800
ucomiss xmm2, xmm6
movss xmm3, dword [eax + 0xc]
subss xmm3, dword [edi + 0xc]
lahf
test ah, 0x44
jp 0x10024685
ucomiss xmm3, xmm6
lahf
test ah, 0x44
jnp 0x10024757
mov esi, dword [ebp - 0xc]
movss xmm1, dword [esi + 0x3c]
movss xmm0, dword [esi + 0x18]
minss xmm1, dword [esi + 0x40]
mulss xmm0, dword [0x1022058c]
mov byte [esi + 0x4837], 1
mulss xmm1, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
addss xmm2, dword [esi + 0x4980]
addss xmm3, dword [esi + 0x4984]
cvttss2si eax, xmm2
movss dword [esi + 0x4980], xmm2
movss dword [esi + 0x4984], xmm3
movd xmm5, eax
cvtdq2ps xmm5, xmm5
cvttss2si eax, xmm3
ucomiss xmm5, xmm6
movd xmm4, eax
cvtdq2ps xmm4, xmm4
lahf
test ah, 0x44
jp 0x100246fa
ucomiss xmm4, xmm6
lahf
test ah, 0x44
jnp 0x1002475a
mov eax, dword [esi + 0x4968]
lea edx, [ebp - 0x18]
movaps xmm0, xmm5
push 1
mov ecx, dword [eax + 0x300]
addss xmm0, dword [ecx + 0x14]
movss dword [ebp - 0x18], xmm0
movaps xmm0, xmm4
addss xmm0, dword [ecx + 0x18]
movss dword [ebp - 0x14], xmm0
call fcn.1001d520
movss xmm0, dword [esi + 0x4980]
add esp, 4
subss xmm0, xmm5
movss dword [esi + 0x4980], xmm0
movss xmm0, dword [esi + 0x4984]
subss xmm0, xmm4
movss dword [esi + 0x4984], xmm0
jmp 0x1002475a
mov esi, dword [ebp - 0xc]
mov edi, 1
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x100247de
mov eax, dword [esi + 0x47fc]
test eax, eax
je 0x10024778
cmp ebx, dword [eax + 0x300]
je 0x100247d4
xor edx, edx
xor ecx, ecx
call fcn.10014c20
mov eax, dword [0x10286d64]
xor dl, dl
mov ecx, ebx
mov word [eax + 0x4835], 1
mov byte [eax + 0x4837], 1
call fcn.10020490
mov edx, edi
mov ecx, ebx
call fcn.1001cf50
mov edi, dword [esi + 0x47fc]
cmp dword [edi + 0x314], 0
jne 0x100247c0
xor dl, dl
mov ecx, edi
call fcn.10021d40
cmp word [edi + 0x14e], 2
jne 0x100247d4
mov dword [esi + 0x4830], 1
mov dword [esi + 0x4968], 0
cmp byte [ebp - 8], 0
je 0x100248a2
cmp dword [esi + 0x47fc], 0
je 0x100248a2
xor edx, edx
xor ecx, ecx
call fcn.10014c20
mov edi, dword [esi + 0x47fc]
cmp dword [edi + 0x2f8], 0
lea ecx, [edi + 0x2f8]
je 0x1002483c
test byte [edi + 0x14c], 2
jne 0x1002483c
mov eax, dword [edi + 0xc]
and eax, 0x15000000
cmp eax, 0x1000000
jne 0x1002483c
mov edi, dword [ecx]
cmp dword [edi + 0x2f8], 0
lea ecx, [edi + 0x2f8]
jne 0x10024813
mov ebx, dword [esi + 0x47fc]
cmp edi, ebx
je 0x10024855
xor edx, edx
mov ecx, edi
call fcn.1001cf50
mov dword [edi + 0x310], ebx
mov eax, dword [esi + 0x47fc]
test byte [eax + 0x14c], 2
je 0x1002486f
mov ecx, dword [esi + 0x4830]
xor ecx, 1
jmp 0x10024871
xor ecx, ecx
cmp ecx, dword [esi + 0x4830]
je 0x100248a2
cmp ecx, 1
jne 0x10024888
mov dword [eax + 0x318], 0
call fcn.10021ca0
mov eax, dword [0x10286d64]
mov word [eax + 0x4835], 1
mov byte [eax + 0x4837], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret