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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x58b2a3
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x6a3b20]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x6a3b20]
xor eax, esp
push eax
lea eax, [esp + 0x178]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov esi, ecx
mov eax, dword [esi + 0x64]
mov al, byte [eax + 0x28]
mov dword [esp + 0x78], ebx
test al, al
jne 0x478dd3
mov eax, dword [esi + 0x30]
test eax, eax
je 0x478dd3
cmp dword [eax + 4], 0
je 0x478dd3
cmp dword [esi + 0x34], 0
je 0x478dd3
mov eax, dword [esi + 0x38]
test eax, eax
je 0x478dd3
cmp dword [eax + 4], 0
je 0x478dd3
cmp dword [esi + 0x3c], 0
je 0x478dd3
mov edx, dword [esi]
mov eax, dword [edx + 0x3c]
push ebx
call eax
mov ecx, dword [esi + 0x64]
cmp byte [ecx + 0x48], 0
jne 0x47870f
cmp byte [esi + 0xbc], 0
je 0x478718
mov edx, dword [esi]
mov eax, dword [edx + 0x70]
mov ecx, esi
call eax
fldz
mov cl, byte [ebx + 4]
and cl, 1
fst qword [esp + 0x9c]
fst qword [esp + 0xa4]
cmp cl, 1
fst qword [esp + 0xac]
lea ecx, [esp + 0xbc]
fstp qword [esp + 0xb4]
sete byte [esp + 0x3b]
call dword [0x5a7e9c]
cmp byte [esp + 0x3b], 0
mov dword [esp + 0x180], 0
je 0x4788ff
lea edx, [esp + 0x34]
push edx
mov ecx, ebx
call dword [0x5a8074]
lea ecx, [esp + 0x12c]
push ecx
mov ecx, eax
mov byte [esp + 0x184], 1
call dword [0x5a8070]
mov ecx, dword [eax]
mov edi, dword [eax + 8]
mov edx, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3c], ecx
fild dword [esp + 0x3c]
sub edi, ecx
mov dword [esp + 0x3c], edx
fild dword [esp + 0x3c]
inc edi
sub eax, edx
mov dword [esp + 0x3c], edi
fild dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
fild dword [esp + 0x3c]
lea ecx, [esp + 0x34]
fxch st(3)
mov byte [esp + 0x180], 0
fstp qword [esp + 0x9c]
fxch st(1)
fstp qword [esp + 0xa4]
fstp qword [esp + 0xac]
fstp qword [esp + 0xb4]
call dword [0x5a7fd8]
fld qword [esp + 0xac]
lea ecx, [esp + 0x7c]
fld qword [0x5ab3d8]
push ecx
fmul st(1), st(0)
lea ecx, [esp + 0x130]
fmul qword [esp + 0xb8]
fxch st(1)
fstp qword [esp + 0x130]
fstp qword [esp + 0x138]
call dword [0x5a79f8]
push eax
lea ecx, [esp + 0x48]
call dword [0x5a7f28]
push eax
lea ecx, [esp + 0xc0]
mov byte [esp + 0x184], 2
call dword [0x5a7ec8]
lea ecx, [esp + 0x44]
mov byte [esp + 0x180], 0
call dword [0x5a7e0c]
push 0x13
lea ecx, [esp + 0x130]
call dword [0x5a7ddc]
lea edx, [esp + 0x12c]
push edx
lea ecx, [esp + 0xc0]
call dword [0x5a7e74]
push 0x10
call fcn.00580794
add esp, 4
mov dword [esp + 0x7c], eax
mov byte [esp + 0x180], 3
test eax, eax
je 0x4788ab
lea ecx, [esp + 0xbc]
push ecx
mov ecx, eax
call fcn.00463340
mov ebx, eax
jmp 0x4788ad
xor ebx, ebx
fld qword [0x5ab3d8]
sub esp, 0x10
fst qword [esp + 8]
mov ecx, ebx
fstp qword [esp]
mov byte [esp + 0x190], 0
call dword [0x5a7fc0]
fld qword [esp + 0x9c]
fchs
lea edx, [esp + 0x12c]
fld qword [esp + 0xa4]
push edx
fchs
mov ecx, ebx
fxch st(1)
fstp qword [esp + 0x130]
fstp qword [esp + 0x138]
call dword [0x5a7f0c]
mov eax, dword [esi + 0x64]
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x7c], ecx
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x80], edx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x84], ecx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x88], edx
fld qword [esp + 0x84]
mov ecx, dword [eax + 8]
mov dword [esp + 0x64], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x68], edx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x6c], ecx
mov edx, dword [eax + 0x14]
mov dword [esp + 0x70], edx
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x60], edx
mov edx, dword [eax + 0xc]
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 0x10]
fld qword [esp + 0x7c]
mov dword [esp + 0x58], edx
fstp qword [esp]
mov edx, dword [eax + 0x14]
lea eax, [esp + 0x13c]
mov dword [esp + 0x5c], ecx
push eax
mov ecx, esi
mov dword [esp + 0x64], edx
call fcn.00446060
fld qword [esp + 0x54]
sub esp, 0x10
fstp qword [esp + 8]
lea ecx, [esp + 0x74]
fld qword [esp + 0x54]
mov edi, eax
fstp qword [esp]
push ecx
mov ecx, esi
call fcn.00446060
fld qword [eax]
fstp qword [esp + 0x7c]
lea edx, [esp + 0xcc]
fld qword [eax + 8]
push edx
fstp qword [esp + 0x88]
lea ecx, [esp + 0x80]
fld qword [edi]
fsub qword [eax]
fstp qword [esp + 0x90]
fld qword [edi + 8]
fsub qword [eax + 8]
fstp qword [esp + 0x98]
call dword [0x5a7954]
fldz
mov edx, dword [esi + 0x30]
fld st(0)
test edx, edx
je 0x478a12
cmp dword [edx + 4], 0
je 0x478a12
mov eax, dword [esi + 0x34]
jmp 0x478a14
xor eax, eax
fld qword [esp + 0xdc]
mov edi, 1
cmp dword [eax + 0x2c], edi
fld qword [esp + 0xe4]
mov eax, dword [esi + 0x64]
fld qword [0x5aabe0]
jne 0x478a68
cmp dword [eax], edi
jle 0x478a4e
mov ecx, dword [eax]
fstp st(3)
fld st(1)
dec ecx
fmul st(3)
mov dword [esp + 0x34], ecx
fild dword [esp + 0x34]
fdivp st(1)
fxch st(3)
mov eax, dword [eax + 4]
cmp eax, edi
jle 0x478a9b
fstp st(4)
dec eax
fld st(0)
mov dword [esp + 0x34], eax
fmulp st(4)
fild dword [esp + 0x34]
fdivp st(4)
jmp 0x478a9d
cmp dword [eax], edi
jle 0x478a81
mov ecx, dword [eax]
fstp st(4)
fld st(0)
dec ecx
fmul st(4)
mov dword [esp + 0x34], ecx
fild dword [esp + 0x34]
fdivp st(1)
fxch st(4)
mov eax, dword [eax + 4]
cmp eax, edi
jle 0x478a9b
fstp st(3)
dec eax
fld st(1)
mov dword [esp + 0x34], eax
fmulp st(3)
fild dword [esp + 0x34]
fdivp st(3)
jmp 0x478a9d
fstp st(0)
fld st(2)
fchs
fld st(4)
fchs
fld qword [esp + 0xcc]
fadd st(2)
fstp qword [esp + 0xcc]
fld qword [esp + 0xd4]
fadd st(1)
fstp qword [esp + 0xd4]
fxch st(4)
fsubrp st(1)
faddp st(2)
fxch st(1)
fstp qword [esp + 0xdc]
fxch st(2)
fsubrp st(1)
faddp st(1)
fstp qword [esp + 0xe4]
test edx, edx
je 0x478af0
cmp dword [edx + 4], 0
je 0x478af0
mov eax, dword [esi + 0x34]
jmp 0x478af2
xor eax, eax
cmp dword [eax + 0x2c], edi
jne 0x478b06
test edx, edx
je 0x478b18
cmp dword [edx + 4], 0
je 0x478b18
mov eax, dword [esi + 0x34]
jmp 0x478b1a
mov eax, dword [esi + 0x38]
test eax, eax
je 0x478b18
cmp dword [eax + 4], 0
je 0x478b18
mov eax, dword [esi + 0x3c]
jmp 0x478b1a
xor eax, eax
mov al, byte [eax + 0xd0]
mov byte [esp + 0x74], al
mov eax, dword [esi + 0x38]
test eax, eax
je 0x478b36
cmp dword [eax + 4], 0
je 0x478b36
mov ecx, dword [esi + 0x3c]
jmp 0x478b38
xor ecx, ecx
cmp dword [ecx + 0x2c], 2
jne 0x478b4d
test eax, eax
je 0x478b5c
cmp dword [eax + 4], 0
je 0x478b5c
mov eax, dword [esi + 0x3c]
jmp 0x478b5e
test edx, edx
je 0x478b5c
cmp dword [edx + 4], 0
je 0x478b5c
mov eax, dword [esi + 0x34]
jmp 0x478b5e
xor eax, eax
mov cl, byte [eax + 0xd0]
lea edx, [esp + 0x7c]
mov byte [esp + 0x3c], cl
push edx
mov ecx, ebx
call dword [0x5a80ac]
mov al, byte [eax]
movzx edx, byte [esi + 0x80]
and al, 4
cmp al, 4
sete cl
push edx
mov byte [esp + 0x80], cl
push 4
mov ecx, ebx
call dword [0x5a7f10]
lea ecx, [esp + 0x40]
call dword [0x5a80a8]
cmp byte [esi + 0x81], 0
mov byte [esp + 0x180], 4
je 0x478cfa
lea eax, [esp + 0x34]
push eax
mov ecx, ebx
call dword [0x5a8074]
push eax
lea ecx, [esp + 0x44]
mov byte [esp + 0x184], 5
call dword [0x5a80a4]
lea ecx, [esp + 0x34]
mov byte [esp + 0x180], 4
call dword [0x5a7fd8]
mov eax, dword [esi + 0x64]
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x44], ecx
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x48], edx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x4c], ecx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x50], edx
fld qword [esp + 0x4c]
mov ecx, dword [eax + 8]
mov dword [esp + 0x54], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x58], edx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x5c], ecx
mov edx, dword [eax + 0x14]
mov dword [esp + 0x60], edx
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x1c]
mov dword [esp + 0x64], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x68], edx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x6c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x70], edx
mov edx, dword [eax + 0xc]
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp + 0x13c], ecx
mov ecx, dword [eax + 0x10]
fld qword [esp + 0x6c]
mov dword [esp + 0x140], edx
fstp qword [esp]
mov edx, dword [eax + 0x14]
lea eax, [esp + 0x54]
mov dword [esp + 0x144], ecx
push eax
mov ecx, esi
mov dword [esp + 0x14c], edx
call fcn.00446060
fld qword [esp + 0x64]
sub esp, 0x10
fstp qword [esp + 8]
lea ecx, [esp + 0x64]
fld qword [esp + 0x13c]
mov edi, eax
fstp qword [esp]
push ecx
mov ecx, esi
call fcn.00446060
fld qword [eax]
fstp qword [esp + 0xec]
lea edx, [esp + 0x10c]
fld qword [eax + 8]
push edx
fstp qword [esp + 0xf8]
lea ecx, [esp + 0xf0]
fld qword [edi]
fsub qword [eax]
fstp qword [esp + 0x100]
fld qword [edi + 8]
fsub qword [eax + 8]
fstp qword [esp + 0x108]
call dword [0x5a7954]
push 2
lea eax, [esp + 0x110]
push eax
mov ecx, ebx
call dword [0x5a80a0]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x74]
push ecx
push edx
lea eax, [esp + 0x134]
push eax
lea ecx, [esi + 0x8c]
call dword [0x5a7f8c]
push eax
lea ecx, [esp + 0xd0]
push ecx
mov ecx, ebx
mov byte [esp + 0x188], 6
call dword [0x5a809c]
lea ecx, [esp + 0x12c]
mov byte [esp + 0x180], 4
call dword [0x5a7f84]
cmp byte [esi + 0x81], 0
je 0x478d5e
push 1
lea edx, [esp + 0x44]
push edx
mov ecx, ebx
call dword [0x5a7fdc]
mov eax, dword [esp + 0x7c]
push eax
push 4
mov ecx, ebx
call dword [0x5a7f10]
cmp byte [esp + 0x3b], 0
je 0x478da9
test ebx, ebx
je 0x478d81
push 1
mov ecx, ebx
call fcn.0046f8a0
lea ecx, [esp + 0xbc]
push ecx
lea edx, [esp + 0x130]
push edx
lea ecx, [esp + 0xa4]
call dword [0x5a795c]
mov ecx, dword [esp + 0x7c]
push eax
call dword [0x5a8098]
lea ecx, [esp + 0x40]
mov byte [esp + 0x180], 0
call dword [0x5a7fd8]
lea ecx, [esp + 0xbc]
mov dword [esp + 0x180], 0xffffffff
call dword [0x5a7e0c]
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.0058077e
mov esp, ebp
pop ebp
ret 4