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

Disassembly:
sub esp, 0x4c
fldz
push ebx
mov ebx, dword [esp + 0x54]
fld dword [esp + 0x64]
mov eax, dword [ebx]
fcom st(1)
mov ecx, dword [eax + 4]
push ebp
push esi
mov esi, dword [esp + 0x60]
imul ecx, esi
add ecx, dword [eax + 0x18]
mov eax, dword [0x52b3ac]
mov eax, dword [eax]
mov edx, dword [eax + 4]
imul edx, dword [0x52b3b0]
add edx, dword [eax + 0x18]
xor ebp, ebp
fnstsw ax
push edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x2c], ebp
test ah, 0x41
jnp 0x423653
fld dword [esp + 0x74]
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 0x41
jnp 0x423653
mov edx, dword [ecx]
mov edi, dword [ecx + 4]
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
mov dword [esp + 0x20], edi
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fld st(0)
fsub st(2)
fabs
fld qword [0x4a6dc8]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x423117
fild dword [esp + 0x20]
fsub st(4)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x423119
fstp st(2)
fstp st(0)
fstp st(0)
fld dword [esp + 0x6c]
call fcn.00499690
fld dword [esp + 0x68]
mov edi, eax
call fcn.00499690
mov edx, eax
push esi
push ebx
mov eax, edi
call fcn.00420600
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret
fstp st(0)
fild dword [ecx + 8]
fmul st(2)
fdivrp st(1)
fsubr dword [esp + 0x68]
fstp dword [esp + 0x68]
fild dword [esp + 0x20]
fstp dword [esp + 0x18]
fld dword [esp + 0x6c]
fild dword [ecx + 0xc]
fmul st(3)
fdiv dword [esp + 0x18]
fsubp st(1)
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fild dword [0x52be08]
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x423651
fld st(0)
faddp st(3)
fxch st(2)
fst qword [esp + 0x48]
fld qword [0x4a6ba0]
fsub st(1), st(0)
fild dword [0x52be04]
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 1
je 0x423661
fld dword [esp + 0x68]
fild dword [0x52be18]
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x42365f
faddp st(2)
fxch st(1)
fst qword [esp + 0x38]
fsubrp st(1)
fild dword [0x52be3c]
fcompp
fnstsw ax
test ah, 1
je 0x423665
sub esp, 8
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
mov esi, eax
mov dword [esp + 0x14], esi
fild dword [esp + 0x14]
fld dword [esp + 0x6c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x42322c
fild dword [esp + 0x14]
fld st(1)
fsub qword [0x4a6ba0]
fcompp
fnstsw ax
test ah, 0x41
jne 0x4231fb
inc esi
mov dword [esp + 0x14], esi
fisubr dword [esp + 0x14]
sub esp, 8
fmul dword [esp + 0x20]
fdiv dword [esp + 0x7c]
fmul qword [0x4a6da0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
mov ebx, eax
jmp 0x423230
fstp st(0)
xor ebx, ebx
mov ebp, dword [0x52be04]
cmp esi, ebp
jge 0x423293
mov eax, ebp
sub eax, esi
imul eax, edi
mov dword [esp + 0x34], eax
sub esp, 8
fild dword [esp + 0x3c]
fdiv dword [esp + 0x7c]
fmul qword [0x4a6da0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
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 + 0x34], eax
mov dword [esp + 0x14], ebp
mov esi, ebp
fldcw word [esp + 0x34]
fistp qword [esp + 0x50]
mov ecx, dword [esp + 0x50]
add ebx, ecx
fldcw word [esp + 0x10]
fld qword [esp + 0x48]
push ecx
fsub qword [0x4a6bd0]
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.0041c740
mov ebp, eax
mov eax, dword [0x52be08]
add esp, 4
cmp ebp, eax
jle 0x4232be
mov ebp, eax
mov edx, ebp
sub edx, esi
inc edx
test edx, edx
jle 0x423667
fld dword [esp + 0x68]
sub esp, 8
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fld dword [esp + 0x68]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x42334b
fild dword [esp + 0x10]
fld st(1)
fsub qword [0x4a6ba0]
fcompp
fnstsw ax
test ah, 0x41
jne 0x423312
inc dword [esp + 0x10]
fisubr dword [esp + 0x10]
sub esp, 8
fmul dword [esp + 0x38]
fdiv dword [esp + 0x78]
fmul qword [0x4a6da0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
fld dword [esp + 0x68]
mov edi, eax
mov dword [esp + 0x18], eax
jmp 0x423351
xor edi, edi
mov dword [esp + 0x18], edi
fild dword [0x52be3c]
fcompp
fnstsw ax
test ah, 0x41
jne 0x4233c5
mov esi, dword [0x52be3c]
mov eax, esi
sub eax, dword [esp + 0x10]
sub esp, 8
imul eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
fdiv dword [esp + 0x78]
fmul qword [0x4a6da0]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
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 + 0x34], eax
fldcw word [esp + 0x34]
fistp qword [esp + 0x50]
mov ecx, dword [esp + 0x50]
add edi, ecx
mov dword [esp + 0x18], edi
fldcw word [esp + 0x10]
mov dword [esp + 0x10], esi
fld qword [esp + 0x38]
push ecx
fsub qword [0x4a6bd0]
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.0041c740
mov esi, eax
mov eax, dword [0x52be18]
add esp, 4
cmp esi, eax
jle 0x4233f0
mov esi, eax
mov eax, dword [esp + 0x1c]
shl eax, 0x10
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fdiv dword [esp + 0x70]
call fcn.00499690
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x20]
shl eax, 0x10
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fdiv dword [esp + 0x74]
call fcn.00499690
mov ecx, eax
mov dword [esp + 0x34], eax
test edi, edi
jge 0x423446
mov edi, edi
cmp dword [esp + 0x10], esi
jg 0x423442
add edi, dword [esp + 0x70]
inc dword [esp + 0x10]
test edi, edi
jl 0x423430
mov dword [esp + 0x18], edi
mov eax, edi
sar eax, 0x10
test eax, eax
je 0x42345d
and edi, 0xffff
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], edi
test ebx, ebx
jge 0x423471
cmp dword [esp + 0x14], ebp
jg 0x423471
inc dword [esp + 0x14]
add ebx, ecx
test ebx, ebx
jl 0x423461
mov eax, ebx
sar eax, 0x10
test eax, eax
je 0x423484
mov dword [esp + 0x24], eax
and ebx, 0xffff
sub esi, dword [esp + 0x10]
sub ebp, dword [esp + 0x14]
inc esi
inc ebp
mov dword [esp + 0x50], esi
test esi, esi
jle 0x423667
test ebp, ebp
jle 0x423667
mov eax, dword [esp + 0x28]
shl dword [esp + 0x10], 1
dec esi
imul esi, dword [esp + 0x70]
add esi, edi
sar esi, 0x10
add esi, dword [esp + 0x2c]
mov dword [esp + 0x20], ebx
cmp esi, dword [eax]
jl 0x4234c5
dec dword [esp + 0x70]
lea edx, [ebp - 1]
imul edx, ecx
add edx, ebx
sar edx, 0x10
add edx, dword [esp + 0x24]
cmp edx, dword [eax + 4]
jl 0x4234de
dec ecx
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
push eax
mov eax, esi
call fcn.00417890
add esp, 4
mov dword [esp + 0x38], eax
test eax, eax
je 0x423667
mov ecx, dword [0x52b3b0]
mov eax, dword [0x52b3ac]
push ecx
call fcn.00417890
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x14]
add esp, 4
test eax, eax
jne 0x423536
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x30]
push eax
mov eax, esi
call fcn.004177d0
mov ebx, eax
add esp, 4
mov dword [esp + 0x60], ebx
jmp 0x423541
mov ebx, eax
mov dword [esp + 0x60], ebx
call fcn.00413ac0
test ebp, ebp
jle 0x423667
mov ecx, dword [esp + 0x14]
lea edx, [ecx*4]
mov dword [esp + 0x64], edx
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x2c]
sar eax, 0x10
add eax, dword [esp + 0x24]
mov esi, dword [edx + eax*4]
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 0x2c]
mov edx, dword [esp + 0x64]
mov ecx, dword [edx + ecx]
add esi, dword [esp + 0x38]
add ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x50]
add esi, dword [esp + 0x2c]
add ecx, dword [esp + 0x10]
mov eax, edi
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], edx
mov dl, byte [esi]
test dl, dl
je 0x42360f
movzx eax, dl
movzx edi, word [ebx + eax*2 + 0x5c]
movzx edx, word [ecx]
mov eax, edx
mov ebx, edi
and eax, 0xf800
and ebx, 0xf800
add eax, ebx
cmp eax, 0xf800
jbe 0x4235cb
mov eax, 0xf800
mov ebx, edx
mov ebp, edi
and ebx, 0x7e0
and ebp, 0x7e0
add ebx, ebp
cmp ebx, 0x7e0
jbe 0x4235ea
mov ebx, 0x7e0
and edx, 0x1f
and edi, 0x1f
add edx, edi
cmp edx, 0x1f
jbe 0x4235fc
mov edx, 0x1f
mov edi, dword [esp + 0x18]
or eax, ebx
mov ebx, dword [esp + 0x60]
or eax, edx
mov word [ecx], ax
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x70]
add ecx, 2
mov edx, eax
sar edx, 0x10
and eax, 0xffff
add esi, edx
sub dword [esp + 0x1c], 1
mov dword [esp + 0x30], eax
jne 0x42359d
mov eax, dword [esp + 0x34]
add dword [esp + 0x20], eax
add dword [esp + 0x64], 4
sub dword [esp + 0x14], 1
jne 0x42355c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret
fstp st(3)
fstp st(2)
fstp st(0)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4c
ret