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

Disassembly:
sub esp, 0x54
push ebx
fldz
mov ebx, dword [esp + 0x5c]
fld dword [esp + 0x6c]
mov eax, dword [ebx]
fcom st(1)
push ebp
push esi
mov esi, dword [esp + 0x68]
push edi
mov edi, dword [eax + 4]
imul edi, esi
add edi, dword [eax + 0x18]
mov eax, dword [0x52b3ac]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
imul ecx, dword [0x52b3b0]
add ecx, dword [eax + 0x18]
xor ebp, ebp
fnstsw ax
mov dword [esp + 0x5c], edi
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
test ah, 0x41
jnp 0x423cba
fld dword [esp + 0x7c]
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 0x41
jnp 0x423cba
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
mov dword [esp + 0x1c], edx
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fsub st(2)
fabs
fld qword [0x4a6dc8]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x423746
fild dword [esp + 0x1c]
fsub st(4)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x423748
fstp st(2)
fstp st(0)
fstp st(0)
fld dword [esp + 0x74]
call fcn.00499690
fld dword [esp + 0x70]
mov edi, eax
call fcn.00499690
push eax
push esi
push ebx
mov eax, edi
call fcn.00420850
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
fstp st(0)
sub ecx, dword [edi + 8]
fld dword [esp + 0x70]
mov dword [esp + 0x34], ecx
fild dword [esp + 0x34]
fmul st(3)
fdivrp st(2)
fxch st(1)
fsub qword [0x4a6bd0]
fsubp st(1)
fstp dword [esp + 0x70]
fild dword [esp + 0x1c]
fstp dword [esp + 0x20]
fld dword [esp + 0x74]
fild dword [edi + 0xc]
fmul st(3)
fdiv dword [esp + 0x20]
fsubp st(1)
fstp dword [esp + 0x74]
fld dword [esp + 0x74]
fild dword [0x52be08]
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x423cb8
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 0x423cc8
fld dword [esp + 0x70]
fild dword [0x52be18]
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x423cc6
faddp st(2)
fxch st(1)
fst qword [esp + 0x38]
fsubrp st(1)
fild dword [0x52be3c]
fcompp
fnstsw ax
test ah, 1
je 0x423ccc
sub esp, 8
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
mov ebx, eax
mov dword [esp + 0x14], ebx
fild dword [esp + 0x14]
fld dword [esp + 0x74]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x423870
fild dword [esp + 0x14]
fld st(1)
fsub qword [0x4a6ba0]
fcompp
fnstsw ax
test ah, 0x41
jne 0x42383c
inc ebx
mov dword [esp + 0x14], ebx
fisubr dword [esp + 0x14]
sub esp, 8
fmul dword [esp + 0x28]
fdiv dword [esp + 0x84]
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 ebp, eax
jmp 0x423872
fstp st(0)
mov esi, dword [0x52be04]
cmp ebx, esi
jge 0x4238da
mov eax, esi
sub eax, ebx
imul eax, dword [esp + 0x1c]
mov dword [esp + 0x34], eax
sub esp, 8
fild dword [esp + 0x3c]
fdiv dword [esp + 0x84]
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], esi
mov ebx, esi
fldcw word [esp + 0x34]
fistp qword [esp + 0x50]
mov ecx, dword [esp + 0x50]
add ebp, 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 ecx, dword [0x52be08]
add esp, 4
cmp eax, ecx
mov dword [esp + 0x20], eax
jle 0x42390c
mov dword [esp + 0x20], ecx
mov eax, ecx
sub eax, ebx
inc eax
test eax, eax
jle 0x423cce
fld dword [esp + 0x70]
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 + 0x70]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x42399a
fild dword [esp + 0x10]
fld st(1)
fsub qword [0x4a6ba0]
fcompp
fnstsw ax
test ah, 0x41
jne 0x42395e
inc dword [esp + 0x10]
fisubr dword [esp + 0x10]
sub esp, 8
fmul dword [esp + 0x20]
fdiv dword [esp + 0x80]
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 + 0x70]
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x4239a0
xor esi, esi
mov dword [esp + 0x18], esi
fild dword [0x52be3c]
fcompp
fnstsw ax
test ah, 0x41
jne 0x423a17
mov ebx, dword [0x52be3c]
mov edx, ebx
sub edx, dword [esp + 0x10]
sub esp, 8
imul edx, dword [esp + 0x2c]
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
fdiv dword [esp + 0x80]
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 eax, dword [esp + 0x50]
add esi, eax
mov dword [esp + 0x18], esi
fldcw word [esp + 0x10]
mov dword [esp + 0x10], ebx
fld qword [esp + 0x38]
push ecx
fsub qword [0x4a6bd0]
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.0041c740
mov ebx, eax
mov eax, dword [0x52be18]
add esp, 4
cmp ebx, eax
jle 0x423a42
mov ebx, eax
mov ecx, dword [esp + 0x24]
shl ecx, 0x10
mov dword [esp + 0x34], ecx
fild dword [esp + 0x34]
fdiv dword [esp + 0x78]
call fcn.00499690
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x1c]
shl eax, 0x10
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fdiv dword [esp + 0x7c]
call fcn.00499690
mov edx, eax
mov dword [esp + 0x30], eax
test esi, esi
jge 0x423a96
cmp dword [esp + 0x10], ebx
jg 0x423a92
add esi, dword [esp + 0x78]
inc dword [esp + 0x10]
test esi, esi
jl 0x423a80
mov dword [esp + 0x18], esi
mov eax, esi
sar eax, 0x10
test eax, eax
je 0x423aad
and esi, 0xffff
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], esi
test ebp, ebp
jge 0x423ac7
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x14], eax
jg 0x423acb
inc dword [esp + 0x14]
add ebp, edx
test ebp, ebp
jl 0x423ab1
jmp 0x423acb
mov eax, dword [esp + 0x20]
mov ecx, ebp
sar ecx, 0x10
test ecx, ecx
je 0x423ade
mov dword [esp + 0x28], ecx
and ebp, 0xffff
sub ebx, dword [esp + 0x10]
sub eax, dword [esp + 0x14]
inc ebx
mov ecx, ebx
inc eax
mov ebx, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x34], ebx
test ecx, ecx
jle 0x423cce
test ebx, ebx
jle 0x423cce
shl dword [esp + 0x10], 1
dec ecx
imul ecx, dword [esp + 0x78]
add ecx, esi
sar ecx, 0x10
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x20], ebp
cmp ecx, dword [edi]
jl 0x423b23
dec dword [esp + 0x78]
lea eax, [ebx - 1]
imul eax, edx
add eax, ebp
sar eax, 0x10
add eax, dword [esp + 0x28]
cmp eax, dword [edi + 4]
jl 0x423b3c
dec edx
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x68]
push ecx
mov eax, ebp
call fcn.00417890
add esp, 4
mov dword [esp + 0x38], eax
test eax, eax
je 0x423cce
mov edx, dword [0x52b3b0]
mov eax, dword [0x52b3ac]
push edx
call fcn.00417890
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x14]
add esp, 4
test eax, eax
jne 0x423b90
mov eax, dword [edi + 0x30]
push eax
mov eax, ebp
call fcn.004177d0
mov ebp, eax
add esp, 4
mov dword [esp + 0x1c], ebp
jmp 0x423ba1
mov ebp, eax
mov ebx, ebp
mov dword [esp + 0x1c], ebp
call fcn.00413ac0
mov ebx, dword [esp + 0x34]
test ebx, ebx
jle 0x423cce
mov ecx, dword [esp + 0x14]
lea edx, [ecx*4]
mov dword [esp + 0x68], edx
mov dword [esp + 0x34], ebx
mov eax, dword [esp + 0x20]
mov ecx, dword [edi + 0x2c]
sar eax, 0x10
add eax, dword [esp + 0x28]
mov ebx, esi
mov edx, dword [ecx + eax*4]
sub edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
add edx, dword [esp + 0x38]
lea ecx, [edx + eax - 1]
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x2c]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x68]
mov ecx, dword [ecx + eax]
add ecx, dword [esp + 0x48]
mov dword [esp + 0x14], edx
add ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
mov al, byte [eax]
test al, al
je 0x423c77
movzx edx, al
movzx esi, word [ebp + edx*2 + 0x5c]
movzx edx, word [ecx]
mov eax, edx
mov edi, esi
and eax, 0xf800
and edi, 0xf800
add eax, edi
cmp eax, 0xf800
jbe 0x423c33
mov eax, 0xf800
mov edi, edx
mov ebp, esi
and edi, 0x7e0
and ebp, 0x7e0
add edi, ebp
cmp edi, 0x7e0
jbe 0x423c52
mov edi, 0x7e0
and edx, 0x1f
and esi, 0x1f
add edx, esi
cmp edx, 0x1f
jbe 0x423c64
mov edx, 0x1f
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
or eax, edi
mov edi, dword [esp + 0x5c]
or eax, edx
mov word [ecx], ax
add ebx, dword [esp + 0x78]
add ecx, 2
mov eax, ebx
sar eax, 0x10
sub dword [esp + 0x6c], eax
and ebx, 0xffff
sub dword [esp + 0x14], 1
jne 0x423c01
mov ecx, dword [esp + 0x30]
add dword [esp + 0x20], ecx
add dword [esp + 0x68], 4
sub dword [esp + 0x34], 1
jne 0x423bbc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret
fstp st(3)
fstp st(2)
fstp st(0)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret