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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov esi, dword [ecx + 0x18]
lea eax, [esi + esi]
cmp dword [ecx + 0x14], eax
jle 0x10077abd
mov ebx, ecx
cmp dword [ecx + 0x10], eax
jle 0x10077abd
test esi, esi
jle 0x10077abd
mov ecx, dword [ebx + 4]
mov edx, ecx
shr edx, 0x10
mov eax, 0xff
and edx, eax
cvtsi2sd xmm0, edx
movsd xmm1, qword [0x10092b28]
mov edx, ecx
shr edx, 8
and edx, eax
cvtsi2sd xmm2, edx
divsd xmm0, xmm1
and ecx, eax
cvtsi2sd xmm3, ecx
divsd xmm2, xmm1
divsd xmm3, xmm1
mov ecx, dword [ebx]
mov edx, ecx
and edx, eax
cvtsi2sd xmm4, edx
mov edx, ecx
shr edx, 8
and edx, eax
cvtsi2sd xmm5, edx
divsd xmm4, xmm1
divsd xmm5, xmm1
shr ecx, 0x10
and ecx, eax
cvtsi2sd xmm6, ecx
divsd xmm6, xmm1
movsd qword [esp + 0x78], xmm0
subsd xmm6, xmm0
movsd qword [esp + 0x50], xmm6
movsd qword [esp + 0x70], xmm2
subsd xmm5, xmm2
movsd qword [esp + 0x58], xmm5
movsd qword [esp + 0x68], xmm3
subsd xmm4, xmm3
movsd qword [esp + 0x60], xmm4
xor ecx, ecx
xor eax, eax
dec eax
mov dword [esp + 0x14], eax
movsd xmm3, qword [0x100922b8]
mov dword [esp + 0x1c], ebx
mov edx, dword [ebx + 0xc]
mov edi, ecx
not edi
add edi, esi
add edi, edx
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x30], ecx
mov ebx, ecx
sub ebx, esi
mov dword [esp + 0x28], edx
add ebx, edx
add ebx, eax
mov edx, dword [0x100a55cc]
imul edi, edx
mov dword [esp + 0x38], edi
mov ecx, edx
mov dword [esp + 0x24], edx
imul ebx, edx
mov dword [esp + 0x34], ebx
mov edi, dword [esp + 0x1c]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20], ecx
mov edx, dword [0x100a55c8]
lea ecx, [esi*4]
mov dword [esp + 0xc], ecx
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], esi
test esi, esi
mov dword [esp + 8], edx
jle 0x100779b9
mov edx, dword [esp + 0x30]
xorps xmm5, xmm5
cvtsi2sd xmm5, edx
addsd xmm5, xmm3
mulsd xmm5, xmm5
mov ecx, dword [esp + 0x24]
lea ecx, [ecx*4]
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0x28]
add eax, esi
add eax, edx
mov ebx, dword [esp + 0x18]
sub eax, ebx
imul eax, ecx
mov edi, dword [esp + 0x2c]
lea edx, [eax + edi*4]
mov ecx, dword [esp + 0xc]
sub edx, ecx
add edx, dword [esp + 8]
mov dword [esp + 4], edx
lea edx, [ebx + esi]
add edx, dword [esp + 0x14]
imul edx, dword [esp + 0x10]
lea edi, [edx + edi*4]
sub edi, ecx
add edi, dword [esp + 8]
lea eax, [eax + ebx*4]
mov ecx, dword [esp + 8]
add eax, ecx
add eax, 0xfffffffc
mov dword [esp + 0x10], eax
lea eax, [edx + ebx*4]
mov ecx, dword [esp + 8]
lea esi, [ecx + eax]
add esi, 0xfffffffc
xor ecx, ecx
movsd qword [esp + 0x48], xmm5
xorps xmm0, xmm0
cvtsi2sd xmm0, ecx
addsd xmm0, xmm3
mulsd xmm0, xmm0
addsd xmm0, xmm5
ucomisd xmm0, qword [0x10092298]
mov dword [esp + 0x3c], ecx
jb 0x1007784f
xorps xmm1, xmm1
sqrtsd xmm1, xmm0
jmp 0x1007787d
sub esp, 8
movsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
movsd xmm5, qword [esp + 0x50]
movsd xmm3, qword [0x100922b8]
add esp, 8
fstp qword [esp + 0x80]
movsd xmm1, qword [esp + 0x80]
mov dword [esp + 0x44], edi
xorps xmm0, xmm0
cvtsi2sd xmm0, ebx
subsd xmm1, xmm0
mulsd xmm1, xmm3
addsd xmm1, xmm1
movsd xmm0, qword [0x10092b30]
ucomisd xmm0, xmm1
movsd xmm0, qword [0x100922e0]
jae 0x100778d8
xorpd xmm0, xmm0
ucomisd xmm1, qword [0x10092b38]
jae 0x100778d8
movapd xmm0, xmm1
mulsd xmm0, qword [0x10092b40]
mulsd xmm0, xmm1
addsd xmm0, qword [0x10092b48]
mulsd xmm0, xmm1
addsd xmm0, xmm3
movsd xmm1, qword [esp + 0x50]
mulsd xmm1, xmm0
addsd xmm1, qword [esp + 0x78]
movsd xmm2, qword [0x10092b28]
mulsd xmm1, xmm2
cvttsd2si edi, xmm1
movsd xmm4, qword [0x10092290]
subsd xmm1, xmm4
cvttsd2si eax, xmm1
movsd xmm1, qword [esp + 0x58]
mulsd xmm1, xmm0
addsd xmm1, qword [esp + 0x70]
mulsd xmm1, xmm2
cvttsd2si ebx, xmm1
subsd xmm1, xmm4
cvttsd2si edx, xmm1
mulsd xmm0, qword [esp + 0x60]
addsd xmm0, qword [esp + 0x68]
mov ecx, edi
sar ecx, 0x1f
and eax, ecx
or eax, edi
mov ecx, ebx
sar ecx, 0x1f
mulsd xmm0, xmm2
cvttsd2si edi, xmm0
and edx, ecx
subsd xmm0, xmm4
cvttsd2si ecx, xmm0
or edx, ebx
mov ebx, edi
sar ebx, 0x1f
and ecx, ebx
or ecx, edi
shl edx, 8
or ecx, edx
shl eax, 0x10
or ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esi + eax*4], ecx
mov edi, dword [esp + 0x44]
mov dword [edi + eax*4], ecx
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x10]
mov dword [esi + eax*4], ecx
mov edx, dword [esp + 4]
mov dword [edx + eax*4], ecx
mov ecx, dword [esp + 0x3c]
inc ecx
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x18]
add edx, 4
mov dword [esp + 4], edx
add edi, 4
add esi, 0xfffffffc
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x40]
add esi, 0xfffffffc
cmp ecx, ebx
mov edx, dword [esp + 8]
jl 0x10077825
mov eax, dword [esp + 0x38]
lea eax, [edx + eax*4]
mov edi, dword [esp + 0x20]
lea ecx, [eax + edi*4]
mov esi, dword [esp + 0x18]
lea eax, [ecx + esi*4 - 4]
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x2c]
lea ecx, [ecx + ebx*4]
sub ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
lea edx, [edx + eax*4]
mov eax, dword [esp + 4]
lea edx, [edx + edi*4]
lea esi, [edx + esi*4]
add esi, 0xfffffffc
lea edi, [edx + ebx*4]
mov edx, ebx
sub edi, dword [esp + 0xc]
add eax, 4
mov ebx, dword [esp + 0x1c]
cmp dword [ebx], 0
je 0x10077a5a
cmp eax, ecx
je 0x10077aa2
mov dword [esp + 4], edi
shl edx, 2
mov ecx, dword [esp + 0x18]
lea eax, [ecx*8]
sub edx, eax
mov eax, dword [esp + 0x28]
add eax, ecx
add eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
imul ecx, eax
mov eax, dword [esp + 0xc]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x20]
lea eax, [eax + ecx*4]
mov edi, edx
mov edx, dword [esp + 8]
add edx, eax
xor eax, eax
mov ecx, dword [ebx]
mov dword [edx + eax], ecx
add eax, 4
cmp edi, eax
jne 0x10077a4c
jmp 0x10077a74
mov dword [esp + 4], edi
sub ecx, eax
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
movsd xmm3, qword [0x100922b8]
add esp, 0xc
add esi, 4
cmp dword [ebx], 0
je 0x10077a82
mov edi, dword [esp + 4]
jmp 0x10077aa5
mov eax, dword [esp + 4]
sub eax, esi
push eax
push 0
push esi
call sub.VCRUNTIME140.dll_memset
movsd xmm3, qword [0x100922b8]
add esp, 0xc
jmp 0x10077aa9
mov eax, dword [ebx]
mov dword [esi], eax
add esi, 4
cmp esi, edi
jne 0x10077a9e
mov ecx, dword [esp + 0x30]
inc ecx
mov esi, dword [ebx + 0x18]
dec dword [esp + 0x14]
cmp ecx, esi
jl 0x10077738
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret