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

Disassembly:
sub esp, 0x5c
push ebx
fldz
mov ebx, dword [esp + 0x68]
fld dword [esp + 0x74]
push ebp
fcom st(1)
mov ebp, dword [esp + 0x68]
mov eax, dword [ebp]
push esi
mov esi, dword [eax + 4]
imul esi, ebx
add esi, dword [eax + 0x18]
mov eax, dword [0x5042a4]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
imul ecx, dword [0x5042a8]
add ecx, dword [eax + 0x18]
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
push edi
fnstsw ax
mov dword [esp + 0x64], esi
mov dword [esp + 0x4c], ecx
test ah, 0x41
jnp 0x47eff9
fld dword [esp + 0x84]
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 0x41
jnp 0x47eff9
mov ecx, dword [esi]
mov edi, dword [esi + 4]
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
mov dword [esp + 0x24], edi
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld st(0)
fsub st(2)
fabs
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fld dword [0x4fd9d8]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x47ea75
fild dword [esp + 0x24]
fsub st(4)
fabs
fstp dword [esp + 0x2c]
fcomp dword [esp + 0x2c]
fnstsw ax
test ah, 0x41
jne 0x47ea77
fstp st(2)
fstp st(0)
fstp st(0)
fld dword [esp + 0x7c]
call fcn.004dc850
fld dword [esp + 0x78]
push eax
call fcn.004dc850
push eax
push ebx
push ebp
call fcn.0047d2d0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
fstp st(0)
sub ecx, dword [esi + 8]
fld dword [esp + 0x78]
mov dword [esp + 0x2c], ecx
fild dword [esp + 0x2c]
mov ecx, edi
sub ecx, dword [esi + 0xc]
fmul st(3)
mov dword [esp + 0x20], ecx
fdivrp st(2)
fld1
fsub st(2), st(0)
fxch st(1)
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fild dword [esp + 0x24]
fstp dword [esp + 0x2c]
fild dword [esp + 0x20]
fmul st(3)
fdiv dword [esp + 0x2c]
fsubrp st(1)
fsubr dword [esp + 0x7c]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fild dword [0x504214]
fcomp st(1)
fnstsw ax
test ah, 0x41
jnp 0x47eff7
fld st(0)
faddp st(3)
fxch st(2)
fst qword [esp + 0x50]
fld qword [0x4fd830]
fsub st(1), st(0)
fild dword [0x504210]
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 1
je 0x47f007
fld dword [esp + 0x78]
fild dword [0x50420c]
fcomp st(1)
fnstsw ax
test ah, 0x41
jnp 0x47f005
faddp st(2)
fxch st(1)
fst qword [esp + 0x40]
fsubrp st(1)
fild dword [0x504208]
fcompp
fnstsw ax
test ah, 1
je 0x47f00b
sub esp, 8
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.004dc850
mov ebp, eax
mov dword [esp + 0x14], ebp
fild dword [esp + 0x14]
fld dword [esp + 0x7c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x47ebab
fild dword [esp + 0x14]
fld st(1)
fsub qword [0x4fd830]
fcompp
fnstsw ax
test ah, 0x41
jne 0x47eb75
inc ebp
mov dword [esp + 0x14], ebp
fisubr dword [esp + 0x14]
sub esp, 8
fmul dword [esp + 0x34]
fdiv dword [esp + 0x8c]
fmul qword [0x4fd990]
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.004dc850
mov dword [esp + 0x18], eax
jmp 0x47ebb5
fstp st(0)
mov dword [esp + 0x18], 0
mov ebx, dword [0x504210]
cmp ebp, ebx
jge 0x47ec1d
mov edx, ebx
sub edx, ebp
imul edx, edi
mov dword [esp + 0x2c], edx
sub esp, 8
fild dword [esp + 0x34]
fdiv dword [esp + 0x8c]
fmul qword [0x4fd990]
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp qword [esp]
call sub.MSVCR90.dll_floor
fnstcw word [esp + 0x18]
add esp, 8
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], ebx
mov ebp, ebx
fldcw word [esp + 0x2c]
fistp qword [esp + 0x58]
mov eax, dword [esp + 0x58]
add dword [esp + 0x18], eax
fldcw word [esp + 0x10]
fld qword [esp + 0x50]
push ecx
fsub qword [0x4fd7e0]
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp dword [esp]
call fcn.00480680
mov ecx, dword [0x504214]
add esp, 4
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x47ec50
dec ecx
mov dword [esp + 0x20], ecx
mov eax, ecx
sub eax, ebp
inc eax
test eax, eax
jle 0x47f00d
fld dword [esp + 0x78]
sub esp, 8
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.004dc850
mov ebx, eax
mov dword [esp + 0x10], ebx
fild dword [esp + 0x10]
fld dword [esp + 0x78]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x47ece1
fild dword [esp + 0x10]
fld st(1)
fsub qword [0x4fd830]
fcompp
fnstsw ax
test ah, 0x41
jne 0x47eca5
inc ebx
mov dword [esp + 0x10], ebx
fisubr dword [esp + 0x10]
sub esp, 8
fmul dword [esp + 0x24]
fdiv dword [esp + 0x88]
fmul qword [0x4fd990]
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.004dc850
fld dword [esp + 0x78]
mov edi, eax
mov dword [esp + 0x1c], eax
jmp 0x47ece7
xor edi, edi
mov dword [esp + 0x1c], edi
fild dword [0x504208]
fcompp
fnstsw ax
test ah, 0x41
jne 0x47ed5a
mov ebp, dword [0x504208]
mov ecx, ebp
sub ecx, ebx
imul ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
sub esp, 8
fild dword [esp + 0x34]
fdiv dword [esp + 0x88]
fmul qword [0x4fd990]
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp qword [esp]
call sub.MSVCR90.dll_floor
fnstcw word [esp + 0x18]
add esp, 8
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov dword [esp + 0x2c], eax
mov ebx, ebp
fldcw word [esp + 0x2c]
fistp qword [esp + 0x58]
mov edx, dword [esp + 0x58]
add edi, edx
mov dword [esp + 0x1c], edi
fldcw word [esp + 0x10]
fld qword [esp + 0x40]
push ecx
fsub qword [0x4fd7e0]
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp dword [esp]
call fcn.00480680
mov ebp, eax
mov eax, dword [0x50420c]
add esp, 4
cmp ebp, eax
jl 0x47ed86
lea ebp, [eax - 1]
mov eax, dword [esp + 0x28]
shl eax, 0x10
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
fdiv dword [esp + 0x80]
call fcn.004dc850
mov ecx, dword [esp + 0x24]
shl ecx, 0x10
mov dword [esp + 0x2c], ecx
fild dword [esp + 0x2c]
mov dword [esp + 0x80], eax
fdiv dword [esp + 0x84]
call fcn.004dc850
mov dword [esp + 0x2c], eax
test edi, edi
jge 0x47ede4
jmp 0x47edd0
cmp ebx, ebp
jg 0x47ede0
add edi, dword [esp + 0x80]
inc ebx
test edi, edi
jl 0x47edd0
mov dword [esp + 0x1c], edi
mov ecx, edi
sar ecx, 0x10
test ecx, ecx
je 0x47edfb
and edi, 0xffff
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x18]
test ecx, ecx
jge 0x47ee1b
mov edx, dword [esp + 0x14]
cmp edx, dword [esp + 0x20]
jg 0x47ee17
inc dword [esp + 0x14]
add ecx, eax
test ecx, ecx
jl 0x47ee03
mov dword [esp + 0x18], ecx
mov edx, ecx
sar edx, 0x10
test edx, edx
je 0x47ee32
and ecx, 0xffff
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x14]
sub ebp, ebx
inc ebp
inc ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ecx
test ebp, ebp
jle 0x47f00d
test ecx, ecx
jle 0x47f00d
mov edx, dword [esp + 0x18]
lea eax, [ebp - 1]
imul eax, dword [esp + 0x80]
add eax, edi
sar eax, 0x10
add eax, dword [esp + 0x34]
add ebx, ebx
cmp eax, dword [esi]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], edx
jl 0x47ee83
dec dword [esp + 0x80]
dec ecx
imul ecx, dword [esp + 0x2c]
add ecx, edx
sar ecx, 0x10
add ecx, dword [esp + 0x30]
cmp ecx, dword [esi + 4]
jl 0x47ee9b
dec dword [esp + 0x2c]
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
push ecx
call fcn.00465970
add esp, 4
mov dword [esp + 0x40], eax
test eax, eax
je 0x47f00d
mov edx, dword [0x5042a8]
mov eax, dword [0x5042a4]
push edx
call fcn.00465970
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x30]
add esp, 4
call fcn.00465950
add eax, 0x10
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x47f00d
mov ecx, dword [esp + 0x14]
lea edx, [ecx*4]
mov dword [esp + 0x74], edx
mov dword [esp + 0x14], eax
jmp 0x47ef08
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esi + 0x2c]
sar eax, 0x10
sub ecx, eax
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x18], ebp
mov eax, dword [edx + ecx*4 - 4]
sub eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
add eax, dword [esp + 0x40]
lea edx, [eax + ecx - 1]
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x74]
mov ecx, dword [ecx + edx]
add ecx, dword [esp + 0x50]
mov eax, edi
add ecx, ebx
mov edx, dword [esp + 0x70]
mov dl, byte [edx]
test dl, dl
je 0x47efb1
mov esi, dword [esp + 0x58]
movzx edx, dl
movsx edi, word [esi + edx*2]
movzx esi, word [ecx]
mov edx, esi
mov ebx, edi
and edx, 0xf800
and ebx, 0xf800
sub edx, ebx
jns 0x47ef7c
xor edx, edx
mov ebx, esi
mov ebp, edi
and ebx, 0x7e0
and ebp, 0x7e0
sub ebx, ebp
jns 0x47ef92
xor ebx, ebx
and esi, 0x1f
and edi, 0x1f
sub esi, edi
jns 0x47ef9e
xor esi, esi
mov edi, dword [esp + 0x1c]
or edx, ebx
mov ebx, dword [esp + 0x10]
or edx, esi
mov esi, dword [esp + 0x64]
mov word [ecx], dx
add eax, dword [esp + 0x80]
add ecx, 2
mov edx, eax
sar edx, 0x10
sub dword [esp + 0x70], edx
mov edx, 1
and eax, 0xffff
sub dword [esp + 0x18], edx
jne 0x47ef4e
mov eax, dword [esp + 0x2c]
add dword [esp + 0x20], eax
add dword [esp + 0x74], 4
sub dword [esp + 0x14], edx
jne 0x47ef04
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
fstp st(3)
fstp st(2)
fstp st(0)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret