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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1fc
mov esi, dword [esp + 0x218]
mov eax, dword [esp + 0x214]
mov ebp, dword [esp + 0x210]
mov ebx, dword [esp + 0x21c]
lea edx, [eax + 1]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
sub ecx, eax
sar ecx, 3
shr ecx, 1
cmp edx, ecx
je 0x4780d0
mov edi, edx
lea edx, [edx + edx + 1]
shl edi, 4
shl edx, 3
mov ecx, dword [esp + 0x214]
add ecx, ecx
fld qword [eax + ecx*8]
fst qword [esp + 0x50]
fld qword [eax + ecx*8 + 8]
fld st(0)
fstp qword [esp + 0x58]
fld qword [eax + edi]
fst qword [esp + 0x60]
fld qword [eax + edx]
fst qword [esp + 0x68]
fxch st(1)
fsubrp st(3)
fsubrp st(1)
fld st(1)
fmul st(2)
fld st(1)
fmul st(2)
faddp st(1)
fld st(0)
fsqrt
fucomi st(0)
jp 0x4780eb
fstp st(1)
fdiv st(2), st(0)
fxch st(2)
test bl, bl
fst qword [esp + 0x40]
fxch st(1)
fdivrp st(2)
fxch st(1)
fst qword [esp + 0x48]
je 0x478090
fchs
fstp qword [esp + 0x70]
fstp qword [esp + 0x78]
lea edi, [esp + 0x140]
fld dword [0x4bbd50]
mov ecx, 0x2c
xor eax, eax
lea ebx, [esp + 0x150]
rep stosd dword es:[edi], eax
fstp qword [esp + 0x190]
fld1
fst qword [esp + 0x1a0]
fst qword [esp + 0x1b0]
fst qword [esp + 0x1c0]
fst qword [esp + 0x1d0]
fstp qword [esp + 0x1e0]
fld qword [0x4bbe08]
fstp qword [esp + 0x148]
fld qword [0x4bbe10]
fstp qword [esp + 0x158]
fld qword [0x4bbe18]
fstp qword [esp + 0x168]
fld qword [0x4bbe20]
fstp qword [esp + 0x178]
fld qword [0x4bbe28]
fstp qword [esp + 0x188]
fld qword [0x4bbe30]
fstp qword [esp + 0x1a8]
fld qword [0x4bbe38]
fstp qword [esp + 0x1b8]
fld qword [0x4bbe40]
fstp qword [esp + 0x1c8]
fld qword [0x4bbe48]
fstp qword [esp + 0x1d8]
fld qword [0x4bbe50]
fstp qword [esp + 0x1e8]
fld qword [0x4bbdf8]
fld qword [0x4bbe00]
fldz
jmp 0x477f69
mov eax, edi
lea edi, [edi + edi + 1]
shl eax, 4
shl edi, 3
fld qword [esp + 0xe0]
add ecx, ecx
fld st(0)
fsubr dword [0x4bbd4c]
fld qword [edx + ecx*8]
fmul st(1)
fld qword [edx + eax]
fmul st(3)
faddp st(1)
fst qword [esp + 0xc8]
fxch st(1)
fmul qword [edx + ecx*8 + 8]
fxch st(2)
fmul qword [edx + edi]
faddp st(2)
fxch st(1)
fst qword [esp + 0xd0]
fldz
fstp qword [esp + 0xe8]
fxch st(1)
fsubr qword [esp + 0xa0]
fxch st(1)
fsubr qword [esp + 0xa8]
fxch st(1)
fmul st(0)
fxch st(1)
fmul st(0)
faddp st(1)
fld st(0)
fsqrt
fucomi st(0)
jp 0x4780dc
fstp st(1)
fstp qword [esp + 0xf8]
call sub.msvcrt.dll_rand
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fld dword [0x4bbd68]
fmul st(1), st(0)
fstp qword [esp + 0x30]
fstp qword [esp + 0x100]
call sub.msvcrt.dll_rand
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fld qword [esp + 0x30]
fmulp st(1)
fstp qword [esp + 0x108]
call sub.msvcrt.dll_rand
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
mov eax, dword [ebp + 4]
cmp eax, dword [ebp + 8]
fld qword [esp + 0x30]
fmulp st(1)
fst qword [esp + 0x110]
je 0x4780b0
test eax, eax
je 0x477f20
mov edx, dword [esp + 0xa0]
mov dword [eax], edx
mov edx, dword [esp + 0xa4]
mov dword [eax + 4], edx
mov edx, dword [esp + 0xa8]
mov dword [eax + 8], edx
mov edx, dword [esp + 0xac]
mov dword [eax + 0xc], edx
mov edx, dword [esp + 0xb0]
mov dword [eax + 0x10], edx
mov edx, dword [esp + 0xb4]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0xb8]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0xbc]
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0xc0]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0xc4]
mov dword [eax + 0x24], edx
mov edx, dword [esp + 0xc8]
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0xcc]
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0xd0]
mov dword [eax + 0x30], edx
mov edx, dword [esp + 0xd4]
mov dword [eax + 0x34], edx
mov edx, dword [esp + 0xd8]
mov dword [eax + 0x38], edx
mov edx, dword [esp + 0xdc]
mov dword [eax + 0x3c], edx
mov edx, dword [esp + 0xe0]
mov dword [eax + 0x40], edx
mov edx, dword [esp + 0xe4]
fld qword [esp + 0xf8]
mov dword [eax + 0x80], vtable.et.0
mov dword [eax + 0x44], edx
mov edx, dword [esp + 0xe8]
mov dword [eax + 0x48], edx
mov edx, dword [esp + 0xec]
fstp qword [eax + 0x58]
fld qword [esp + 0x100]
mov dword [eax + 0x4c], edx
mov edx, dword [esp + 0xf0]
fstp qword [eax + 0x60]
fld qword [esp + 0x108]
mov dword [eax + 0x50], edx
fstp qword [eax + 0x68]
fstp qword [eax + 0x70]
fld qword [esp + 0x118]
fstp qword [eax + 0x78]
fld qword [esp + 0x128]
fstp qword [eax + 0x88]
fld qword [esp + 0x130]
fstp qword [eax + 0x90]
fld qword [esp + 0x138]
fstp qword [eax + 0x98]
jmp 0x477f22
fstp st(0)
add eax, 0xa0
mov dword [ebp + 4], eax
lea eax, [esp + 0x1f0]
cmp ebx, eax
je 0x478080
fld qword [ebx]
add ebx, 0x10
fstp qword [esp + 0x38]
fld qword [ebx - 8]
fst qword [esp]
fstp qword [esp + 0x30]
call fcn.0048bb90
fstp qword [esp + 0x28]
fld qword [esp + 0x30]
fstp qword [esp]
call fcn.0048bc50
fld qword [esp + 0x28]
fld qword [esp + 0x38]
fldz
mov eax, dword [esp + 0x214]
mov dword [esp + 0x10], esi
mov dword [esp + method.et.virtual_0], vtable.et.0
fst qword [esp + 0x128]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0x90]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x80]
mov dword [esp + 8], eax
lea eax, [esp + 0xe0]
mov dword [esp + 4], eax
lea eax, [esp + 0xd8]
fst qword [esp + 0x130]
mov dword [esp], eax
fst qword [esp + 0x138]
fxch st(1)
fst qword [esp + 0xb8]
fld st(0)
fsubr dword [0x4bbd4c]
fld qword [esp + 0x50]
fmul st(1)
fld qword [esp + 0x60]
fmul st(3)
faddp st(1)
fst qword [esp + 0xa0]
fxch st(1)
fmul qword [esp + 0x58]
fxch st(2)
fmul qword [esp + 0x68]
faddp st(2)
fxch st(1)
fst qword [esp + 0xa8]
fxch st(2)
fstp qword [esp + 0xc0]
fstp qword [esp + 0x80]
fstp qword [esp + 0x88]
fld qword [esp + 0x70]
fmul st(1)
fld qword [esp + 0x40]
fmul st(3)
faddp st(1)
fstp qword [esp + 0x90]
fmul qword [esp + 0x78]
fxch st(1)
fmul qword [esp + 0x48]
faddp st(1)
fstp qword [esp + 0x98]
call fcn.00477910
test al, al
je 0x477f2a
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0xd8]
sub eax, edx
sar eax, 3
lea edi, [ecx + 1]
shr eax, 1
cmp edi, eax
jne 0x477d01
mov edi, 8
xor eax, eax
jmp 0x477d0d
add esp, 0x1fc
pop ebx
pop esi
pop edi
pop ebp
ret
fstp st(0)
fstp st(0)
fld qword [esp + 0x40]
fchs
fstp qword [esp + 0x78]
fld qword [esp + 0x48]
fstp qword [esp + 0x70]
jmp 0x477c23
fstp st(0)
lea edi, [esp + 0xa0]
mov dword [esp], eax
mov ecx, ebp
mov dword [esp + 4], edi
call fcn.004a5bd0
sub esp, 8
jmp 0x477f2a
mov edx, 8
xor edi, edi
jmp 0x477bb9
fstp st(0)
fstp qword [esp]
call fcn.004881d0
jmp 0x477d7a
fstp st(0)
fxch st(1)
fstp qword [esp + 0x30]
fxch st(1)
fstp qword [esp + 0x28]
fstp qword [esp]
call fcn.004881d0
fld qword [esp + 0x30]
fld qword [esp + 0x28]
fxch st(2)
jmp 0x477bff