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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5f1cc8
mov eax, dword fs:[0]
push eax
sub esp, 0x70
push ebx
push esi
push edi
mov eax, dword [0x615cbc]
xor eax, esp
push eax
lea eax, [esp + 0x80]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
push edi
call fcn.00412980
cmp byte [ebp + 0x1c], 0
mov ebx, dword [ebp + 0xc]
je 0x5026de
push edi
mov ecx, ebx
call fcn.00412880
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
mov ecx, esi
call edx
test al, al
je 0x502797
test edi, edi
jle 0x502726
xor edx, edx
mov ecx, dword [esi + 0x9c]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
movq xmm0, qword [ecx]
add eax, edx
movq qword [eax], xmm0
movq xmm0, qword [ecx + 8]
movq qword [eax + 8], xmm0
movq xmm0, qword [ecx + 0x10]
add edx, 0x18
sub edi, 1
movq qword [eax + 0x10], xmm0
jne 0x5026f5
cmp byte [ebp + 0x1c], 0
je 0x50300d
mov edx, dword [ebp + 0x10]
movsd xmm0, qword [0x5fb270]
xor eax, eax
cmp edx, 4
jl 0x50276b
lea ecx, [edx - 3]
mov esi, dword [ebx]
movsd qword [esi + eax*8], xmm0
mov esi, dword [ebx]
movsd qword [esi + eax*8 + 8], xmm0
mov esi, dword [ebx]
movsd qword [esi + eax*8 + 0x10], xmm0
mov esi, dword [ebx]
movsd qword [esi + eax*8 + 0x18], xmm0
add eax, 4
cmp eax, ecx
jl 0x502745
cmp eax, edx
jge 0x50300d
mov ecx, dword [ebx]
movsd qword [ecx + eax*8], xmm0
inc eax
cmp eax, edx
jl 0x502773
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov eax, dword [esi + 0xbc]
mov ebx, dword [esi + 0x94]
cmp eax, ebx
jl 0x5027b5
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [edx + ebx*8 - 8]
jmp 0x5027b8
xorps xmm0, xmm0
mov ecx, esi
movsd qword [esp + 0x24], xmm0
call fcn.00459f30
fsub qword [esp + 0x24]
mov eax, dword [esi + 0x90]
add eax, ebx
xor ebx, ebx
fstp qword [esp + 0x2c]
push eax
lea ecx, [esp + 0x54]
mov dword [esp + 0x58], 1
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x54], ebx
call fcn.00412880
mov ecx, dword [esi + 0x90]
add ecx, dword [esi + 0x94]
movsd xmm1, qword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x88], ebx
test ecx, ecx
jle 0x50284d
movsd xmm0, qword [esp + 0x24]
jmp 0x502820
mov edx, dword [esi + 0xb4]
movsd xmm2, qword [edx + eax*8]
mov ecx, dword [esp + 0x50]
subsd xmm2, xmm0
divsd xmm2, xmm1
movsd qword [ecx + eax*8], xmm2
mov edx, dword [esi + 0x90]
add edx, dword [esi + 0x94]
inc eax
cmp eax, edx
jl 0x502820
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
movsd xmm1, qword [eax + ecx*8 - 8]
lea edx, [edi + ecx - 1]
mov ecx, dword [esi + 0x98]
shr ecx, 2
mov dword [esp + 0x14], edx
movsd qword [esp + 0x3c], xmm1
test cl, 1
je 0x50287e
movsd xmm0, qword [eax + edx*8]
jmp 0x502883
movsd xmm0, qword [eax + edi*8]
mov ebx, edx
xor edi, edi
inc ebx
subsd xmm0, xmm1
push ebx
lea ecx, [esp + 0x48]
movsd qword [esp + 0x38], xmm0
mov dword [esp + 0x4c], 1
mov dword [esp + 0x50], edi
mov dword [esp + 0x48], edi
call fcn.00412880
cmp dword [esp + 0x14], edi
mov byte [esp + 0x88], 1
jl 0x502a31
cmp ebx, 4
movsd xmm0, qword [esp + 0x34]
movsd xmm1, qword [esp + 0x3c]
movsd xmm2, qword [esp + 0x2c]
movsd xmm3, qword [esp + 0x24]
jl 0x5029ed
mov edx, dword [ebp + 0x20]
mov edi, dword [edx]
mov ecx, 8
sub ecx, edi
lea eax, [edi + 0x10]
mov dword [esp + 0x20], ecx
mov ecx, 0xfffffff0
sub ecx, edi
mov edi, dword [esp + 0x14]
inc edi
shr edi, 2
mov dword [esp + 0x1c], edi
add edi, edi
mov edx, 0x10
mov dword [esp + 0x18], ecx
add edi, edi
jmp 0x502924
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x44]
movsd xmm4, qword [eax - 0x10]
subsd xmm4, xmm1
divsd xmm4, xmm0
add ecx, eax
movsd qword [ecx + ebx], xmm4
mov ebx, dword [esp + 0x44]
movsd xmm4, qword [ecx + ebx]
mulsd xmm4, xmm2
addsd xmm4, xmm3
movsd qword [eax - 0x10], xmm4
movsd xmm4, qword [eax - 8]
mov ebx, dword [esp + 0x44]
subsd xmm4, xmm1
divsd xmm4, xmm0
movsd qword [ecx + ebx + 8], xmm4
mov ebx, dword [esp + 0x44]
movsd xmm4, qword [ecx + ebx + 8]
mulsd xmm4, xmm2
addsd xmm4, xmm3
movsd qword [eax - 8], xmm4
movsd xmm4, qword [eax]
mov ecx, dword [esp + 0x44]
subsd xmm4, xmm1
divsd xmm4, xmm0
movsd qword [edx + ecx], xmm4
mov ecx, dword [esp + 0x44]
movsd xmm4, qword [edx + ecx]
mov ecx, dword [esp + 0x20]
mulsd xmm4, xmm2
addsd xmm4, xmm3
movsd qword [eax], xmm4
movsd xmm4, qword [eax + 8]
mov ebx, dword [esp + 0x44]
add ecx, eax
subsd xmm4, xmm1
divsd xmm4, xmm0
movsd qword [ecx + ebx], xmm4
mov ebx, dword [esp + 0x44]
movsd xmm4, qword [ecx + ebx]
mulsd xmm4, xmm2
addsd xmm4, xmm3
movsd qword [eax + 8], xmm4
add edx, 0x20
add eax, 0x20
sub dword [esp + 0x1c], 1
jne 0x502920
mov ecx, dword [esp + 0x14]
cmp edi, ecx
jg 0x502a31
mov edx, dword [ebp + 0x20]
mov eax, dword [edx]
lea ebx, [ebx]
movsd xmm4, qword [eax + edi*8]
mov edx, dword [esp + 0x44]
subsd xmm4, xmm1
divsd xmm4, xmm0
movsd qword [edx + edi*8], xmm4
mov edx, dword [esp + 0x44]
movsd xmm4, qword [edx + edi*8]
mulsd xmm4, xmm2
addsd xmm4, xmm3
movsd qword [eax + edi*8], xmm4
inc edi
cmp edi, ecx
jle 0x502a00
lea ecx, [esp + 0x5c]
call fcn.00590c50
xor eax, eax
cmp dword [ebp + 0x10], eax
mov byte [esp + 0x88], 2
mov dword [esp + 0x18], eax
jle 0x502e08
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [esi + 0x90]
push eax
mov eax, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x20]
push edx
push eax
push ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x78]
call fcn.00590ce0
xorps xmm0, xmm0
mov ecx, dword [esp + 0x6c]
cmp ecx, dword [esp + 0x70]
movapd xmm7, xmm0
movapd xmm1, xmm0
movapd xmm2, xmm0
jg 0x502dc6
mov edx, dword [esp + 0x70]
sub edx, ecx
inc edx
cmp edx, 4
jl 0x502d19
mov eax, dword [esp + 0x5c]
lea edi, [ecx + 2]
lea ebx, [eax + edi*8]
movsd xmm6, qword [ebx - 0x10]
movsd xmm4, qword [0x5fc860]
movapd xmm3, xmm6
andpd xmm3, xmm4
comisd xmm3, xmmword [0x5ff780]
jbe 0x502b4a
mov edx, dword [esi + 0x90]
cmp ecx, edx
mov eax, ecx
jl 0x502ae5
sub eax, edx
test byte [esi + 0x98], 1
je 0x502b09
mov edx, dword [esi + 0xa8]
movsd xmm3, qword [edx + eax*8]
mulsd xmm3, xmm6
movapd xmm6, xmm3
addsd xmm3, xmm7
movapd xmm7, xmm3
mov edx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movsd xmm3, qword [edx + eax*8]
movsd xmm4, qword [edx + eax*8 + 8]
movsd xmm5, qword [edx + eax*8 + 0x10]
lea eax, [edx + eax*8]
mulsd xmm3, xmm6
mulsd xmm4, xmm6
mulsd xmm5, xmm6
addsd xmm3, xmm0
addsd xmm4, xmm1
addsd xmm5, xmm2
movapd xmm0, xmm3
movapd xmm1, xmm4
movapd xmm2, xmm5
movsd xmm6, qword [ebx - 8]
movsd xmm4, qword [0x5fc860]
movapd xmm3, xmm6
andpd xmm3, xmm4
comisd xmm3, xmmword [0x5ff780]
jbe 0x502bdd
mov edx, dword [esi + 0x90]
lea eax, [edi - 1]
cmp eax, edx
jl 0x502b78
sub eax, edx
test byte [esi + 0x98], 1
je 0x502b9c
mov edx, dword [esi + 0xa8]
movsd xmm3, qword [edx + eax*8]
mulsd xmm3, xmm6
movapd xmm6, xmm3
addsd xmm3, xmm7
movapd xmm7, xmm3
mov edx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movsd xmm3, qword [edx + eax*8]
movsd xmm4, qword [edx + eax*8 + 8]
movsd xmm5, qword [edx + eax*8 + 0x10]
lea eax, [edx + eax*8]
mulsd xmm3, xmm6
mulsd xmm4, xmm6
mulsd xmm5, xmm6
addsd xmm3, xmm0
addsd xmm4, xmm1
addsd xmm5, xmm2
movapd xmm0, xmm3
movapd xmm1, xmm4
movapd xmm2, xmm5
movsd xmm6, qword [ebx]
movsd xmm4, qword [0x5fc860]
movapd xmm3, xmm6
andpd xmm3, xmm4
comisd xmm3, xmmword [0x5ff780]
jbe 0x502c6e
mov edx, dword [esi + 0x90]
cmp edi, edx
mov eax, edi
jl 0x502c09
sub eax, edx
test byte [esi + 0x98], 1
je 0x502c2d
mov edx, dword [esi + 0xa8]
movsd xmm3, qword [edx + eax*8]
mulsd xmm3, xmm6
movapd xmm6, xmm3
addsd xmm3, xmm7
movapd xmm7, xmm3
mov edx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movsd xmm3, qword [edx + eax*8]
movsd xmm4, qword [edx + eax*8 + 8]
movsd xmm5, qword [edx + eax*8 + 0x10]
lea eax, [edx + eax*8]
mulsd xmm3, xmm6
mulsd xmm4, xmm6
mulsd xmm5, xmm6
addsd xmm3, xmm0
addsd xmm4, xmm1
addsd xmm5, xmm2
movapd xmm0, xmm3
movapd xmm1, xmm4
movapd xmm2, xmm5
movsd xmm6, qword [ebx + 8]
movsd xmm4, qword [0x5fc860]
movapd xmm3, xmm6
andpd xmm3, xmm4
comisd xmm3, xmmword [0x5ff780]
jbe 0x502d01
mov edx, dword [esi + 0x90]
lea eax, [edi + 1]
cmp eax, edx
jl 0x502c9c
sub eax, edx
test byte [esi + 0x98], 1
je 0x502cc0
mov edx, dword [esi + 0xa8]
movsd xmm3, qword [edx + eax*8]
mulsd xmm3, xmm6
movapd xmm6, xmm3
addsd xmm3, xmm7
movapd xmm7, xmm3
mov edx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movsd xmm3, qword [edx + eax*8]
movsd xmm4, qword [edx + eax*8 + 8]
movsd xmm5, qword [edx + eax*8 + 0x10]
lea eax, [edx + eax*8]
mulsd xmm3, xmm6
mulsd xmm4, xmm6
mulsd xmm5, xmm6
addsd xmm3, xmm0
addsd xmm4, xmm1
addsd xmm5, xmm2
movapd xmm0, xmm3
movapd xmm1, xmm4
movapd xmm2, xmm5
mov eax, dword [esp + 0x70]
add ecx, 4
add eax, 0xfffffffd
add ebx, 0x20
add edi, 4
cmp ecx, eax
jle 0x502ab8
cmp ecx, dword [esp + 0x70]
jg 0x502dc6
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x5c]
movsd xmm6, qword [edi + ecx*8]
movsd xmm4, qword [0x5fc860]
movapd xmm3, xmm6
andpd xmm3, xmm4
comisd xmm3, xmmword [0x5ff780]
jbe 0x502dbd
mov edx, dword [esi + 0x90]
cmp ecx, edx
mov eax, ecx
jl 0x502d58
sub eax, edx
test byte [esi + 0x98], 1
je 0x502d7c
mov edx, dword [esi + 0xa8]
movsd xmm3, qword [edx + eax*8]
mulsd xmm3, xmm6
movapd xmm6, xmm3
addsd xmm3, xmm7
movapd xmm7, xmm3
mov edx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movsd xmm3, qword [edx + eax*8]
movsd xmm4, qword [edx + eax*8 + 8]
movsd xmm5, qword [edx + eax*8 + 0x10]
lea eax, [edx + eax*8]
mulsd xmm3, xmm6
mulsd xmm4, xmm6
mulsd xmm5, xmm6
addsd xmm3, xmm0
addsd xmm4, xmm1
addsd xmm5, xmm2
movapd xmm0, xmm3
movapd xmm1, xmm4
movapd xmm2, xmm5
inc ecx
cmp ecx, ebx
jle 0x502d2b
mov eax, dword [ebp + 8]
mov eax, dword [eax]
add eax, dword [esp + 0x1c]
cmp byte [ebp + 0x1c], 0
movq qword [eax], xmm0
movq qword [eax + 8], xmm1
movq qword [eax + 0x10], xmm2
je 0x502df1
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
mov eax, dword [esp + 0x18]
movsd qword [edx + eax*8], xmm7
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], 0x18
inc eax
cmp eax, dword [ebp + 0x10]
mov dword [esp + 0x18], eax
jl 0x502a55
cmp byte [ebp + 0x1c], 0
xorps xmm2, xmm2
je 0x502fd0
movsd xmm1, qword [0x5fb270]
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
xor ecx, ecx
cmp dword [ebp + 0x10], 4
jl 0x502f70
xor esi, esi
mov edx, dword [edi]
movsd xmm0, qword [edx + ecx*8]
lea edx, [edx + ecx*8]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jnp 0x502e74
mov eax, dword [ebx]
movsd xmm3, qword [eax + esi]
add eax, esi
divsd xmm3, xmm0
movsd qword [eax], xmm3
movsd xmm3, qword [eax + 8]
divsd xmm3, xmm0
movsd qword [eax + 8], xmm3
movsd xmm3, qword [eax + 0x10]
divsd xmm3, xmm0
movsd qword [eax + 0x10], xmm3
jmp 0x502e78
movsd qword [edx], xmm1
mov eax, dword [edi]
movsd xmm0, qword [eax + ecx*8 + 8]
lea edx, [eax + ecx*8 + 8]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jnp 0x502ec0
mov edx, dword [ebx]
movsd xmm3, qword [esi + edx + 0x18]
lea eax, [esi + edx + 0x18]
divsd xmm3, xmm0
movsd qword [eax], xmm3
movsd xmm3, qword [eax + 8]
divsd xmm3, xmm0
movsd qword [eax + 8], xmm3
movsd xmm3, qword [eax + 0x10]
divsd xmm3, xmm0
movsd qword [eax + 0x10], xmm3
jmp 0x502ec4
movsd qword [edx], xmm1
mov eax, dword [edi]
movsd xmm0, qword [eax + ecx*8 + 0x10]
lea edx, [eax + ecx*8 + 0x10]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jnp 0x502f0c
mov edx, dword [ebx]
movsd xmm3, qword [esi + edx + 0x30]
lea eax, [esi + edx + 0x30]
divsd xmm3, xmm0
movsd qword [eax], xmm3
movsd xmm3, qword [eax + 8]
divsd xmm3, xmm0
movsd qword [eax + 8], xmm3
movsd xmm3, qword [eax + 0x10]
divsd xmm3, xmm0
movsd qword [eax + 0x10], xmm3
jmp 0x502f10
movsd qword [edx], xmm1
mov eax, dword [edi]
movsd xmm0, qword [eax + ecx*8 + 0x18]
lea edx, [eax + ecx*8 + 0x18]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jnp 0x502f58
mov edx, dword [ebx]
movsd xmm3, qword [esi + edx + 0x48]
lea eax, [esi + edx + 0x48]
divsd xmm3, xmm0
movsd qword [eax], xmm3
movsd xmm3, qword [eax + 8]
divsd xmm3, xmm0
movsd qword [eax + 8], xmm3
movsd xmm3, qword [eax + 0x10]
divsd xmm3, xmm0
movsd qword [eax + 0x10], xmm3
jmp 0x502f5c
movsd qword [edx], xmm1
mov eax, dword [ebp + 0x10]
add ecx, 4
add eax, 0xfffffffd
add esi, 0x60
cmp ecx, eax
jl 0x502e31
cmp ecx, dword [ebp + 0x10]
jge 0x502fd0
lea esi, [ecx + ecx*2]
add esi, esi
add esi, esi
add esi, esi
mov edi, edi
mov eax, dword [edi]
movsd xmm0, qword [eax + ecx*8]
lea edx, [eax + ecx*8]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jnp 0x502fc3
mov eax, dword [ebx]
movsd xmm3, qword [eax + esi]
add eax, esi
divsd xmm3, xmm0
movsd qword [eax], xmm3
movsd xmm3, qword [eax + 8]
divsd xmm3, xmm0
movsd qword [eax + 8], xmm3
movsd xmm3, qword [eax + 0x10]
divsd xmm3, xmm0
movsd qword [eax + 0x10], xmm3
jmp 0x502fc7
movsd qword [edx], xmm1
inc ecx
add esi, 0x18
cmp ecx, dword [ebp + 0x10]
jl 0x502f80
lea ecx, [esp + 0x5c]
mov byte [esp + 0x88], 1
call fcn.00590cd0
mov eax, dword [esp + 0x44]
mov esi, dword [sym.imp.MSVCR90.dll_free]
xor edi, edi
cmp eax, edi
je 0x502ff7
push eax
call esi
add esp, 4
mov eax, dword [esp + 0x50]
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], edi
cmp eax, edi
je 0x50300d
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c