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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
test ebx, ebx
jle 0x578aa9
mov esi, dword [ebp + 0x14]
test esi, esi
jle 0x578aa9
mov edx, dword [ebp + 0x18]
test edx, edx
jle 0x578aa9
mov eax, dword [ebp + 0x1c]
xorps xmm1, xmm1
comisd xmm1, xmmword [eax]
ja 0x578aa9
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, ebx
imul eax, esi
sar ecx, 3
imul eax, edx
cmp ecx, eax
jne 0x578a9d
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, esi
imul eax, edx
cmp ecx, eax
jne 0x578a9d
push 0x9731f0
mov ecx, 0x9731f0
call fcn.00580160
test al, al
je 0x5782b7
push 0x9731e4
mov ecx, 0x9731f0
call fcn.00580160
test al, al
jne 0x578a9d
mov eax, dword [ebp + 0x28]
mov ecx, 0x9731f0
push 0x9731e4
mov byte [esp + 0x20], 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
mov dl, byte [ebp + 0x20]
xor ch, ch
movsd xmm6, qword [0x8b68e0]
mov cl, 1
mov byte [esp + 0x12], cl
mov byte [esp + 0x11], ch
movsd qword [esp + 0x50], xmm6
test dl, dl
je 0x578355
mov esi, dword [ebp + 0x24]
test al, al
je 0x578329
movsd xmm1, qword [esi]
movsd xmm0, qword [0x8b68d0]
comisd xmm0, xmm1
ja 0x578aa9
comisd xmm1, xmmword [0x8b6890]
ja 0x578aa9
movsd xmm7, qword [esi]
movsd qword [esp + 0x48], xmm7
movsd qword [esp + 0x78], xmm7
test al, al
je 0x578382
movsd xmm0, qword [0x8b68b8]
movsd xmm2, qword [0x8b6868]
movsd qword [esp + 0x58], xmm0
jmp 0x5783b8
test al, al
je 0x57837f
movsd xmm7, qword [0x8b68d0]
movsd xmm0, qword [0x8b68b8]
movsd xmm2, qword [0x8b6868]
movsd qword [esp + 0x48], xmm7
movsd qword [esp + 0x58], xmm0
jmp 0x5783b8
movaps xmm7, xmm6
movsd xmm0, qword [0x8b68c8]
movsd qword [esp + 0x48], xmm7
movsd qword [esp + 0x58], xmm0
test al, al
je 0x5783a4
movsd xmm2, qword [0x8b6868]
jmp 0x5783b8
movsd xmm2, qword [0x8b6888]
movsd qword [esp + 0x50], xmm6
movsd qword [esp + 0x48], xmm7
movsd xmm5, qword [0x8b68a0]
xor edi, edi
mov dword [esp + 0x18], edi
xor esi, esi
mov edi, ebx
mov dword [esp + 0x14], esi
imul edi, dword [ebp + 0x14]
xor eax, eax
movsd qword [esp + 0x40], xmm5
movsd qword [esp + 0x60], xmm2
mov dword [esp + 0x2c], eax
shl edi, 3
mov dword [esp + 0x3c], edi
mov edi, dword [ebp + 0x18]
mov dword [esp + 0x38], edi
jmp 0x578403
mov cl, byte [esp + 0x12]
mov dl, byte [ebp + 0x20]
mov ch, byte [esp + 0x11]
mov eax, dword [esp + 0x2c]
mov edi, dword [ebp + 8]
movsd xmm1, qword [0x8af068]
mov edi, dword [edi]
add edi, eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x20], edi
mov dword [esp + 0x30], eax
nop dword [eax]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp byte [esi + eax], 0
je 0x57865e
inc dword [esp + 0x18]
xor esi, esi
cmp ebx, 1
jg 0x578476
nop word [eax + eax]
movsd xmm0, qword [edi]
ucomisd xmm0, xmm0
movsd qword [esp + 0x68], xmm0
setp al
cmp al, 1
jne 0x57857c
mov ch, al
inc esi
mov byte [esp + 0x11], ch
jmp 0x57858f
movsd xmm5, qword [esp + 0x40]
movsd xmm0, qword [edi]
ucomisd xmm0, xmm0
movsd qword [esp + 0x68], xmm0
setp al
cmp al, 1
jne 0x5784fa
mov ch, al
inc esi
mov byte [esp + 0x11], ch
test dl, dl
je 0x57849e
movsd qword [edi], xmm7
mov ch, byte [esp + 0x11]
movsd xmm6, qword [esp + 0x50]
add edi, 8
movsd xmm7, qword [esp + 0x48]
movsd xmm1, qword [0x8af068]
sub ebx, 1
jne 0x578470
movsd xmm0, qword [esp + 0x40]
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esp + 0x60]
movsd qword [esp + 0x60], xmm0
movaps xmm0, xmm7
movsd qword [esp + 0x48], xmm0
movsd xmm0, qword [esp + 0x58]
mov byte [esp + 0x12], cl
mov byte [esp + 0x11], ch
movsd qword [esp + 0x50], xmm6
movsd qword [esp + 0x58], xmm0
jmp 0x5785b8
test dl, dl
je 0x57850b
ucomisd xmm0, xmm7
lahf
test ah, 0x44
jp 0x57850b
inc esi
jmp 0x57849a
comisd xmm5, xmm0
jbe 0x578519
movsd qword [esp + 0x40], xmm0
jmp 0x578529
maxsd xmm0, xmm6
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x68]
test cl, cl
je 0x57849a
addsd xmm0, xmm1
sub esp, 8
movsd qword [esp + 0x70], xmm0
fld qword [esp + 0x70]
fstp qword [esp]
call fcn.0087dbb0
movsd xmm0, qword [edi]
add esp, 8
mov dl, byte [ebp + 0x20]
mov ch, byte [esp + 0x11]
fstp qword [esp + 0x68]
ucomisd xmm0, qword [esp + 0x68]
lahf
test ah, 0x44
jnp 0x578573
xor cl, cl
mov byte [esp + 0x12], cl
jmp 0x57849e
mov cl, byte [esp + 0x12]
jmp 0x57849e
test dl, dl
je 0x5785db
ucomisd xmm0, xmm7
lahf
test ah, 0x44
jp 0x5785db
inc esi
mov ch, byte [esp + 0x11]
movsd xmm5, qword [esp + 0x40]
add edi, 8
movsd xmm6, qword [esp + 0x50]
movsd xmm7, qword [esp + 0x48]
movsd xmm1, qword [0x8af068]
mov dl, byte [ebp + 0x20]
sub ebx, 1
jne 0x578440
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0x20]
mov eax, dword [eax]
cmp esi, ebx
jne 0x578645
mov esi, dword [esp + 0x14]
mov byte [eax + esi], 0
mov eax, dword [ebp + 0x28]
mov byte [eax], 1
jmp 0x57865e
comisd xmm5, xmm0
jbe 0x5785e9
movsd qword [esp + 0x40], xmm0
jmp 0x5785f9
maxsd xmm0, xmm6
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x68]
test cl, cl
je 0x57858b
addsd xmm0, xmm1
sub esp, 8
movsd qword [esp + 0x70], xmm0
fld qword [esp + 0x70]
fstp qword [esp]
call fcn.0087dbb0
movsd xmm0, qword [edi]
add esp, 8
mov ch, byte [esp + 0x11]
fstp qword [esp + 0x68]
ucomisd xmm0, qword [esp + 0x68]
lahf
test ah, 0x44
jnp 0x57863c
xor cl, cl
mov byte [esp + 0x12], cl
jmp 0x57858f
mov cl, byte [esp + 0x12]
jmp 0x57858f
mov eax, dword [esp + 0x1c]
test esi, esi
mov esi, dword [esp + 0x14]
mov edx, 1
movzx eax, al
cmovg eax, edx
mov dword [esp + 0x1c], eax
movsd xmm5, qword [esp + 0x40]
lea eax, [ebx*8]
movsd xmm7, qword [esp + 0x48]
inc esi
movsd xmm1, qword [0x8af068]
add edi, eax
sub dword [esp + 0x30], 1
mov dl, byte [ebp + 0x20]
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], edi
jne 0x578420
movsd xmm2, qword [esp + 0x58]
mov al, cl
mov ebx, dword [esp + 0x1c]
movaps xmm0, xmm7
mov esi, dword [esp + 0x3c]
mov cl, bl
add dword [esp + 0x2c], esi
movaps xmm4, xmm6
sub dword [esp + 0x38], 1
movaps xmm1, xmm5
mov edi, dword [esp + 0x18]
mov edx, edi
mov esi, dword [esp + 0x14]
movsd qword [esp + 0x20], xmm2
movsd xmm2, qword [esp + 0x60]
mov dword [esp + 0x1c], ebx
movaps xmm3, xmm2
mov bl, byte [esp + 0x12]
mov byte [esp + 0x12], bl
mov bl, byte [esp + 0x11]
movsd qword [esp + 0x60], xmm2
movsd xmm2, qword [esp + 0x58]
mov byte [esp + 0x11], bl
mov ebx, dword [ebp + 0x10]
movsd qword [esp + 0x58], xmm2
movsd xmm2, qword [esp + 0x20]
movsd qword [esp + 0x30], xmm0
movsd qword [esp + 0x70], xmm3
movsd qword [esp + 0x78], xmm4
movsd qword [esp + 0x68], xmm1
mov byte [esp + 0x13], cl
movsd qword [esp + 0x40], xmm5
movsd qword [esp + 0x50], xmm6
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], esi
movsd qword [esp + 0x48], xmm7
jne 0x5783f4
mov esi, dword [ebp + 0x2c]
xor ebx, ebx
test edx, edx
movzx eax, al
cmovne ebx, eax
mov byte [esi], cl
mov esi, dword [ebp + 0x10]
test ch, ch
je 0x57876b
cmp esi, 1
jle 0x57876b
test cl, cl
je 0x57876b
cmp byte [ebp + 0x20], 0
jne 0x57876b
mov eax, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0x1c]
mov byte [esp + 0x2c], bl
movsd xmm5, qword [edi]
movsd qword [esp + 0x50], xmm5
test bl, bl
je 0x578818
comisd xmm1, xmm2
jb 0x5787a0
comisd xmm3, xmm1
jb 0x5787a0
comisd xmm4, xmm2
jb 0x5787a0
comisd xmm3, xmm4
jb 0x5787a0
mov al, 1
jmp 0x5787a2
xor al, al
and bl, al
mov byte [esp + 0x2c], bl
test cl, cl
je 0x5787ec
sub esp, 8
movsd qword [esp], xmm0
call fcn.0057b520
add esp, 8
test al, al
je 0x5787de
movsd xmm0, qword [esp + 0x30]
comisd xmm0, xmmword [esp + 0x20]
jb 0x5787de
movsd xmm1, qword [esp + 0x70]
comisd xmm1, xmm0
jb 0x5787de
mov al, 1
jmp 0x5787e0
xor al, al
movsd xmm5, qword [esp + 0x50]
and bl, al
mov byte [esp + 0x2c], bl
test bl, bl
je 0x578818
fld qword [edi]
sub esp, 8
fstp qword [esp]
call fcn.0087dbb0
fstp qword [esp + 0x78]
movsd xmm5, qword [esp + 0x78]
add esp, 8
maxsd xmm5, qword [0x8af068]
movsd qword [esp + 0x50], xmm5
mov eax, dword [ebp + 0x30]
xorps xmm4, xmm4
ucomisd xmm5, xmm4
mov byte [eax], bl
lahf
test ah, 0x44
jnp 0x5788a4
cmp byte [ebp + 0x20], 0
je 0x5788ad
test bl, bl
je 0x578858
fld qword [esp + 0x50]
sub esp, 8
fstp qword [esp]
call fcn.0087dbb0
movsd xmm5, qword [esp + 0x58]
add esp, 8
fstp qword [esp + 0x70]
movsd xmm2, qword [esp + 0x70]
jmp 0x57885f
movaps xmm2, xmm5
addsd xmm2, xmm5
movsd xmm3, qword [esp + 0x68]
movsd xmm1, qword [esp + 0x30]
movaps xmm0, xmm3
subsd xmm0, xmm2
comisd xmm1, xmm0
jb 0x5788b9
addsd xmm2, qword [esp + 0x78]
comisd xmm2, xmm1
jb 0x5788b9
test bl, bl
je 0x57889d
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 xmm1, qword [esp + 0x30]
movsd xmm3, qword [esp + 0x68]
cmp byte [esp + 0x13], 0
je 0x578a5b
movsd xmm0, qword [esp + 0x20]
lea eax, [esp + 0x60]
push eax
sub esp, 8
movsd qword [esp + 0x6c], xmm1
movsd qword [esp], xmm0
push dword [esp + 0x38]
sub esp, 0x10
movsd qword [esp + 8], xmm5
movsd qword [esp], xmm3
call fcn.0057add0
add esp, 0x20
test al, al
je 0x578a7c
movsd xmm2, qword [esp + 0x60]
movsd xmm1, qword [esp + 0x30]
ucomisd xmm2, xmm1
lahf
test ah, 0x44
jnp 0x578a5b
mov eax, dword [ebp + 8]
xor edi, edi
mov edx, dword [eax]
mov eax, esi
imul eax, dword [ebp + 0x14]
mov dword [esp + 0x1c], edx
lea ecx, [edx + 0x10]
mov dword [esp + 0x30], ecx
shl eax, 3
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0xc]
xor ebx, ebx
mov esi, dword [eax]
mov eax, dword [ebp + 0x10]
shl eax, 3
mov dword [esp + 0x3c], eax
mov eax, ecx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x38], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], ecx
nop word [eax + eax]
cmp byte [esi + edi], 0
je 0x578a1a
xor esi, esi
cmp dword [ebp + 0x10], 4
jl 0x5789e4
mov edx, dword [ebp + 0x10]
mov ecx, eax
lea edx, [edx - 4]
shr edx, 2
inc edx
lea esi, [edx*4]
movsd xmm0, qword [ecx - 0x10]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x578999
movsd qword [ecx - 0x10], xmm2
movsd xmm0, qword [ecx - 8]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x5789ad
movsd qword [ecx - 8], xmm2
movsd xmm0, qword [ecx]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x5789bf
movsd qword [ecx], xmm2
movsd xmm0, qword [ecx + 8]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x5789d3
movsd qword [ecx + 8], xmm2
add ecx, 0x20
sub edx, 1
jne 0x578985
mov edx, dword [esp + 0x1c]
cmp esi, dword [ebp + 0x10]
jge 0x578a0e
lea eax, [esi + ebx]
lea ecx, [edx + eax*8]
mov edx, dword [ebp + 0x10]
sub edx, esi
nop
movsd xmm0, qword [ecx]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x578a02
movsd qword [ecx], xmm2
add ecx, 8
sub edx, 1
jne 0x5789f0
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x3c]
inc edi
add ebx, dword [ebp + 0x10]
sub ecx, 1
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], ecx
jne 0x578960
mov ecx, dword [esp + 0x30]
add edx, dword [esp + 0x18]
add ecx, dword [esp + 0x18]
sub dword [ebp + 0x18], 1
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], ecx
jne 0x578938
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp + 0x1c]
movsd qword [eax], xmm2
movsd xmm1, qword [esp + 0x50]
movsd xmm0, qword [edi]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jnp 0x578a73
movsd qword [edi], xmm1
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movsd xmm0, qword [esp + 0x30]
comisd xmm0, xmmword [esp + 0x68]
jb 0x578a5b
test bl, bl
je 0x578a98
movsd xmm1, qword [0x8af068]
jmp 0x578a61
xorps xmm1, xmm1
jmp 0x578a61
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