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

Disassembly:
sub esp, 0x7b8
mov ecx, dword [esp + 0x7bc]
mov edx, dword [0x7fb2d0]
mov edx, dword [edx + 0x34]
mov eax, ecx
and eax, 0xffff
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*4 + 8]
mov edx, dword [eax]
push ebx
push ebp
and edx, 0xffff
push esi
mov esi, dword [0x816d04]
shl edx, 5
mov ebp, dword [edx + esi + 0x14]
cmp dword [ebp + 0x3ec], 0xffffffff
push edi
mov dword [esp + 0x38], eax
je 0x578af9
fld dword [eax + 0x338]
fcomp dword [0x612220]
fnstsw ax
test ah, 0x41
jne 0x578af9
push 0xf
lea eax, [esp + 0x10c]
push eax
push str.hover_thrusters
push ecx
call fcn.004f9b30
movsx eax, ax
add esp, 0x10
test eax, eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x34], eax
jle 0x578af9
xor eax, eax
jmp 0x578840
imul eax, eax, 0x6c
lea esi, [esp + eax + 0x108]
push 0x41700000
push 0
lea eax, [esi + 0x3c]
lea ebx, [esp + 0x1c]
mov edi, 0x6b4c9c
call fcn.004d05b0
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], ecx
lea ecx, [esp + 0xc0]
push ecx
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x7d8]
push edx
mov dword [esp + 0x54], eax
lea eax, [esp + 0x4c]
push eax
lea edi, [esi + 0x60]
push edi
push 0x61
call fcn.00509330
add esp, 0x1c
test al, al
je 0x578ae1
fld dword [esi + 0x44]
mov ecx, dword [esp + 0x38]
fchs
fld dword [0x612224]
fsub dword [esp + 0xcc]
fmulp st(1)
fmul dword [ecx + 0x338]
fcom dword [0x612220]
fnstsw ax
test ah, 5
jnp 0x578adf
fcom dword [0x612224]
fnstsw ax
test ah, 0x41
jne 0x5788ed
fstp st(0)
mov dword [esp + 0x24], 0x3f800000
jmp 0x578902
fst dword [esp + 0x24]
fcomp dword [0x612220]
fnstsw ax
test ah, 0x41
jne 0x578ae1
fld dword [esp + 0xd0]
mov eax, dword [esp + 0xd0]
fadd dword [edi]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x58], eax
fmul dword [0x61221c]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], edx
fstp dword [esp + 0x28]
mov dword [esp + 0x64], eax
fld dword [esp + 0xd4]
mov dword [esp + 0x68], ecx
fadd dword [esi + 0x64]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ecx
fmul dword [0x61221c]
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x28]
fstp dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
fld dword [esp + 0xd8]
mov dword [esp + 0x48], str.incident
fadd dword [esi + 0x68]
mov esi, dword [esp + 0xdc]
mov dword [esp + 0x94], esi
mov esi, dword [esp + 0xe0]
fmul dword [0x61221c]
mov dword [esp + 0x98], esi
mov esi, dword [esp + 0xe4]
fstp dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
fld dword [esp + 0x14]
mov dword [esp + 0x4c], str.normal
fchs
mov dword [esp + 0x9c], esi
fstp dword [esp + 0x88]
mov dword [esp + 0x50], str.reflected
fld dword [esp + 0x18]
mov dword [esp + 0x54], str.midpoint
fchs
mov dword [esp + 0x7c], edx
fstp dword [esp + 0x8c]
mov dword [esp + 0x80], eax
fld dword [esp + 0x1c]
mov dword [esp + 0x84], ecx
fchs
fstp dword [esp + 0x90]
fld dword [esp + 0xe4]
fmul dword [esp + 0x1c]
fld dword [esp + 0xe0]
fmul dword [esp + 0x18]
faddp st(1)
fld dword [esp + 0xdc]
fmul dword [esp + 0x14]
faddp st(1)
fadd st(0), st(0)
fld st(0)
fld dword [esp + 0xdc]
fmul st(1)
fsubr dword [esp + 0x14]
fstp dword [esp + 0xa0]
fld dword [esp + 0xe0]
fmul st(1)
fsubr dword [esp + 0x18]
fstp dword [esp + 0xa4]
fld dword [esp + 0xe4]
fmul st(1)
fsubr dword [esp + 0x1c]
fstp dword [esp + 0xa8]
fstp st(0)
fld dword [esp + 0xdc]
fmul st(1)
fsubr dword [esp + 0x14]
fstp dword [esp + 0xac]
fld dword [esp + 0xe0]
mov eax, dword [esp + 0x24]
fmul st(1)
push 1
push 0
fsubr dword [esp + 0x20]
push 0
push eax
push eax
fstp dword [esp + 0xc4]
lea edx, [esp + 0x9c]
fld dword [esp + 0xf8]
push edx
mov edx, dword [ebp + 0x3ec]
fmul st(1)
lea eax, [esp + 0x70]
push eax
fsubr dword [esp + 0x38]
lea ecx, [esp + 0x64]
push ecx
push 4
push 0
fstp dword [esp + 0xdc]
push 0xffffffffffffffff
push edx
fstp st(0)
call fcn.00451510
add esp, 0x30
jmp 0x578ae1
fstp st(0)
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x20], eax
movsx eax, ax
cmp eax, ecx
jl 0x578840
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7b8
ret