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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
push ebx
push esi
push edi
mov edi, dword [ebp + 0x10]
test edi, edi
jle 0x5771c8
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jle 0x5771c8
mov edx, dword [ebp + 0x18]
test edx, edx
jle 0x5771c8
mov eax, dword [ebp + 0x1c]
xorps xmm1, xmm1
comisd xmm1, xmmword [eax]
ja 0x5771c8
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, edi
imul eax, ebx
sar ecx, 2
imul eax, edx
cmp ecx, eax
jne 0x5771bc
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, ebx
imul eax, edx
cmp ecx, eax
jne 0x5771bc
push 0x9731f0
mov ecx, 0x973220
call fcn.00580160
test al, al
je 0x576ae7
push 0x9731e4
mov ecx, 0x973220
call fcn.00580160
test al, al
jne 0x5771bc
mov eax, dword [ebp + 0x28]
mov ecx, 0x973220
push 0x9731e4
mov byte [esp + 0x30], 0
mov byte [eax], 0
mov eax, dword [ebp + 0x2c]
mov byte [eax], 0
mov eax, dword [ebp + 0x30]
mov byte [eax], 0
call fcn.0044caa0
movsd xmm5, qword [0x8b68e0]
xor ah, ah
mov edx, 1
mov byte [esp + 0x1a], ah
mov dword [esp + 0x1c], edx
movsd qword [esp + 0x60], xmm5
cmp byte [ebp + 0x20], ah
je 0x576b60
mov ecx, dword [ebp + 0x24]
test al, al
je 0x576b5a
movsd xmm1, qword [ecx]
movsd xmm0, qword [0x8b68d0]
comisd xmm0, xmm1
ja 0x5771c8
comisd xmm1, xmmword [0x8b6890]
ja 0x5771c8
movsd xmm0, qword [ecx]
jmp 0x576b71
test al, al
je 0x576b6e
movsd xmm0, qword [0x8b68d0]
jmp 0x576b71
movaps xmm0, xmm5
movsd xmm4, qword [0x8b68a0]
movsd qword [esp + 0x58], xmm4
cvttsd2si ecx, xmm0
mov dword [esp + 0x20], ecx
test al, al
je 0x576b9d
movsd xmm6, qword [0x8b68b8]
movsd xmm7, qword [0x8b6868]
jmp 0x576bb3
movsd xmm6, qword [0x8b68c8]
movsd xmm7, qword [0x8b6888]
movsd qword [esp + 0x60], xmm5
mov ebx, edi
movsd qword [esp + 0x68], xmm7
imul ebx, dword [ebp + 0x14]
xor eax, eax
xor esi, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], esi
movsd qword [esp + 0x70], xmm6
mov dword [esp + 0x3c], eax
shl ebx, 2
mov dword [esp + 0x54], ebx
mov ebx, dword [ebp + 0x18]
mov dword [esp + 0x50], ebx
jmp 0x576bfc
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x3c]
mov ebx, dword [ebp + 8]
movsd xmm2, qword [0x8af068]
mov ebx, dword [ebx]
add ebx, eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x48], eax
jmp 0x576c24
mov ecx, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp byte [esi + eax], 0
je 0x576e41
inc dword [esp + 0x24]
xor esi, esi
cmp edi, 1
jle 0x576d45
mov dword [esp + 0x40], edi
jmp 0x576c56
movsd xmm4, qword [esp + 0x58]
mov edi, dword [ebx]
movd xmm1, edi
cvtdq2pd xmm1, xmm1
ucomisd xmm1, xmm1
setp al
cmp al, 1
jne 0x576c7a
inc esi
mov byte [esp + 0x1a], al
cmp byte [ebp + 0x20], 0
je 0x576cee
mov dword [ebx], ecx
jmp 0x576cee
cmp byte [ebp + 0x20], 0
je 0x576c87
cmp edi, ecx
jne 0x576c87
inc esi
jmp 0x576cea
comisd xmm4, xmm1
jbe 0x576c95
movsd qword [esp + 0x58], xmm1
jmp 0x576ca2
movaps xmm0, xmm1
maxsd xmm0, xmm5
movsd qword [esp + 0x60], xmm0
test dl, dl
je 0x576cea
addsd xmm1, xmm2
sub esp, 8
movsd qword [esp + 0x80], xmm1
fld qword [esp + 0x80]
fstp qword [esp]
call fcn.0087dbb0
mov edx, dword [esp + 0x24]
xor ecx, ecx
fstp qword [esp + 0x80]
cvttsd2si eax, qword [esp + 0x80]
add esp, 8
movzx edx, dl
cmp edi, eax
cmovne edx, ecx
mov dword [esp + 0x1c], edx
mov al, byte [esp + 0x1a]
movsd xmm5, qword [esp + 0x60]
add ebx, 4
sub dword [esp + 0x40], 1
movsd xmm2, qword [0x8af068]
mov ecx, dword [esp + 0x20]
jne 0x576c50
movsd xmm0, qword [esp + 0x58]
movsd qword [esp + 0x58], xmm0
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [esp + 0x70]
mov dword [esp + 0x1c], edx
mov byte [esp + 0x1a], al
movsd qword [esp + 0x60], xmm5
movsd qword [esp + 0x70], xmm0
jmp 0x576e08
mov ecx, edi
mov dword [esp + 0x40], edi
nop dword [eax + eax]
mov edi, dword [ebx]
movd xmm1, edi
cvtdq2pd xmm1, xmm1
ucomisd xmm1, xmm1
setp al
cmp al, 1
jne 0x576d6c
mov byte [esp + 0x1a], al
inc esi
jmp 0x576de4
cmp byte [ebp + 0x20], 0
je 0x576d7b
cmp edi, dword [esp + 0x20]
jne 0x576d7b
inc esi
jmp 0x576de4
comisd xmm4, xmm1
jbe 0x576d89
movsd qword [esp + 0x58], xmm1
jmp 0x576d96
movaps xmm0, xmm1
maxsd xmm0, xmm5
movsd qword [esp + 0x60], xmm0
test dl, dl
je 0x576de4
addsd xmm1, xmm2
sub esp, 8
movsd qword [esp + 0x80], xmm1
fld qword [esp + 0x80]
fstp qword [esp]
call fcn.0087dbb0
mov ecx, dword [esp + 0x24]
xor edx, edx
fstp qword [esp + 0x80]
cvttsd2si eax, qword [esp + 0x80]
add esp, 8
movzx ecx, cl
cmp edi, eax
cmovne ecx, edx
mov dl, cl
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1c], edx
movsd xmm4, qword [esp + 0x58]
add ebx, 4
movsd xmm5, qword [esp + 0x60]
sub ecx, 1
movsd xmm2, qword [0x8af068]
mov dword [esp + 0x40], ecx
jne 0x576d50
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x30]
cmp esi, edi
jne 0x576e28
mov eax, dword [ebp + 0xc]
mov esi, dword [esp + 0x28]
mov eax, dword [eax]
mov byte [esi + eax], 0
mov eax, dword [ebp + 0x28]
mov byte [eax], 1
jmp 0x576e41
mov eax, dword [esp + 0x2c]
test esi, esi
mov esi, dword [esp + 0x28]
mov ecx, 1
movzx eax, al
cmovg eax, ecx
mov dword [esp + 0x2c], eax
movsd xmm4, qword [esp + 0x58]
lea eax, [edi*4]
movsd xmm2, qword [0x8af068]
inc esi
add ebx, eax
mov dword [esp + 0x28], esi
sub dword [esp + 0x48], 1
mov dword [esp + 0x30], ebx
jne 0x576c20
mov ebx, dword [esp + 0x1c]
movaps xmm1, xmm5
movsd xmm6, qword [esp + 0x70]
mov al, bl
mov ebx, dword [esp + 0x2c]
movaps xmm2, xmm6
movsd xmm7, qword [esp + 0x68]
mov cl, bl
mov edx, dword [esp + 0x24]
movaps xmm3, xmm7
mov edi, dword [esp + 0x54]
movaps xmm0, xmm4
mov ah, byte [esp + 0x1a]
add dword [esp + 0x3c], edi
mov ch, ah
sub dword [esp + 0x50], 1
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebx
mov ebx, edx
movsd qword [esp + 0x40], xmm2
movsd qword [esp + 0x78], xmm3
movsd qword [esp + 0x30], xmm1
movsd qword [esp + 0x48], xmm0
mov byte [esp + 0x1b], cl
mov byte [esp + 0x1a], ah
movsd qword [esp + 0x58], xmm4
movsd qword [esp + 0x60], xmm5
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
movsd qword [esp + 0x68], xmm7
movsd qword [esp + 0x70], xmm6
jne 0x576bf0
mov esi, dword [ebp + 0x2c]
xor ebx, ebx
test edx, edx
movzx eax, al
cmovne ebx, eax
mov byte [esi], cl
test ch, ch
je 0x576f2c
cmp edi, 1
jle 0x576f2c
test cl, cl
je 0x576f2c
cmp byte [ebp + 0x20], 0
jne 0x576f2c
mov eax, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x1c]
mov byte [esp + 0x3c], bl
movsd xmm4, qword [edi]
movsd qword [esp + 0x60], xmm4
test bl, bl
je 0x576fde
comisd xmm0, xmm2
jb 0x576f61
comisd xmm3, xmm0
jb 0x576f61
comisd xmm1, xmm2
jb 0x576f61
comisd xmm3, xmm1
jb 0x576f61
mov al, 1
jmp 0x576f63
xor al, al
and bl, al
mov byte [esp + 0x3c], bl
test cl, cl
je 0x576fac
mov esi, dword [esp + 0x20]
push esi
call fcn.0057b420
add esp, 4
test al, al
je 0x576f9e
movd xmm0, esi
cvtdq2pd xmm0, xmm0
comisd xmm0, xmmword [esp + 0x40]
jb 0x576f9e
movsd xmm1, qword [esp + 0x78]
comisd xmm1, xmm0
jb 0x576f9e
mov al, 1
jmp 0x576fa0
xor al, al
movsd xmm4, qword [esp + 0x60]
and bl, al
mov byte [esp + 0x3c], bl
test bl, bl
je 0x576fde
fld qword [edi]
sub esp, 8
fstp qword [esp]
call fcn.0087dbb0
fstp qword [esp + 0x80]
movsd xmm4, qword [esp + 0x80]
add esp, 8
maxsd xmm4, qword [0x8af068]
movsd qword [esp + 0x60], xmm4
mov eax, dword [ebp + 0x30]
xorps xmm5, xmm5
ucomisd xmm4, xmm5
mov byte [eax], bl
lahf
test ah, 0x44
jnp 0x57707c
cmp byte [ebp + 0x20], 0
je 0x577085
test bl, bl
je 0x577026
fld qword [esp + 0x60]
sub esp, 8
fstp qword [esp]
call fcn.0087dbb0
movsd xmm4, qword [esp + 0x68]
add esp, 8
fstp qword [esp + 0x78]
movsd xmm1, qword [esp + 0x78]
jmp 0x57702d
movaps xmm1, xmm4
addsd xmm1, xmm4
mov esi, dword [esp + 0x20]
movsd xmm2, qword [esp + 0x48]
movaps xmm0, xmm2
subsd xmm0, xmm1
movd xmm3, esi
cvtdq2pd xmm3, xmm3
comisd xmm3, xmm0
jb 0x57708f
movsd xmm0, qword [esp + 0x30]
addsd xmm0, xmm1
comisd xmm0, xmm3
jb 0x57708f
test bl, bl
je 0x577075
movsd xmm0, qword [0x8af068]
xor eax, eax
movsd qword [edi], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xorps xmm0, xmm0
movsd qword [edi], xmm0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movsd xmm2, qword [esp + 0x48]
mov esi, dword [esp + 0x20]
cmp byte [esp + 0x1b], 0
je 0x577178
movsd xmm0, qword [esp + 0x40]
lea eax, [esp + 0x50]
push eax
sub esp, 8
mov dword [esp + 0x5c], esi
movsd qword [esp], xmm0
push dword [esp + 0x48]
sub esp, 0x10
movsd qword [esp + 8], xmm4
movsd qword [esp], xmm2
call fcn.00579e80
add esp, 0x20
test al, al
je 0x577199
mov edx, dword [esp + 0x50]
cmp edx, esi
je 0x577178
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov ebx, dword [ebp + 0x14]
xor edi, edi
imul ecx, ebx
mov dword [esp + 0x40], eax
shl ecx, 2
mov dword [esp + 0x54], ecx
mov ecx, dword [ebp + 0x10]
nop word [eax + eax]
mov esi, dword [ebp + 8]
mov dword [esp + 0x48], ebx
mov esi, dword [esi]
add esi, eax
mov dword [esp + 0x50], esi
nop
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp byte [edi + eax], 0
je 0x57713a
mov eax, esi
mov esi, dword [esp + 0x20]
cmp dword [eax], esi
jne 0x577127
mov dword [eax], edx
add eax, 4
sub ecx, 1
jne 0x577121
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
mov ecx, dword [ebp + 0x10]
lea eax, [ecx*4]
inc edi
add esi, eax
sub ebx, 1
mov dword [esp + 0x50], esi
mov dword [esp + 0x48], ebx
jne 0x577110
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x54]
sub dword [ebp + 0x18], 1
mov ebx, dword [ebp + 0x14]
mov dword [esp + 0x40], eax
jne 0x577100
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp + 0x1c]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
movsd qword [eax], xmm0
movsd xmm1, qword [esp + 0x60]
movsd xmm0, qword [edi]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jnp 0x577190
movsd qword [edi], xmm1
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movd xmm0, esi
cvtdq2pd xmm0, xmm0
comisd xmm0, xmmword [esp + 0x48]
jb 0x577178
test bl, bl
je 0x5771b7
movsd xmm1, qword [0x8af068]
jmp 0x57717e
xorps xmm1, xmm1
jmp 0x57717e
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret