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

Disassembly:
sub esp, 0xd8
fldz
push ebx
mov ebx, dword [esp + 0xe0]
mov ecx, dword [ebx + 8]
push ebp
push esi
mov esi, eax
mov eax, dword [ebx + 4]
push edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], ecx
call fcn.004c7020
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fmul qword [esp + 0xf0]
fdiv qword [0x4e6338]
fst qword [esp + 0x78]
call fcn.004c7360
fstp dword [esp + 0x74]
fld qword [esp + 0x78]
call fcn.004c7230
fstp dword [esp + 0x70]
fild dword [esp + 0x6c]
fld qword [0x4e6330]
fsub st(1), st(0)
fxch st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [esp + 0x14]
fild dword [esp + 0x68]
fsub st(2)
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [esp + 0x60]
fstp dword [esp + 0x7c]
fstp dword [esp + 0x78]
fld dword [esp + 0x70]
fld st(0)
fld qword [0x4e6328]
fmul st(1), st(0)
fld dword [esp + 0x74]
fld st(0)
fmulp st(2)
fld st(2)
fsub st(2)
fstp dword [esp + 0x38]
fld st(1)
fadd st(3)
fstp dword [esp + 0x3c]
fld dword [esp + 0x14]
fld st(0)
fmul st(5)
fsub st(3)
fstp dword [esp + 0x40]
fmul st(1)
fadd st(3)
fstp dword [esp + 0x44]
fld dword [esp + 0x60]
fld st(0)
fmul st(2)
fsubp st(4)
fxch st(3)
fstp dword [esp + 0x48]
fld st(3)
fmulp st(3)
fxch st(2)
faddp st(1)
fstp dword [esp + 0x4c]
fld dword [esp + 0x78]
fld st(0)
fmul st(3)
fld dword [esp + 0x7c]
fld st(0)
fmul st(4)
fsubp st(2)
fxch st(1)
fstp dword [esp + 0x50]
fmulp st(3)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x54]
fld dword [esp + 0x48]
fld dword [esp + 0x50]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4779fe
fxch st(1)
fst dword [esp + 0x28]
jmp 0x477a04
fst dword [esp + 0x28]
fxch st(1)
fld dword [esp + 0x38]
fld dword [esp + 0x40]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x477a19
fstp st(0)
jmp 0x477a1b
fstp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x477a34
fstp st(0)
jmp 0x477a36
fstp st(1)
fstp dword [esp + 0x2c]
fld dword [esp + 0x4c]
fld dword [esp + 0x54]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x477a4f
fstp st(0)
jmp 0x477a51
fstp st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x3c]
fld dword [esp + 0x44]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x477a6e
fstp st(0)
fst dword [esp + 0x20]
jmp 0x477a72
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x477a87
fstp st(0)
jmp 0x477a89
fstp st(1)
fstp dword [esp + 0x34]
fxch st(1)
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x477a9c
fstp st(2)
jmp 0x477a9e
fstp st(0)
fxch st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x38]
fld dword [esp + 0x40]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x477ab9
fstp st(0)
jmp 0x477abb
fstp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x477ad4
fstp st(0)
jmp 0x477ad6
fstp st(1)
fstp dword [esp + 0x30]
fld dword [esp + 0x4c]
fld dword [esp + 0x54]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x477aef
fstp st(0)
jmp 0x477af1
fstp st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x44]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x477b06
fstp st(0)
jmp 0x477b08
fstp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x477b21
fstp st(0)
jmp 0x477b23
fstp st(1)
fstp dword [esp + 0x1c]
sub esp, 8
fld dword [esp + 0x38]
fsub dword [esp + 0x34]
faddp st(1)
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fstp qword [esp]
call fcn.004c6eb0
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
call fcn.004c6e00
fld dword [esp + 0x24]
fsub dword [esp + 0x3c]
mov ebp, eax
mov dword [esp + 0x6c], eax
fadd qword [0x4e6330]
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fstp qword [esp]
call fcn.004c6eb0
fstp dword [esp + 0x2c]
add esp, 8
fld dword [esp + 0x24]
call fcn.004c6e00
mov ecx, dword [esp + 0x6c]
mov edx, ebp
sub edx, ecx
and edx, 0x80000001
mov edi, eax
mov dword [esp + 0x20], eax
jns 0x477ba0
dec edx
or edx, 0xfffffffe
inc edx
cmp edx, 1
jne 0x477bac
add ebp, 1
mov dword [esp + 0x64], ebp
cdq
idiv dword [esp + 0x68]
and edx, 0x80000001
jns 0x477bbe
dec edx
or edx, 0xfffffffe
inc edx
cmp edx, 1
jne 0x477bc9
add edi, edx
mov dword [esp + 0x20], edi
fld dword [esp + 0x30]
mov eax, ebp
fadd dword [esp + 0x2c]
sub eax, ecx
fild dword [esp + 0x64]
cdq
fld1
sub eax, edx
sar eax, 1
fsub st(1), st(0)
neg eax
fxch st(2)
add dword [esi], eax
mov eax, dword [esi]
fsubrp st(1)
add eax, ebp
fld qword [0x4e6330]
mov dword [esi + 8], eax
mov eax, edi
sub eax, dword [esp + 0x68]
fmul st(1), st(0)
fxch st(1)
fstp dword [esp + 0xa4]
cdq
fld dword [esp + 0x1c]
sub eax, edx
fadd dword [esp + 0x34]
sar eax, 1
fild dword [esp + 0x20]
neg eax
add dword [esi + 4], eax
mov eax, dword [esi + 4]
fsubrp st(3)
add eax, edi
mov dword [esi + 0xc], eax
mov eax, dword [ebx + 4]
fsubrp st(2)
mov ecx, eax
and ecx, 0x80000003
fmulp st(1)
fstp dword [esp + 0x24]
jns 0x477c42
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x477c54
cdq
and edx, 3
add eax, edx
sar eax, 2
lea eax, [eax*4 + 4]
mov ebp, dword [ebx + 8]
imul ebp, eax
add ebp, ebp
add ebp, ebp
push ebp
call fcn.004a8a10
mov esi, eax
add esp, 4
test esi, esi
je 0x477d28
mov edx, dword [ebx]
push esi
push ebp
push edx
call dword [sym.imp.GDI32.dll_GetBitmapBits]
push 0x2c
xor ebp, ebp
lea eax, [esp + 0xc0]
push ebp
push eax
call fcn.004aef60
mov ebx, dword [esp + 0x70]
mov ecx, ebx
add esp, 0xc
and ecx, 0x80000003
mov dword [esp + 0xbc], 0x28
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], edi
mov word [esp + 0xc8], 1
mov word [esp + 0xca], 0x20
mov dword [esp + 0xcc], ebp
jns 0x477cd8
dec ecx
or ecx, 0xfffffffc
inc ecx
mov eax, ebx
je 0x477cec
cdq
and edx, 3
add eax, edx
sar eax, 2
lea eax, [eax*4 + 4]
imul eax, edi
push ebp
push ebp
add eax, eax
add eax, eax
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0xdc], eax
push ebp
lea eax, [esp + 0xcc]
push eax
push ebp
mov dword [esp + 0x44], ebp
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x78], ebp
jne 0x477d35
push esi
call fcn.004a970e
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd8
ret
test edi, edi
fld dword [esp + 0x24]
fstp dword [esp + 0x20]
jle 0x477fae
fld1
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], edi
test ebx, ebx
fld dword [esp + 0xa4]
fstp dword [esp + 0x34]
fld dword [esp + 0x20]
jle 0x477f8c
mov ecx, dword [esp + 0x28]
fstp st(1)
fld st(0)
mov dword [esp + 0x30], ecx
fmul dword [esp + 0x74]
mov dword [esp + 0x80], ebx
fstp qword [esp + 0xa8]
fmul dword [esp + 0x70]
fstp qword [esp + 0xb0]
jmp 0x477d97
fstp st(0)
fld dword [esp + 0x34]
sub esp, 8
fld st(0)
fmul dword [esp + 0x78]
fadd qword [esp + 0xb0]
fstp dword [esp + 0x24]
fmul dword [esp + 0x7c]
fsubr qword [esp + 0xb8]
fstp dword [esp + 0x60]
fld dword [esp + 0x24]
fstp qword [esp]
call fcn.004c6eb0
fstp dword [esp + 0x64]
fld dword [esp + 0x64]
call fcn.004c6e00
fld dword [esp + 0x60]
mov edi, eax
fstp qword [esp]
mov dword [esp + 0x1c], edi
call fcn.004c6eb0
fstp dword [esp + 0x64]
fld dword [esp + 0x64]
add esp, 8
call fcn.004c6e00
cmp edi, 0xffffffff
mov dword [esp + 0x5c], eax
jl 0x478196
mov ebp, dword [esp + 0x6c]
cmp edi, ebp
jge 0x478196
cmp eax, 0xffffffff
jl 0x478196
mov ebx, dword [esp + 0x68]
cmp eax, ebx
jge 0x478196
fld dword [esp + 0x1c]
lea ecx, [edi + 1]
fisub dword [esp + 0x14]
mov dword [esp + 0x88], eax
mov dword [esp + 0x90], eax
add eax, 1
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0xa0], eax
fstp dword [esp + 0x1c]
xor ecx, ecx
fld dword [esp + 0x58]
mov dword [esp + 0x84], edi
fisub dword [esp + 0x5c]
mov dword [esp + 0x94], edi
xor eax, eax
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld st(0)
fld dword [esp + 0x1c]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x14]
fld st(0)
fld dword [esp + 0x14]
fld st(0)
fsubp st(2)
fxch st(1)
fstp dword [esp + 0x58]
fld st(0)
fsubp st(3)
fxch st(2)
fstp dword [esp + 0x14]
fld1
fld st(0)
fsubrp st(2)
fld dword [esp + 0x14]
fld st(0)
fsubp st(3)
fxch st(2)
fstp dword [esp + 0x5c]
cmp dword [esp + eax*8 + 0x84], ecx
mov dl, 1
jge 0x477ed7
xor dl, dl
mov dword [esp + eax*8 + 0x84], ecx
cmp dword [esp + eax*8 + 0x84], ebp
jl 0x477eec
lea edi, [ebp - 1]
xor dl, dl
mov dword [esp + eax*8 + 0x84], edi
cmp dword [esp + eax*8 + 0x88], ecx
jge 0x477efe
xor dl, dl
mov dword [esp + eax*8 + 0x88], ecx
mov ecx, dword [esp + eax*8 + 0x88]
cmp ecx, ebx
jge 0x477f59
test dl, dl
je 0x477f63
mov edx, ebx
sub edx, ecx
sub edx, 1
lea ecx, [ebp*4]
imul edx, ecx
mov ecx, dword [esp + eax*8 + 0x84]
lea ecx, [edx + ecx*4]
movzx edx, byte [ecx + esi]
mov byte [esp + eax*4 + 0x38], dl
movzx edx, byte [ecx + esi + 1]
mov byte [esp + eax*4 + 0x39], dl
movzx edx, byte [ecx + esi + 2]
mov cl, byte [ecx + esi + 3]
mov byte [esp + eax*4 + 0x3a], dl
mov byte [esp + eax*4 + 0x3b], cl
add eax, 1
cmp eax, 4
jge 0x477fc4
xor ecx, ecx
jmp 0x477ec3
add ebx, 0xffffffff
mov dword [esp + eax*8 + 0x88], ebx
fstp st(2)
fstp st(0)
fld dword [esp + 0x34]
add dword [esp + 0x30], 4
sub dword [esp + 0x80], 1
fadd st(1)
fstp dword [esp + 0x34]
jne 0x477d95
fld dword [esp + 0x20]
mov ebx, dword [esp + 0x64]
lea eax, [ebx*4]
fadd st(1)
add dword [esp + 0x28], eax
sub dword [esp + 0x24], 1
fstp dword [esp + 0x20]
jne 0x477d53
mov ebp, dword [esp + 0x78]
fstp st(0)
push esi
call fcn.004a970e
add esp, 4
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0xd8
ret
movzx edx, byte [esp + 0x43]
fnstcw word [esp + 0x1c]
movzx eax, byte [esp + 0x3b]
movzx ecx, byte [esp + 0x3f]
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x47]
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fmul st(2)
movzx eax, word [esp + 0x1c]
fild dword [esp + 0x14]
fld dword [esp + 0x5c]
fld st(0)
mov dword [esp + 0x14], ecx
fmulp st(2)
mov ecx, dword [esp + 0x30]
fxch st(2)
or eax, 0xc00
faddp st(1)
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
fld dword [esp + 0x58]
mov edx, dword [esp + 0x2c]
fld st(0)
fmulp st(2)
fxch st(2)
faddp st(1)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fmul st(6)
faddp st(1)
fldcw word [esp + 0x14]
fistp dword [esp + 0x14]
movzx eax, byte [esp + 0x14]
mov byte [ecx + edx + 3], al
movzx eax, byte [esp + 0x38]
fldcw word [esp + 0x1c]
movzx edx, byte [esp + 0x40]
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x3c]
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
fnstcw word [esp + 0x1c]
movzx edx, byte [esp + 0x44]
fmul st(2)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
movzx eax, word [esp + 0x1c]
fmul st(5)
or eax, 0xc00
faddp st(1)
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x2c]
fmul st(2)
faddp st(1)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fmul st(6)
faddp st(1)
fldcw word [esp + 0x14]
fistp dword [esp + 0x14]
movzx eax, byte [esp + 0x14]
mov byte [ecx + edx], al
movzx eax, byte [esp + 0x39]
fldcw word [esp + 0x1c]
movzx edx, byte [esp + 0x41]
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x3d]
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x45]
fmul st(2)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fmul st(5)
faddp st(1)
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
fmul st(2)
faddp st(1)
fild dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
fnstcw word [esp + 0x1c]
movzx eax, word [esp + 0x1c]
fmul st(6)
or eax, 0xc00
mov dword [esp + 0x14], eax
faddp st(1)
fldcw word [esp + 0x14]
fistp dword [esp + 0x14]
movzx eax, byte [esp + 0x14]
mov byte [ecx + edx + 1], al
movzx eax, byte [esp + 0x3a]
fldcw word [esp + 0x1c]
movzx edx, byte [esp + 0x42]
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x3e]
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
fnstcw word [esp + 0x1c]
movzx edx, byte [esp + 0x46]
fmulp st(2)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
movzx eax, word [esp + 0x1c]
fmulp st(4)
or eax, 0xc00
fxch st(1)
faddp st(3)
fild dword [esp + 0x14]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x2c]
fmulp st(1)
faddp st(2)
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fmulp st(3)
fxch st(1)
faddp st(2)
fldcw word [esp + 0x14]
fxch st(1)
fistp dword [esp + 0x14]
movzx eax, byte [esp + 0x14]
mov byte [ecx + edx + 2], al
fldcw word [esp + 0x1c]
jmp 0x477f67
mov ecx, dword [esp + 0x2c]
fld1
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], 0
mov edx, dword [esp + 0x2c]
mov byte [eax + edx + 1], 0
mov ecx, dword [esp + 0x2c]
mov byte [eax + ecx + 2], 0
mov edx, dword [esp + 0x2c]
mov byte [eax + edx + 3], 0
jmp 0x477f67