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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x1ac
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
fld qword [ebp + 0x20]
mov dword [ebp - method.et.virtual_0], vtable.et.0
fstp qword [ebp - 0x180]
mov dword [esp + 4], esi
mov dword [esp], ebx
fldz
fst qword [ebp - 0x110]
fst qword [ebp - 0x108]
fstp qword [ebp - 0x100]
call fcn.0047f990
lea eax, [esi + 0x40]
fstp qword [ebp - 0x148]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0047f990
lea eax, [esi + 0x20]
fstp qword [ebp - 0x140]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0047f990
fld qword [esi + 0x88]
mov eax, dword [ebp + 0xc]
fmul qword [esi + 0x80]
mov dword [esp], eax
fld st(0)
fld qword [ebp - 0x148]
fmul st(2)
fstp qword [ebp - 0x110]
fld qword [ebp - 0x140]
fmulp st(2)
fxch st(1)
fstp qword [ebp - 0x108]
fmulp st(1)
fstp qword [ebp - 0x100]
call fcn.00472800
mov eax, dword [ebp + 0x18]
fstp qword [ebp - 0x178]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x140], eax
sub eax, edx
sar eax, 3
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
sar eax, 1
test eax, eax
jle 0x476e7b
shl eax, 4
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x184], eax
mov eax, dword [ebp - 0x170]
fld qword [edx + eax]
fld qword [edx + eax + 8]
mov eax, dword [ebp + 0xc]
fst qword [esp + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x1c]
fstp qword [ebp - 0x148]
mov dword [esp + 8], eax
lea eax, [ebp - 0x130]
fst qword [esp + 0x10]
mov dword [esp + 4], eax
lea eax, [ebp - 0x138]
fstp qword [ebp - 0x140]
mov dword [esp], eax
call fcn.00471dc0
fld qword [ebp - 0x148]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x124], 0
mov dword [ebp - 0x120], 0
fstp qword [esp + 0x24]
mov dword [ebp - 0x11c], 0
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x1c]
fld qword [ebp - 0x140]
fstp qword [esp + 0x1c]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x124]
fld qword [ebp - 0x130]
mov dword [esp], eax
fstp qword [esp + 0xc]
fld qword [ebp - 0x138]
fstp qword [esp + 4]
call fcn.00475fd0
mov ecx, dword [ebp - 0x120]
mov edx, dword [ebp - 0x124]
mov eax, ecx
sub eax, edx
sar eax, 5
imul eax, eax, 0xcccccccd
test eax, eax
je 0x476c96
mov dword [ebp - 0x16c], 0
nop
mov eax, dword [ebp - 0x16c]
mov dword [ebp - 0x140], 0
lea ebx, [eax + eax*4]
mov eax, dword [esi + 0xac]
shl ebx, 5
add ebx, edx
mov edx, dword [esi + 0xa8]
fld qword [ebx]
mov dword [ebp - 0xf8], vtable.et.0
mov dword [ebp - 0xd8], vtable.et.0
fadd qword [ebx + 0x28]
sub eax, edx
sar eax, 3
imul eax, eax, 0xc4ec4ec5
test eax, eax
fld dword [0x4bbd50]
fmul st(1), st(0)
fxch st(1)
fstp qword [ebp - 0x160]
fld qword [ebx + 8]
fadd qword [ebx + 0x30]
fmulp st(1)
fstp qword [ebp - 0x168]
fldz
fst qword [ebp - 0xf0]
fst qword [ebp - 0xe8]
fst qword [ebp - 0xe0]
fst qword [ebp - 0xd0]
fst qword [ebp - 0xc8]
fstp qword [ebp - 0xc0]
jne 0x476807
jmp 0x4768b5
fxch st(2)
fchs
fstp qword [ebp - 0x158]
fchs
fstp qword [ebp - 0x148]
fchs
fstp qword [ebp - 0x150]
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.00472040
test al, al
fld qword [ebp - 0x150]
je 0x476880
fadd qword [ebp - 0xf0]
fstp qword [ebp - 0xf0]
fld qword [ebp - 0x148]
fadd qword [ebp - 0xe8]
fstp qword [ebp - 0xe8]
fld qword [ebp - 0x158]
fadd qword [ebp - 0xe0]
fstp qword [ebp - 0xe0]
mov edx, dword [esi + 0xa8]
mov eax, dword [esi + 0xac]
add dword [ebp - 0x140], 1
mov ecx, dword [ebp - 0x140]
sub eax, edx
sar eax, 3
imul eax, eax, 0xc4ec4ec5
cmp ecx, eax
jae 0x4768b5
imul edi, dword [ebp - 0x140], 0x68
fld qword [ebp - 0x168]
add edi, edx
fsubr qword [edi + 8]
lea eax, [edi + 0x10]
fld qword [ebp - 0x160]
fsubr qword [edi]
mov dword [esp + 8], eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x38], vtable.et.0
mov dword [esp + 4], eax
lea eax, [ebp - 0x78]
mov dword [esp], eax
fstp qword [ebp - 0x30]
fstp qword [ebp - 0x28]
fldz
fstp qword [ebp - 0x20]
call fcn.0047fa20
fld qword [ebp - 0x60]
cmp byte [edi + 0x30], 0
fld qword [ebp - 0x68]
fld qword [ebp - 0x70]
je 0x476770
fsubr qword [edi + 0x40]
fstp qword [ebp - 0x150]
fsubr qword [edi + 0x48]
fstp qword [ebp - 0x148]
fsubr qword [edi + 0x50]
fstp qword [ebp - 0x158]
jmp 0x47678a
fadd qword [ebp - 0xd0]
fstp qword [ebp - 0xd0]
fld qword [ebp - 0x148]
fadd qword [ebp - 0xc8]
fstp qword [ebp - 0xc8]
fld qword [ebp - 0x158]
fadd qword [ebp - 0xc0]
fstp qword [ebp - 0xc0]
jmp 0x4767db
fldz
fld qword [ebp - 0x178]
fucompi st(1)
fstp st(0)
jbe 0x476d10
fld1
fchs
fstp qword [ebp - 0x140]
fld qword [ebp - 0x168]
lea edi, [ebp - 0x118]
mov eax, dword [ebp + 0xc]
fstp qword [esp + 0xc]
mov dword [esp + 0x18], edi
fld qword [ebp - 0x160]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0xb8]
fstp qword [esp + 4]
mov dword [esp], eax
call fcn.00472690
fld qword [ebp - 0x168]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], edi
fstp qword [esp + 0xc]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x98]
fld qword [ebp - 0x160]
mov dword [esp], eax
fstp qword [esp + 4]
call fcn.00472380
lea eax, [ebp - 0x98]
mov dword [esp + 8], eax
lea eax, [ebp - 0xb8]
mov dword [esp + 4], eax
lea eax, [ebp - 0x78]
mov dword [esp], eax
call fcn.0047f8f0
lea eax, [ebp - 0x98]
fld qword [ebp - 0x140]
mov dword [esp + 4], eax
lea eax, [ebp - 0x58]
fstp qword [esp + 8]
mov dword [esp], eax
call fcn.0047f960
fld qword [ebp - 0xf0]
lea eax, [ebp - 0x78]
fadd qword [ebp - 0x50]
mov dword [esp + 4], eax
lea eax, [ebp - 0x38]
mov dword [esp], eax
fstp qword [ebp - 0xf0]
fld qword [ebp - 0xe8]
fadd qword [ebp - 0x48]
fstp qword [ebp - 0xe8]
fld qword [ebp - 0xe0]
fadd qword [ebp - 0x40]
fstp qword [ebp - 0xe0]
fld qword [ebp - 0x140]
fstp qword [esp + 8]
call fcn.0047f960
fld qword [ebp - 0xd0]
lea eax, [ebp - 0xf8]
fadd qword [ebp - 0x30]
mov dword [esp + 8], eax
lea eax, [ebp - 0xd8]
mov dword [esp + 4], eax
lea eax, [ebp - 0x38]
mov dword [esp], eax
fstp qword [ebp - 0xd0]
fld qword [ebp - 0xc8]
fadd qword [ebp - 0x28]
fstp qword [ebp - 0xc8]
fld qword [ebp - 0xc0]
fadd qword [ebp - 0x20]
fstp qword [ebp - 0xc0]
call fcn.0047f8f0
lea eax, [ebp - 0x38]
fld dword [0x4bbd50]
mov dword [esp + 4], eax
lea eax, [ebp - 0x58]
fstp qword [esp + 8]
mov dword [esp], eax
call fcn.0047f960
fld qword [ebx + 0x28]
fsub qword [ebx]
fld qword [ebx + 0x30]
fsub qword [ebx + 8]
fld st(0)
fxch st(2)
fmul st(0)
fxch st(2)
fmulp st(1)
faddp st(1)
fld st(0)
fsqrt
fucomi st(0)
jp 0x476e1e
fstp st(1)
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
sar eax, 3
mov ecx, eax
shr ecx, 0x1f
add eax, ecx
mov ecx, dword [ebx + 0x10]
sar eax, 1
mov dword [ebp - 0x148], eax
mov eax, dword [ebx + 0x38]
lea edi, [ecx + 1]
cmp edi, dword [ebp - 0x148]
mov dword [ebp - 0x140], eax
je 0x476cf0
mov eax, edi
lea edi, [edi + edi + 1]
shl eax, 4
mov dword [ebp - 0x150], eax
lea eax, [edi*8]
mov dword [ebp - 0x158], eax
mov eax, dword [ebp - 0x140]
lea edi, [eax + 1]
cmp edi, dword [ebp - 0x148]
je 0x476cd4
mov eax, edi
lea edi, [edi + edi + 1]
shl eax, 4
mov dword [ebp - 0x160], eax
shl edi, 3
mov eax, dword [ebp - 0x150]
fstp qword [ebp - 0x148]
add ecx, ecx
fld qword [edx + eax]
mov eax, dword [ebp - 0x158]
fsub qword [edx + ecx*8]
fstp qword [ebp - 0xb8]
fld qword [edx + eax]
mov eax, dword [ebp - 0x160]
fsub qword [edx + ecx*8 + 8]
mov ecx, dword [ebp - 0x140]
add ecx, ecx
fstp qword [ebp - 0xb0]
fld qword [edx + eax]
lea eax, [ebp - 0xb8]
fsub qword [edx + ecx*8]
fstp qword [ebp - 0x98]
fld qword [edx + edi]
fsub qword [edx + ecx*8 + 8]
mov dword [esp], eax
fstp qword [ebp - 0x90]
call fcn.00471f30
lea eax, [ebp - 0x98]
mov dword [esp], eax
call fcn.00471f30
fld qword [ebp - 0xb8]
lea eax, [ebp - 0x78]
fsub qword [ebp - 0x98]
mov dword [esp], eax
fstp qword [ebp - 0x78]
fld qword [ebp - 0xb0]
fsub qword [ebp - 0x90]
fstp qword [ebp - 0x70]
call fcn.00471f30
fld qword [ebx + 0x30]
lea eax, [ebp - 0x38]
fsub qword [ebx + 8]
fstp qword [ebp - 0x38]
fld qword [ebx]
fsub qword [ebx + 0x28]
mov dword [esp], eax
fstp qword [ebp - 0x30]
call fcn.00471f30
fld qword [ebp - 0x38]
fld qword [ebp - 0x30]
fld qword [ebp - 0x78]
fmul st(2)
fld qword [ebp - 0x70]
fmul st(2)
faddp st(1)
fldz
fucompi st(1)
fld qword [ebp - 0x148]
ja 0x476d20
fld qword [0x4bbde0]
fucompi st(2)
ja 0x476c60
fmulp st(1)
fld qword [esi + 0x80]
fld qword [ebp - 0x40]
fld st(1)
fmul st(3)
fmul st(3)
fld dword [0x4bbde8]
fdiv st(1), st(0)
fxch st(2)
fst qword [ebp - 0x148]
fdivrp st(1)
fabs
fstp qword [ebp - 0x140]
fld qword [ebp - 0x50]
fld qword [ebp - 0x48]
fxch st(5)
fmul st(1)
fxch st(5)
fst qword [ebp - 0x150]
fmulp st(6)
fxch st(5)
fsubrp st(4)
fxch st(3)
fabs
fxch st(1)
fmul st(0)
lea eax, [ebx + 0x80]
lea edx, [ebp - 0x58]
fmulp st(2)
fxch st(1)
fdivrp st(2)
fdivrp st(1)
fld qword [ebp - 0x140]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
cmp edx, eax
je 0x476c36
fxch st(1)
fstp qword [ebx + 0x88]
fld qword [ebp - 0x150]
fstp qword [ebx + 0x90]
fld qword [ebp - 0x148]
fstp qword [ebx + 0x98]
jmp 0x476c40
fstp st(1)
nop
lea esi, [esi]
fld qword [ebp - 0x180]
fld st(0)
fdivr st(2)
fst qword [ebx + 0x78]
fxch st(1)
fucompi st(2)
fstp st(1)
jbe 0x476d2b
fstp st(0)
jmp 0x476c68
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x120]
mov edx, dword [ebp - 0x124]
add dword [ebp - 0x16c], 1
mov ebx, dword [ebp - 0x16c]
mov eax, ecx
sub eax, edx
sar eax, 5
imul eax, eax, 0xcccccccd
cmp ebx, eax
jb 0x4766d0
cmp edx, ecx
mov eax, edx
je 0x476ca5
add eax, 0xa0
cmp ecx, eax
jne 0x476c9c
test edx, edx
je 0x476cb1
mov dword [esp], edx
call sub.libstdc_6.dll_operator_delete_void_
add dword [ebp - 0x170], 0x10
mov eax, dword [ebp - 0x170]
cmp eax, dword [ebp - 0x184]
je 0x476e7b
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
jmp 0x4765fb
mov edi, 8
mov dword [ebp - 0x160], 0
jmp 0x476ac3
mov dword [ebp - 0x158], 8
mov dword [ebp - 0x150], 0
jmp 0x476a9c
fld1
fstp qword [ebp - 0x140]
jmp 0x4768d1
fxch st(1)
fchs
fxch st(1)
jmp 0x476b9a
mov eax, dword [esi + 0xb8]
cmp eax, dword [esi + 0xbc]
je 0x476e2d
test eax, eax
je 0x476e0c
mov edx, dword [ebx]
mov dword [eax], edx
mov edx, dword [ebx + 4]
mov dword [eax + 4], edx
mov edx, dword [ebx + 8]
mov dword [eax + 8], edx
mov edx, dword [ebx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ebx + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [ebx + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [ebx + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 0x1c], edx
mov edx, dword [ebx + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [ebx + 0x24]
mov dword [eax + 0x24], edx
mov edx, dword [ebx + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [ebx + 0x2c]
mov dword [eax + 0x2c], edx
mov edx, dword [ebx + 0x30]
mov dword [eax + 0x30], edx
mov edx, dword [ebx + 0x34]
mov dword [eax + 0x34], edx
mov edx, dword [ebx + 0x38]
mov dword [eax + 0x38], edx
mov edx, dword [ebx + 0x3c]
mov dword [eax + 0x3c], edx
mov edx, dword [ebx + 0x40]
mov dword [eax + 0x40], edx
mov edx, dword [ebx + 0x44]
fld qword [ebx + 0x58]
mov dword [eax + 0x44], edx
mov edx, dword [ebx + 0x48]
mov dword [eax + 0x48], edx
mov edx, dword [ebx + 0x4c]
mov dword [eax + 0x4c], edx
mov edx, dword [ebx + 0x50]
fstp qword [eax + 0x58]
fld qword [ebx + 0x60]
mov dword [eax + 0x50], edx
fstp qword [eax + 0x60]
fld qword [ebx + 0x68]
fstp qword [eax + 0x68]
fld qword [ebx + 0x70]
mov dword [eax + 0x80], vtable.et.0
fstp qword [eax + 0x70]
fstp qword [eax + 0x78]
fld qword [ebx + 0x88]
fstp qword [eax + 0x88]
fld qword [ebx + 0x90]
fstp qword [eax + 0x90]
fld qword [ebx + 0x98]
fstp qword [eax + 0x98]
jmp 0x476e0e
fstp st(0)
add eax, 0xa0
mov dword [esi + 0xb8], eax
jmp 0x476c68
fstp st(0)
fstp qword [esp]
call fcn.004881d0
jmp 0x476a49
fstp st(0)
lea ecx, [esi + 0xb4]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.004a5bd0
sub esp, 8
jmp 0x476c68
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret