Function at 0x412020
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
mov ecx, 0x43b1b0
call fcn.0043029f
mov ebx, dword [0x43a0bc]
xor eax, eax
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x14], eax
mov byte [ebp - 8], al
call fcn.0040d560
mov edi, eax
test edi, edi
je 0x41205d
mov dword [ebx + 0x4914], 0
xor ecx, ecx
jmp 0x412063
mov ecx, dword [ebx + 0x4914]
cmp dword [ebx + 0x4918], 0
je 0x4120ac
test ecx, ecx
jne 0x4120ac
movss xmm0, dword [ebx + 0x18]
mulss xmm0, dword [0x433f0c]
movss xmm1, dword [ebx + 0x4924]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, dword [ebx + 0x493c]
maxss xmm1, xmm0
movss dword [ebx + 0x4924], xmm1
jb 0x4120ac
comiss xmm0, xmm1
jb 0x4120ac
mov dword [ebx + 0x4918], ecx
or edx, 0xffffffff
mov esi, 0x433ced
mov al, 0x23
or ebx, 0xffffffff
nop dword [eax]
cmp al, 0x23
jne 0x4120ce
cmp byte [esi], al
jne 0x4120ce
cmp byte [esi + 1], al
cmove edx, ebx
movzx ecx, dl
movzx eax, al
xor ecx, eax
shr edx, 8
mov al, byte [esi]
inc esi
xor edx, dword [ecx*4 + 0x432880]
test al, al
jne 0x4120c0
mov ebx, dword [ebp - 0xc]
not edx
mov dword [ebp - 0x10], edx
mov eax, dword [ebx + 8]
test al, 2
je 0x412100
test byte [ebx + 0xc], 1
mov byte [ebp - 3], 1
jne 0x412104
mov byte [ebp - 3], 0
and eax, 0xffffff01
mov dword [ebp - 0x18], eax
test edi, edi
jne 0x412133
mov eax, dword [ebx + 0x490c]
test eax, eax
je 0x412133
push 0x1001
push edx
push eax
call fcn.00417940
add esp, 0xc
test al, al
je 0x412133
mov byte [ebp - 1], 1
jmp 0x41213b
mov byte [ebp - 1], 0
test edi, edi
jne 0x412161
mov eax, dword [ebx + 0x4910]
mov esi, dword [ebp - 0x10]
test eax, eax
je 0x412164
push 0x1001
push esi
push eax
call fcn.00417940
add esp, 0xc
test al, al
je 0x412164
mov byte [ebp - 2], 1
jmp 0x41216c
mov esi, dword [ebp - 0x10]
mov byte [ebp - 2], 0
test edi, edi
jne 0x412197
cmp byte [ebp - 3], 0
je 0x412197
cmp dword [ebx + 0x4914], 0
jne 0x412197
push 0
push 0
push 0x26b
call fcn.0040e4f0
add esp, 0xc
test al, al
je 0x412197
mov cl, 1
mov byte [ebp - 3], cl
jmp 0x4121a0
xor cl, cl
mov byte [ebp - 3], cl
test edi, edi
jne 0x4121b9
cmp dword [ebx + 0x4914], 0
jne 0x4121b9
cmp byte [ebp - 1], 0
jne 0x4121b5
cmp byte [ebp - 2], 0
je 0x4121b9
mov al, 1
jmp 0x4121bb
xor al, al
mov byte [ebp - 4], al
test cl, cl
jne 0x4121ca
test al, al
je 0x412283
mov eax, dword [ebx + 0x47c0]
test eax, eax
jne 0x4121f6
mov eax, dword [ebx + 0x3e04]
push 0xffffffffffffffff
dec eax
push 0x80000001
push eax
call fcn.0040c820
add esp, 0xc
test eax, eax
je 0x412283
mov cl, byte [ebp - 3]
mov eax, dword [eax + 0x300]
mov dword [ebx + 0x4918], eax
mov dword [ebx + 0x4914], eax
movzx eax, byte [ebp - 4]
xor eax, 1
mov dword [ebx + 0x4924], 0
add eax, 2
mov dword [ebx + 0x4920], 0
cmp byte [ebp - 1], 0
mov dword [ebx + 0x4934], 0
mov dword [ebx + 0x4938], 0
mov dword [ebx + 0x492c], 0
mov dword [ebx + 0x4930], 0
mov byte [ebx + 0x4928], cl
mov dword [ebx + 0x47f0], eax
jne 0x412266
cmp byte [ebp - 2], 0
je 0x412283
mov eax, dword [ebx + 0x4910]
or eax, dword [ebx + 0x490c]
push 0
and eax, 0xf800
push esi
push eax
call fcn.00417140
add esp, 0xc
cmp dword [ebx + 0x4914], 0
movss xmm0, dword [ebx + 0x18]
addss xmm0, dword [ebx + 0x4920]
movss xmm1, dword [0x433eb8]
movss xmm3, dword [0x433eb0]
movss xmm2, dword [0x432840]
movss dword [ebx + 0x4920], xmm0
je 0x412474
cmp dword [ebx + 0x47f0], 3
jne 0x4123c0
subss xmm0, xmm1
xorps xmm1, xmm1
divss xmm0, xmm3
comiss xmm1, xmm0
jbe 0x4122df
xorps xmm2, xmm2
jmp 0x4122e3
minss xmm2, xmm0
movss xmm0, dword [ebx + 0x4924]
maxss xmm0, xmm2
push 1
push 0
push 0x273
movss dword [ebx + 0x4924], xmm0
call fcn.0040e4f0
push 1
push 0
push 0x274
mov bl, al
call fcn.0040e4f0
movzx ecx, al
add esp, 0x18
movzx eax, bl
sub eax, ecx
je 0x41233a
push eax
call fcn.004128c0
mov ebx, dword [ebp - 0xc]
add esp, 4
mov dword [ebx + 0x4924], 0x3f800000
jmp 0x41233d
mov ebx, dword [ebp - 0xc]
mov eax, dword [0x43a0bc]
cmp byte [eax + 0x3490], 0
je 0x412354
cmp byte [eax + 0x43d4], 0
je 0x4123a8
movss xmm2, dword [0x432840]
comiss xmm2, dword [ebx + 0x4924]
seta al
and byte [ebx + 0x4928], al
je 0x412387
cmp dword [ebx + 0x47c0], 0
je 0x41239c
mov byte [ebp - 8], 1
mov dword [ebx + 0x4914], 0
jmp 0x4123b0
mov eax, dword [ebx + 0x4914]
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 2]
mov byte [ebp - 2], al
mov al, byte [ebp - 1]
mov byte [ebp - 1], al
mov dword [ebx + 0x4914], 0
jmp 0x4123b0
movss xmm2, dword [0x432840]
movss xmm3, dword [0x433eb0]
movss xmm1, dword [0x433eb8]
cmp dword [ebx + 0x4914], 0
je 0x412474
cmp dword [ebx + 0x47f0], 2
jne 0x412474
movss xmm0, dword [ebx + 0x4920]
mov edx, 0xf800
mov eax, dword [ebx + 0x490c]
subss xmm0, xmm1
test eax, eax
mov ecx, edx
xorps xmm1, xmm1
cmovne ecx, eax
mov eax, dword [ebx + 0x4910]
test eax, eax
divss xmm0, xmm3
cmovne edx, eax
and edx, ecx
mov ecx, edx
and ecx, 0xf800
comiss xmm1, xmm0
jbe 0x41241e
xorps xmm2, xmm2
jmp 0x412422
minss xmm2, xmm0
movss xmm0, dword [ebx + 0x4924]
mov al, byte [ebp - 1]
maxss xmm0, xmm2
movss dword [ebx + 0x4924], xmm0
test al, al
jne 0x41245e
cmp byte [ebp - 2], al
jne 0x41245e
mov eax, dword [ebx + 0xddc]
and eax, edx
and eax, 0xf800
cmp eax, ecx
je 0x412477
mov eax, dword [ebx + 0x4914]
mov dword [ebp - 0x14], eax
jmp 0x412477
movzx eax, al
xor eax, 1
lea eax, [eax*2 - 1]
push eax
call fcn.004128c0
add esp, 4
xorps xmm1, xmm1
cmp byte [ebp - 0x18], 0
je 0x4124bc
mov ecx, dword [0x43a0bc]
cmp byte [ecx + 0x3680], 0
je 0x4124bc
movss xmm0, dword [ecx + 0x3684]
comiss xmm1, xmm0
ja 0x4124bc
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x4124bc
cmp dword [ecx + 0x4540], 0xffffffff
jne 0x4124bc
mov byte [ebx + 0x4928], 1
mov dword [ebx + 0x47f0], 2
cmp byte [ebx + 0x4928], 0
je 0x4125d7
cmp dword [ebx + 0x47f0], 2
jne 0x4125d7
cmp dword [ebx + 0x3778], 0
jg 0x412508
cmp byte [ebx + 0xdd8], 0
jne 0x412508
cmp byte [ebx + 0xdd9], 0
jne 0x412508
cmp byte [ebx + 0xddb], 0
jne 0x412508
mov eax, dword [0x43a0bc]
cmp dword [eax + 0x4540], 0xffffffff
je 0x41250f
mov byte [ebx + 0x4928], 0
push 0x4000
call fcn.0040e5d0
mov ecx, dword [0x43a0bc]
add esp, 4
test al, al
je 0x4125be
cmp byte [ebx + 0x4928], 0
je 0x4125be
cmp dword [ebx + 0x3e8c], 0
je 0x412549
cmp byte [ebx + 0x3e99], 0
je 0x4125be
lea eax, [ebx + 0x36a4]
test eax, eax
jne 0x412559
lea eax, [ecx + 0xdc0]
movss xmm0, dword [eax]
movss xmm1, dword [0x433f3c]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x412578
comiss xmm2, xmm1
jb 0x412578
mov dl, 1
jmp 0x41257a
xor dl, dl
lea eax, [ebx + 0xdc0]
test eax, eax
jne 0x41258a
lea eax, [ecx + 0xdc0]
movss xmm0, dword [eax]
comiss xmm0, xmm1
movss xmm2, dword [eax + 4]
jb 0x4125a1
comiss xmm2, xmm1
jb 0x4125a1
mov al, 1
jmp 0x4125a3
xor al, al
mov ebx, dword [ebp - 8]
cmp al, dl
movzx ebx, bl
mov esi, 1
mov eax, ebx
mov dword [ebp - 8], ebx
mov ebx, dword [ebp - 0xc]
cmove eax, esi
mov dword [ebp - 8], eax
cmp byte [ecx + 0x3680], 0
je 0x4125d0
cmp byte [ecx + 0x4548], 0
je 0x4125d7
mov byte [ebx + 0x4928], 0
mov eax, dword [ebx + 0x4914]
test eax, eax
je 0x412755
test byte [eax + 0xc], 4
jne 0x412755
cmp dword [ebx + 0x47f0], 2
xorps xmm3, xmm3
xorps xmm4, xmm4
jne 0x412630
cmp byte [ebx + 0xdd9], 0
jne 0x412630
push 0x204
push 0x203
push 0x202
lea eax, [ebp - 0x1c]
push 0x201
push eax
call fcn.0040cf80
add esp, 0x14
movss xmm3, dword [eax]
movss xmm4, dword [eax + 4]
cmp dword [ebx + 0x47f0], 3
jne 0x412662
push 0x27c
push 0x27b
push 0x27a
lea eax, [ebp - 0x1c]
push 0x279
push eax
call fcn.0040cf80
add esp, 0x14
movss xmm3, dword [eax]
movss xmm4, dword [eax + 4]
xorps xmm2, xmm2
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jp 0x41267b
ucomiss xmm4, xmm2
lahf
test ah, 0x44
jnp 0x412755
movss xmm1, dword [ebx + 0x58]
minss xmm1, dword [ebx + 0x5c]
movss xmm0, dword [ebx + 0x18]
mulss xmm0, dword [0x433f2c]
mov byte [ebx + 0x47fb], 1
mulss xmm1, xmm0
mulss xmm3, xmm1
mulss xmm4, xmm1
addss xmm3, dword [ebx + 0x492c]
addss xmm4, dword [ebx + 0x4930]
cvttss2si esi, xmm3
cvttss2si edi, xmm4
movd xmm0, esi
cvtdq2ps xmm0, xmm0
movd xmm1, edi
ucomiss xmm0, xmm2
movss dword [ebx + 0x492c], xmm3
movss dword [ebx + 0x4930], xmm4
lahf
cvtdq2ps xmm1, xmm1
test ah, 0x44
jp 0x4126ed
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jnp 0x412755
mov eax, dword [ebx + 0x4914]
lea ecx, [ebp - 0x1c]
push 1
push ecx
mov eax, dword [eax + 0x300]
push eax
addss xmm0, dword [eax + 0x14]
movss dword [ebp - 0x1c], xmm0
movaps xmm0, xmm1
addss xmm0, dword [eax + 0x18]
movss dword [ebp - 0x18], xmm0
call fcn.004176e0
movss xmm0, dword [ebx + 0x492c]
add esp, 0xc
movd xmm1, esi
cvtdq2ps xmm1, xmm1
subss xmm0, xmm1
movd xmm1, edi
cvtdq2ps xmm1, xmm1
movss dword [ebx + 0x492c], xmm0
movss xmm0, dword [ebx + 0x4930]
subss xmm0, xmm1
movss dword [ebx + 0x4930], xmm0
mov edi, dword [ebp - 0x14]
test edi, edi
je 0x4127eb
mov eax, dword [ebx + 0x47c0]
test eax, eax
je 0x412772
cmp edi, dword [eax + 0x300]
je 0x4127e1
push 0
push 0
call fcn.00416be0
mov eax, dword [0x43a0bc]
add esp, 8
mov word [eax + 0x47f9], 1
mov byte [eax + 0x47fb], 1
mov esi, dword [edi + 0x310]
test esi, esi
je 0x4127a6
cmp byte [esi + 0xab], 0
jne 0x4127a8
mov esi, edi
push 0
push esi
call fcn.0040ab10
push esi
call fcn.0040c9c0
add esp, 0xc
cmp dword [esi + 0x314], 0
jne 0x4127cd
push 0
push esi
call fcn.0040f930
add esp, 8
cmp word [esi + 0x14e], 2
jne 0x4127e1
mov dword [ebx + 0x47f4], 1
mov dword [ebx + 0x4914], 0
cmp byte [ebp - 8], 0
je 0x4128b6
cmp dword [ebx + 0x47c0], 0
je 0x4128b6
push 0
push 0
call fcn.00416be0
mov esi, dword [ebx + 0x47c0]
add esp, 8
cmp dword [esi + 0x2f8], 0
lea ecx, [esi + 0x2f8]
je 0x41284c
test byte [esi + 0x14c], 2
jne 0x41284c
mov eax, dword [esi + 0xc]
and eax, 0x15000000
cmp eax, 0x1000000
jne 0x41284c
mov esi, dword [ecx]
cmp dword [esi + 0x2f8], 0
lea ecx, [esi + 0x2f8]
jne 0x412823
mov edi, dword [ebx + 0x47c0]
cmp esi, edi
je 0x412865
push esi
call fcn.0040c9c0
add esp, 4
mov dword [esi + 0x310], edi
mov ecx, dword [ebx + 0x47c0]
test byte [ecx + 0x14c], 2
je 0x41287f
mov eax, dword [ebx + 0x47f4]
xor eax, 1
jmp 0x412881
xor eax, eax
cmp eax, dword [ebx + 0x47f4]
je 0x4128b6
cmp eax, 1
jne 0x412898
mov dword [ecx + 0x318], 0
push eax
call fcn.00410330
mov eax, dword [0x43a0bc]
add esp, 4
mov word [eax + 0x47f9], 1
mov byte [eax + 0x47fb], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret