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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5787c9
mov eax, dword fs:[0]
push eax
sub esp, 0xc8
mov eax, dword [0x5d7050]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push esi
push edi
mov eax, dword [0x5d7050]
xor eax, esp
push eax
lea eax, [esp + 0xd8]
mov dword fs:[0], eax
mov ebx, ecx
cmp dword [ebx + 0x68], 4
mov esi, edx
mov dword [esp + 0x18], esi
jne 0x458a7f
cmp dword [ebx + 0x6c], 0
je 0x458957
mov eax, dword [esi]
xor ecx, ecx
cmp dword [ebx + 0x70], ecx
cdq
sete cl
sub eax, edx
sar eax, 1
lea ecx, [ecx + ecx - 1]
imul ecx, dword [ebx + 0x74]
add ecx, eax
mov dword [esp + 0x20], ecx
jmp 0x45896f
cmp dword [ebx + 0x70], 0
je 0x458968
mov eax, dword [esi]
sub eax, dword [ebx + 0x74]
mov dword [esp + 0x20], eax
jmp 0x45896f
mov edx, dword [ebx + 0x74]
mov dword [esp + 0x20], edx
cmp dword [ebx + 0x84], 0
je 0x45899d
xor ecx, ecx
cmp dword [ebx + 0x88], ecx
mov edx, esi
mov eax, dword [edx]
sete cl
cdq
sub eax, edx
sar eax, 1
lea ecx, [ecx + ecx - 1]
imul ecx, dword [ebx + 0x8c]
add ecx, eax
mov edi, ecx
jmp 0x4589b8
cmp dword [ebx + 0x88], 0
je 0x4589b2
mov eax, esi
mov edi, dword [eax]
sub edi, dword [ebx + 0x8c]
jmp 0x4589b8
mov edi, dword [ebx + 0x8c]
cmp dword [ebx + 0x78], 0
je 0x4589e1
xor ecx, ecx
cmp dword [ebx + 0x7c], ecx
mov edx, esi
mov eax, dword [edx + 4]
sete cl
cdq
sub eax, edx
sar eax, 1
lea ecx, [ecx + ecx - 1]
imul ecx, dword [ebx + 0x80]
add ecx, eax
mov esi, ecx
jmp 0x4589fa
cmp dword [ebx + 0x7c], 0
je 0x4589f4
mov eax, esi
mov esi, dword [eax + 4]
sub esi, dword [ebx + 0x80]
jmp 0x4589fa
mov esi, dword [ebx + 0x80]
cmp dword [ebx + 0x90], 0
je 0x458a3b
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 4]
xor ecx, ecx
cmp dword [ebx + 0x94], ecx
cdq
sete cl
sub edi, dword [esp + 0x20]
sub eax, edx
sar eax, 1
lea ecx, [ecx + ecx - 1]
imul ecx, dword [ebx + 0x98]
add eax, ecx
mov ecx, dword [esp + 0x18]
sub eax, esi
mov dword [ecx], edi
mov dword [ecx + 4], eax
jmp 0x458efd
cmp dword [ebx + 0x94], 0
je 0x458a65
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 4]
sub eax, dword [ebx + 0x98]
sub edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
sub eax, esi
mov dword [ecx], edi
mov dword [ecx + 4], eax
jmp 0x458efd
mov eax, dword [ebx + 0x98]
sub edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
sub eax, esi
mov dword [ecx], edi
mov dword [ecx + 4], eax
jmp 0x458efd
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
mov dword [esp + 0x58], edi
xor esi, esi
mov dword [esp + 0xe0], esi
mov dword [esp + 0x1c], esi
mov byte [esp + 0xe0], 1
mov ecx, dword [ebx + 0x14]
mov edx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebx + 0x4c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
call fcn.00459a30
push edi
mov dword [esp + 0x3c], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
cmp dword [ebp + 8], esi
mov dword [esp + 0x1c], eax
je 0x458af8
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
add edx, dword [esp + 0x20]
mov eax, dword [eax + 4]
add eax, dword [esp + 0x24]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x58]
test eax, eax
je 0x458b03
mov esi, eax
jmp 0x458b45
mov ecx, dword [esp + 0x38]
mov eax, dword [ecx + 0x20]
test eax, eax
je 0x458b12
mov esi, eax
jmp 0x458b45
mov edi, ebx
mov edi, dword [edi + 8]
test edi, edi
je 0x458b45
call fcn.0046bdd0
mov edi, eax
test edi, edi
je 0x458b45
cmp dword [edi + 0x58], 0
jne 0x458b5f
mov ecx, dword [edi + 0x4c]
call fcn.00459a30
cmp dword [eax + 0x20], 0
je 0x458b14
mov ecx, dword [edi + 0x4c]
call fcn.00459a30
mov esi, dword [eax + 0x20]
mov edx, dword [ebx + 0x34]
and edx, 1
cmp dl, 1
jne 0x458b91
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x458b64
mov esi, eax
jmp 0x458b91
mov esi, dword [edi + 0x58]
jmp 0x458b45
mov edi, ebx
mov edi, dword [edi + 8]
test edi, edi
je 0x458b91
call fcn.0046bdd0
mov edi, eax
test edi, edi
je 0x458b91
mov ecx, dword [edi + 0x4c]
call fcn.00459a30
cmp dword [eax + 0x24], 0
je 0x458b66
mov ecx, dword [edi + 0x4c]
call fcn.00459a30
mov esi, dword [eax + 0x24]
test esi, esi
jne 0x458bfe
call fcn.00456410
mov ecx, eax
add ecx, 0x60
xor eax, eax
xor edx, edx
div dword [ecx + 8]
mov ecx, dword [ecx]
test ecx, ecx
je 0x458bcc
mov eax, dword [ecx + edx*4]
test eax, eax
je 0x458bcc
cmp dword [eax + 0xc], 0
jne 0x458bbf
cmp word [eax], 0
je 0x458bc8
mov eax, dword [eax + 8]
test eax, eax
jne 0x458bb3
jmp 0x458bcc
test eax, eax
jne 0x458bfb
push 0
push 0
push 0
call fcn.00456410
xor dl, dl
mov ecx, eax
call fcn.00456330
mov esi, eax
test esi, esi
je 0x458bfe
call fcn.00456410
mov ecx, eax
add ecx, 0x60
xor eax, eax
call fcn.004563b0
mov dword [eax], esi
jmp 0x458bfe
mov esi, dword [eax + 4]
mov ecx, dword [esp + 0x1c]
push esi
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [esp + 0x38]
mov ecx, dword [edi + 0x28]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x2c]
neg eax
push eax
neg ecx
push ecx
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.USER32.dll_InflateRect]
mov eax, dword [edi + 0x1c]
and eax, 0xfffffff0
test al, 0x10
je 0x458c3b
mov dword [esp + 0x2c], 0x7fff
mov ecx, dword [ebx + 0x28]
cmp dword [ecx - 0xc], 0
je 0x458e97
cmp dword [edi + 0x48], 0
je 0x458e78
lea edx, [esp + 0x3c]
push edx
push 0
push 0
mov dword [esp + 0x48], 0
call sub.gdiplus.dll_GdipCreateStringFormat
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x48]
push eax
xor edi, edi
push ecx
mov dword [esp + 0x50], edi
call sub.gdiplus.dll_GdipCreateFromHDC
mov edx, dword [esp + 0x48]
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edx
mov byte [esp + 0xe0], 3
mov eax, dword [0x5e736c]
mov edx, dword [eax + 0xc]
mov ecx, 0x5e736c
call edx
add eax, 0x10
mov dword [esp + 0x44], eax
push 0x58
lea eax, [esp + 0x74]
push edi
mov byte [esp + 0xe8], 4
push eax
mov dword [esp + 0x78], edi
call sub.MSVCR80.dll_memset
add esp, 0xc
call fcn.00456410
add eax, 0x90
lea edi, [esp + 0x44]
call fcn.004101e0
call fcn.00456410
lea ecx, [esp + 0x6c]
push ecx
push 0x5c
push esi
call dword [sym.imp.GDI32.dll_GetObjectW]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x6c]
lea esi, [esp + 0x64]
call fcn.00458f40
mov byte [esp + 0xe0], 5
mov edx, dword [esp + 0x28]
sub edx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x24]
mov edi, dword [ebx + 8]
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
mov dword [esp + 0x30], eax
fstp dword [esp + 0x14]
fild dword [esp + 0x30]
fstp dword [esp + 0x30]
fld dword [esp + 0x14]
fstp dword [esp + 0x4c]
fld dword [esp + 0x30]
fstp dword [esp + 0x50]
call fcn.0046bdd0
test eax, eax
je 0x458d72
mov edx, dword [eax + 0x14]
mov ecx, dword [eax + 0x1c]
mov esi, dword [eax + 0x18]
mov eax, dword [eax + 0x20]
sub ecx, edx
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
sub eax, esi
mov dword [esp + 0x14], eax
fstp dword [esp + 0x4c]
fild dword [esp + 0x14]
fstp dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
push 0
push ecx
call sub.gdiplus.dll_GdipSetStringFormatAlign
test eax, eax
je 0x458d86
mov dword [esp + 0x40], eax
mov ebx, dword [ebx + 0x28]
fldz
mov eax, dword [ebx - 0xc]
fst dword [esp + 0x34]
push eax
fstp dword [esp + 0x34]
push ebx
lea edx, [esp + 0x64]
push edx
lea edi, [esp + 0x3c]
lea ecx, [esp + 0x48]
lea eax, [esp + 0x58]
lea edx, [esp + 0x70]
call fcn.00458f90
fld dword [esp + 0x30]
fld st(0)
fld st(1)
call fcn.0056a730
mov dword [esp + 0x14], eax
fisub dword [esp + 0x14]
fldz
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
fld1
jp 0x458de4
fadd st(2), st(0)
fxch st(2)
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fxch st(2)
fld dword [esp + 0x34]
fld st(0)
fld st(1)
call fcn.0056a730
mov dword [esp + 0x14], eax
fisub dword [esp + 0x14]
fcomp st(3)
fnstsw ax
fstp st(2)
test ah, 0x41
jne 0x458e10
faddp st(1)
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
jmp 0x458e12
fstp st(0)
fild dword [esp + 0x20]
faddp st(2)
fxch st(1)
call fcn.0056a730
fiadd dword [esp + 0x24]
mov dword [esp + 0x28], eax
call fcn.0056a730
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x64]
push eax
call sub.gdiplus.dll_GdipDeleteFont
mov byte [esp + 0xe0], 3
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x458e62
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x5c]
push ecx
call sub.gdiplus.dll_GdipDeleteGraphics
mov edx, dword [esp + 0x3c]
push edx
call sub.gdiplus.dll_GdipDeleteStringFormat
jmp 0x458ea7
mov esi, dword [esp + 0x1c]
or eax, 0x400
push eax
mov ebx, ecx
mov ecx, dword [ebx - 0xc]
lea eax, [esp + 0x24]
push eax
push ecx
push ebx
push esi
call dword [sym.imp.USER32.dll_DrawTextW]
jmp 0x458eab
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 0x28]
add ecx, ecx
mov edx, ecx
sub edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
add edx, dword [esp + 0x28]
mov dword [ecx], edx
mov eax, dword [eax + 0x2c]
add eax, eax
sub eax, dword [esp + 0x24]
add eax, dword [esp + 0x2c]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x54]
push ecx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edx, dword [esp + 0x58]
push edx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
test esi, esi
je 0x458efd
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
xor eax, eax
mov ecx, dword [esp + 0xd8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.00569ed6
mov esp, ebp
pop ebp
ret 4