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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x1c], edi
movsd xmm0, qword [edi + 0x28]
ucomisd xmm0, qword [0x10076988]
lahf
test ah, 0x44
jnp 0x1001560c
movsd xmm1, qword [edi + 0x20]
mov cl, 1
ucomisd xmm1, qword [0x10076960]
mov esi, dword [edi + 0x58]
mov byte [esp + 0x13], cl
mov dword [esp + 0x18], esi
movsd xmm2, qword [ebp + 0xc]
lahf
test ah, 0x44
jnp 0x100154a5
mulsd xmm1, xmm1
jmp 0x100154c3
movsd xmm0, qword [edi + 8]
movsd xmm1, qword [edi + 0x10]
mulsd xmm1, xmm1
mulsd xmm0, xmm0
addsd xmm1, xmm0
mulsd xmm1, xmm2
mulsd xmm1, xmm2
xor edi, edi
movsd qword [esp + 0x20], xmm1
cmp dword [esi], edi
jle 0x10015561
lea eax, [esi + 8]
mov byte [esp + 0x13], cl
mov dword [esp + 0x14], eax
xor ebx, ebx
mov dword [esp + 0x18], esi
mov eax, dword [eax]
mov esi, dword [ebx + eax]
push esi
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
test eax, eax
jne 0x10015551
movsd xmm0, qword [esp + 0x20]
xorps xmm1, xmm1
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10015516
mulsd xmm0, qword [esi + 8]
movsd qword [esp + 0x28], xmm0
jmp 0x1001551c
movsd qword [esp + 0x28], xmm1
push esi
call sym.3DGlue10_32.dll_cpBodyKineticEnergy
fstp qword [esp + 0x34]
movsd xmm0, qword [esp + 0x34]
add esp, 4
comisd xmm0, xmmword [esp + 0x28]
jbe 0x1001553c
xorps xmm0, xmm0
jmp 0x10015549
movsd xmm0, qword [ebp + 0xc]
addsd xmm0, qword [esi + 0xe8]
movsd qword [esi + 0xe8], xmm0
mov eax, dword [esp + 0x18]
inc edi
add ebx, 4
cmp edi, dword [eax]
mov eax, dword [esp + 0x14]
jl 0x100154e4
mov edi, dword [esp + 0x1c]
mov ecx, dword [edi + 0x78]
xor edx, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
mov eax, dword [ecx]
mov dword [esp + 0x28], eax
test eax, eax
jle 0x1001566d
cmp byte [esp + 0x13], 0
mov eax, dword [ecx + 8]
mov esi, dword [eax + edx*4]
mov ebx, dword [esi + 0x2c]
mov edi, dword [esi + 0x30]
je 0x100155df
push edi
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
cmp eax, 1
je 0x100155ae
push ebx
call sym.3DGlue10_32.dll_cpBodyIsSleeping
add esp, 4
test al, al
je 0x100155b7
push ebx
call sym.3DGlue10_32.dll_cpBodyActivate
add esp, 4
push ebx
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
cmp eax, 1
je 0x100155d2
push edi
call sym.3DGlue10_32.dll_cpBodyIsSleeping
add esp, 4
test al, al
je 0x100155db
push edi
call sym.3DGlue10_32.dll_cpBodyActivate
add esp, 4
mov edx, dword [esp + 0x14]
mov ecx, dword [ebx + 0xd8]
lea eax, [esi + 0x3c]
mov dword [esp + 0x14], eax
xor eax, eax
cmp dword [esi + 0x2c], ebx
setne al
lea eax, [eax*8 + 0x34]
mov dword [eax + esi], ecx
test ecx, ecx
je 0x10015622
cmp dword [ecx + 0x2c], ebx
jne 0x1001561d
add ecx, 0x38
jmp 0x10015620
mov eax, dword [edi + 0x58]
mov byte [esp + 0x13], 0
mov dword [esp + 0x18], eax
jmp 0x10015565
add ecx, 0x40
mov dword [ecx], esi
mov ecx, dword [esp + 0x14]
mov dword [ebx + 0xd8], esi
lea ebx, [esi + 0x34]
cmp dword [esi + 0x2c], edi
mov eax, dword [edi + 0xd8]
cmove ecx, ebx
mov dword [ecx], eax
test eax, eax
je 0x10015650
cmp dword [eax + 0x2c], edi
jne 0x1001564b
add eax, 0x38
jmp 0x1001564e
add eax, 0x40
mov dword [eax], esi
mov ecx, dword [esp + 0x20]
inc edx
mov dword [edi + 0xd8], esi
mov dword [esp + 0x14], edx
cmp edx, dword [esp + 0x28]
jl 0x10015580
mov edi, dword [esp + 0x1c]
cmp byte [esp + 0x13], 0
je 0x10015821
mov eax, dword [edi + 0x74]
xor esi, esi
mov dword [esp + 0x28], eax
cmp dword [eax], esi
jle 0x100156d4
xor edi, edi
mov eax, dword [eax + 8]
mov eax, dword [edi + eax]
mov ebx, dword [eax + 8]
mov eax, dword [eax + 0xc]
push eax
mov dword [esp + 0x24], eax
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
cmp eax, 1
jne 0x100156ae
push ebx
call sym.3DGlue10_32.dll_cpBodyActivate
add esp, 4
push ebx
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
cmp eax, 1
jne 0x100156c8
push dword [esp + 0x20]
call sym.3DGlue10_32.dll_cpBodyActivate
add esp, 4
mov eax, dword [esp + 0x28]
inc esi
add edi, 4
cmp esi, dword [eax]
jl 0x10015687
mov eax, dword [esp + 0x18]
xor edi, edi
mov dword [esp + 0x14], edi
cmp dword [eax], edi
jle 0x10015821
add eax, 8
mov dword [esp + 0x20], eax
nop dword [eax]
mov eax, dword [eax]
mov esi, dword [eax + edi*4]
test esi, esi
je 0x10015706
cmp dword [esi + 0xe0], 0
jne 0x100157e6
push esi
call sym.3DGlue10_32.dll_cpBodyGetType
add esp, 4
test eax, eax
jne 0x1001578b
test esi, esi
je 0x10015723
cmp dword [esi + 0xe0], eax
jne 0x1001578b
mov edi, dword [esi + 0xd8]
mov dword [esi + 0xe0], esi
test edi, edi
je 0x10015758
mov eax, dword [edi + 0x2c]
cmp esi, eax
jne 0x1001573d
mov eax, dword [edi + 0x30]
push eax
push esi
call fcn.10015080
add esp, 8
cmp dword [edi + 0x2c], esi
jne 0x10015751
mov edi, dword [edi + 0x34]
jmp 0x10015754
mov edi, dword [edi + 0x3c]
test edi, edi
jne 0x10015733
mov edi, dword [esi + 0xdc]
test edi, edi
je 0x10015787
mov eax, dword [edi + 8]
cmp esi, eax
jne 0x1001576c
mov eax, dword [edi + 0xc]
push eax
push esi
call fcn.10015080
add esp, 8
cmp dword [edi + 8], esi
jne 0x10015780
mov edi, dword [edi + 0x10]
jmp 0x10015783
mov edi, dword [edi + 0x14]
test edi, edi
jne 0x10015762
mov edi, dword [esp + 0x14]
mov eax, esi
test esi, esi
je 0x10015801
mov edi, dword [esp + 0x1c]
movsd xmm0, qword [edi + 0x28]
nop
comisd xmm0, xmmword [eax + 0xe8]
ja 0x100157e2
mov eax, dword [eax + 0xe4]
test eax, eax
jne 0x100157a0
push esi
push dword [edi + 0x64]
call fcn.10015ce0
mov eax, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0x18], eax
push esi
push edi
call fcn.100152e0
mov esi, dword [esi + 0xe4]
add esp, 8
test esi, esi
jne 0x100157c8
mov edi, dword [esp + 0x14]
jmp 0x10015811
mov edi, dword [esp + 0x14]
inc edi
mov dword [esi + 0xe0], 0
mov dword [esp + 0x14], edi
mov dword [esi + 0xe4], 0
jmp 0x10015811
mov eax, dword [esp + 0x1c]
push esi
push dword [eax + 0x64]
call fcn.10015ce0
add esp, 8
mov eax, dword [esp + 0x18]
cmp edi, dword [eax]
mov eax, dword [esp + 0x20]
jl 0x100156f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret