Function at 0x421980
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x44
mov eax, dword [0x67c3c0]
xor eax, esp
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
push ebp
push esi
mov esi, dword [esp + 0x68]
mov ebp, ecx
push edi
mov edi, dword [esp + 0x70]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x3c], eax
test edi, edi
jne 0x4219bc
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4219b0
sub ecx, edx
lea edi, [esi + ecx]
cvttss2si eax, dword [esp + 0x5c]
movd xmm0, eax
cvttss2si eax, dword [esp + 0x60]
cvtdq2ps xmm0, xmm0
movd xmm2, eax
mov eax, dword [esp + 0x68]
cvtdq2ps xmm2, xmm2
movss xmm4, dword [eax + 0xc]
comiss xmm2, xmm4
movss dword [esp + 0x14], xmm0
movss dword [esp + 0x5c], xmm0
movss dword [esp + 0x60], xmm2
movss dword [esp + 0x38], xmm4
ja 0x421f7b
movss xmm0, dword [esp + 0x58]
movaps xmm1, xmm2
movss xmm5, dword [ebp + 0x10]
divss xmm0, xmm5
push ebx
movss xmm3, dword [eax + 4]
mulss xmm5, xmm0
movss dword [esp + 0x5c], xmm0
movss xmm0, dword [esp + 0x78]
comiss xmm0, dword [0x5cbf98]
movaps xmm0, xmm2
movss dword [esp + 0x2c], xmm5
addss xmm0, xmm5
movss dword [esp + 0x14], xmm1
seta cl
xor ebx, ebx
mov byte [esp + 0x13], cl
comiss xmm3, xmm0
jbe 0x421ab3
movss dword [esp + 0x14], xmm1
test cl, cl
jne 0x421ab3
movss dword [esp + 0x14], xmm2
cmp esi, edi
jae 0x421aa9
mov eax, edi
sub eax, esi
push eax
push 0xa
push esi
call fcn.0059cde0
mov esi, eax
add esp, 0xc
test esi, esi
je 0x421a7d
inc esi
jmp 0x421a7f
mov esi, edi
movss xmm1, dword [esp + 0x2c]
addss xmm1, dword [esp + 0x14]
movss xmm0, dword [esp + 0x2c]
mov eax, dword [esp + 0x6c]
addss xmm0, xmm1
movss dword [esp + 0x14], xmm1
movss xmm2, dword [eax + 4]
comiss xmm2, xmm0
ja 0x421a60
movss xmm4, dword [esp + 0x3c]
mov cl, byte [esp + 0x13]
mov eax, edi
sub eax, esi
cmp eax, 0x2710
jle 0x421b11
test cl, cl
jne 0x421b11
comiss xmm4, xmm1
mov ecx, esi
movss dword [esp + 0x1c], xmm1
jbe 0x421b0f
nop
cmp ecx, edi
jae 0x421b0f
mov eax, edi
sub eax, ecx
push eax
push 0xa
push ecx
call fcn.0059cde0
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x421aed
inc ecx
jmp 0x421aef
mov ecx, edi
movss xmm0, dword [esp + 0x1c]
addss xmm0, dword [esp + 0x2c]
mov eax, dword [esp + 0x6c]
movss xmm1, dword [eax + 0xc]
comiss xmm1, xmm0
movss dword [esp + 0x1c], xmm0
ja 0x421ad0
mov edi, ecx
cmp esi, edi
je 0x421f7a
mov edx, dword [esp + 0x40]
mov eax, edi
sub eax, esi
mov ebp, dword [edx + 0xc]
lea ecx, [eax + eax*2]
shl eax, 2
add ecx, ecx
push eax
add ebp, ecx
push ecx
mov ecx, edx
mov dword [esp + 0x50], ebp
call fcn.00420f60
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x4c]
mov edx, dword [ecx + 0x38]
mov eax, dword [ecx + 0x34]
mov ecx, dword [ecx + 0x28]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x68]
or edx, 0xffffff
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
cmp esi, edi
jae 0x421f2d
lea eax, [ecx + 2]
mov dword [esp + 0x24], eax
cmp byte [esp + 0x13], 0
je 0x421c02
test ebx, ebx
jne 0x421bbc
movss xmm0, dword [esp + 0x18]
subss xmm0, dword [esp + 0x60]
movss xmm1, dword [esp + 0x78]
push ecx
subss xmm1, xmm0
movss xmm0, dword [esp + 0x60]
movss dword [esp], xmm1
push edi
push esi
push ecx
mov ecx, ebp
movss dword [esp], xmm0
call fcn.0041f2b0
mov ebx, eax
cmp esi, ebx
jne 0x421bbe
inc ebx
cmp esi, ebx
jb 0x421c02
movss xmm0, dword [esp + 0x2c]
xor ebx, ebx
addss xmm0, dword [esp + 0x14]
movss xmm1, dword [esp + 0x60]
movss dword [esp + 0x18], xmm1
movss dword [esp + 0x14], xmm0
mov al, byte [esi]
cmp al, 0x20
je 0x421bea
cmp al, 9
jne 0x421bf4
inc esi
cmp esi, edi
jb 0x421be0
jmp 0x421f29
cmp al, 0xa
jne 0x421f21
inc esi
jmp 0x421f21
movsx eax, byte [esi]
mov dword [esp + 0x4c], eax
cmp eax, 0x80
jae 0x421c13
inc esi
jmp 0x421c30
push edi
lea eax, [esp + 0x50]
push esi
push eax
call fcn.0040edf0
add esi, eax
add esp, 0xc
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x421f29
cmp eax, 0x20
jae 0x421c74
cmp eax, 0xa
jne 0x421c6b
movss xmm0, dword [esp + 0x2c]
addss xmm0, dword [esp + 0x14]
mov edx, dword [esp + 0x6c]
movss xmm1, dword [esp + 0x60]
movss dword [esp + 0x18], xmm1
comiss xmm0, dword [edx + 0xc]
movss dword [esp + 0x14], xmm0
ja 0x421f29
jmp 0x421f21
cmp eax, 0xd
je 0x421f21
movzx ecx, ax
cmp ecx, dword [ebp + 0x14]
jb 0x421c81
mov eax, dword [ebp + 0x2c]
jmp 0x421ca0
mov eax, dword [ebp + 0x1c]
movzx eax, word [eax + ecx*2]
mov ecx, 0xffff
cmp ax, cx
jne 0x421c97
mov eax, dword [ebp + 0x2c]
jmp 0x421ca0
lea ecx, [eax + eax*4]
mov eax, dword [ebp + 0x28]
lea eax, [eax + ecx*8]
test eax, eax
je 0x421f21
movss xmm1, dword [esp + 0x5c]
mov ecx, dword [eax]
movaps xmm5, xmm1
mulss xmm5, dword [eax + 4]
test cl, 2
je 0x421f15
mov edx, dword [esp + 0x6c]
movaps xmm7, xmm1
mulss xmm7, dword [eax + 8]
movaps xmm3, xmm1
mulss xmm3, dword [eax + 0x10]
movaps xmm6, xmm1
mulss xmm6, dword [eax + 0xc]
movaps xmm4, xmm1
addss xmm7, dword [esp + 0x18]
mulss xmm4, dword [eax + 0x14]
movss xmm0, dword [edx + 8]
addss xmm3, dword [esp + 0x18]
comiss xmm0, xmm7
addss xmm6, dword [esp + 0x14]
addss xmm4, dword [esp + 0x14]
jb 0x421f15
movss xmm0, dword [edx]
comiss xmm3, xmm0
jb 0x421f15
cmp byte [esp + 0x7c], 0
movss xmm1, dword [eax + 0x18]
movss xmm2, dword [eax + 0x1c]
movss dword [esp + 0x20], xmm1
movss xmm1, dword [eax + 0x20]
movss dword [esp + 0x30], xmm1
movss xmm1, dword [eax + 0x24]
movss dword [esp + 0x34], xmm1
movss xmm1, dword [esp + 0x20]
movss dword [esp + 0x3c], xmm2
je 0x421e5b
comiss xmm0, xmm7
jbe 0x421d9e
movaps xmm1, xmm3
movss xmm2, dword [0x5cbff0]
subss xmm1, xmm0
movaps xmm0, xmm3
subss xmm0, xmm7
movss xmm7, dword [edx]
divss xmm1, xmm0
movss xmm0, dword [esp + 0x30]
subss xmm0, dword [esp + 0x20]
subss xmm2, xmm1
mulss xmm2, xmm0
addss xmm2, dword [esp + 0x20]
movss dword [esp + 0x20], xmm2
movss xmm2, dword [esp + 0x3c]
movss xmm0, dword [edx + 4]
comiss xmm0, xmm6
jbe 0x421de1
movaps xmm1, xmm4
movss xmm2, dword [0x5cbff0]
subss xmm1, xmm0
movaps xmm0, xmm4
subss xmm0, xmm6
movss xmm6, dword [edx + 4]
divss xmm1, xmm0
movss xmm0, dword [esp + 0x34]
subss xmm0, dword [esp + 0x3c]
subss xmm2, xmm1
mulss xmm2, xmm0
addss xmm2, dword [esp + 0x3c]
movss xmm0, dword [edx + 8]
comiss xmm3, xmm0
jbe 0x421e18
subss xmm3, xmm7
subss xmm0, xmm7
divss xmm0, xmm3
movss xmm3, dword [esp + 0x30]
subss xmm3, dword [esp + 0x20]
mulss xmm0, xmm3
movss xmm3, dword [edx + 8]
addss xmm0, dword [esp + 0x20]
movss dword [esp + 0x30], xmm0
movss xmm1, dword [edx + 0xc]
comiss xmm4, xmm1
jbe 0x421e4c
subss xmm4, xmm6
movaps xmm0, xmm1
subss xmm0, xmm6
divss xmm0, xmm4
movss xmm4, dword [esp + 0x34]
subss xmm4, xmm2
mulss xmm0, xmm4
movaps xmm4, xmm1
addss xmm0, xmm2
movss dword [esp + 0x34], xmm0
comiss xmm6, xmm4
jae 0x421f15
movss xmm1, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
test cl, 1
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x68]
cmovne ecx, dword [esp + 0x44]
mov dword [edx], eax
mov eax, dword [esp + 0x24]
movss xmm0, dword [esp + 0x30]
dec eax
mov dword [edx + 4], eax
mov eax, dword [esp + 0x24]
mov dword [edx + 8], eax
mov eax, dword [esp + 0x28]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x24]
mov dword [edx + 0x10], eax
inc eax
mov dword [edx + 0x14], eax
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], 4
add dword [esp + 0x24], 4
movss dword [eax + 0x1c], xmm0
movss dword [eax + 0x30], xmm0
movss xmm0, dword [esp + 0x34]
movss dword [eax], xmm7
movss dword [eax + 4], xmm6
mov dword [eax + 0x10], ecx
movss dword [eax + 8], xmm1
movss dword [eax + 0xc], xmm2
movss dword [eax + 0x14], xmm3
movss dword [eax + 0x18], xmm6
mov dword [eax + 0x24], ecx
movss dword [eax + 0x20], xmm2
movss dword [eax + 0x28], xmm3
movss dword [eax + 0x2c], xmm4
mov dword [eax + 0x38], ecx
movss dword [eax + 0x34], xmm0
movss dword [eax + 0x3c], xmm7
movss dword [eax + 0x40], xmm4
mov dword [eax + 0x4c], ecx
movss dword [eax + 0x44], xmm1
movss dword [eax + 0x48], xmm0
add eax, 0x50
add edx, 0x18
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], edx
addss xmm5, dword [esp + 0x18]
movss dword [esp + 0x18], xmm5
cmp esi, edi
jb 0x421b75
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x40]
mov ecx, eax
mov esi, dword [esp + 0x1c]
mov eax, 0x66666667
sub ecx, dword [ebx + 0x20]
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, esi
sub edx, dword [ebx + 0x14]
mov dword [ebx + 0x18], eax
mov eax, dword [ebx]
sar edx, 2
mov dword [ebx + 0xc], edx
sub edx, dword [esp + 0x48]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 8]
add dword [eax + ecx*8 - 0xc], edx
mov eax, dword [esp + 0x38]
mov dword [ebx + 0x34], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x38], esi
mov dword [ebx + 0x28], eax
pop ebx
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.0059a5ad
add esp, 0x44
ret 0x28