Function at 0x4591ac
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe7c
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00405f60
xor eax, eax
push ebp
push 0x4593d6
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0
push 0
push 0x4593e8
call sub.gdi32.dll_CreateDCA
mov esi, eax
mov eax, dword [0x4d8ed4]
movzx eax, byte [eax]
mov dword [ebp - 0x24], eax
mov eax, dword [0x4d8ed4]
mov byte [eax], 0
mov edx, dword [ebp - 4]
lea eax, [ebp - 0x170]
call fcn.004036dc
mov edx, 1
lea eax, [ebp - 0x170]
call fcn.00403f30
call fcn.00402f54
test eax, eax
jle 0x45922a
mov edx, dword [ebp - 4]
mov eax, 0x12c
call fcn.00457e90
lea eax, [ebp - 0x170]
call fcn.00403b04
mov ebx, eax
test ebx, ebx
jne 0x459248
mov edx, dword [ebp - 4]
mov eax, 0x135
call fcn.00457e90
mov eax, ebx
call fcn.00402cf8
mov dword [ebp - 8], eax
push 0
mov edx, dword [ebp - 8]
mov ecx, ebx
lea eax, [ebp - 0x170]
call fcn.00403844
lea eax, [ebp - 0x170]
call fcn.00403884
push ebx
push 0x22
call sub.kernel32.dll_GlobalAlloc
mov edi, eax
push edi
call sub.kernel32.dll_GlobalLock
mov ecx, ebx
mov edx, dword [ebp - 8]
call fcn.0040854c
mov eax, dword [ebp - 8]
call fcn.00402d14
push edi
call sub.kernel32.dll_GlobalUnlock
lea eax, [ebp - 0xc]
push eax
push 0xffffffffffffffff
push edi
call sub.ole32.dll_CreateStreamOnHGlobal
lea eax, [ebp - 0x10]
push eax
mov eax, dword [0x4d8e90]
push eax
push 0
push ebx
mov eax, dword [ebp - 0xc]
push eax
call sub.olepro32.dll_OleLoadPicture
cmp dword [ebp - 0x10], 0
je 0x4592c8
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [eax]
call dword [eax + 8]
push edi
call sub.kernel32.dll_GlobalFree
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [eax]
call dword [eax + 0x18]
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [eax]
call dword [eax + 0x1c]
push 0x58
push esi
call sub.gdi32.dll_GetDeviceCaps
mov ebx, eax
push 0x5a
push esi
call sub.gdi32.dll_GetDeviceCaps
mov edi, eax
mov eax, dword [ebp - 0x18]
imul ebx
mov dword [ebp - 0x184], eax
fild dword [ebp - 0x184]
fdiv dword [0x4593f0]
call fcn.004033bc
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x1c]
imul edi
mov dword [ebp - 0x184], eax
fild dword [ebp - 0x184]
fdiv dword [0x4593f0]
call fcn.004033bc
mov edi, eax
push esi
call sub.gdi32.dll_CreateCompatibleDC
mov ebx, eax
push edi
mov eax, dword [ebp - 0x20]
push eax
push esi
call sub.gdi32.dll_CreateCompatibleBitmap
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
push eax
push ebx
call sub.gdi32.dll_SelectObject
push 0xff0062
push 0
push 0
push esi
push edi
mov eax, dword [ebp - 0x20]
push eax
push 0
push 0
push ebx
call sub.gdi32.dll_BitBlt
lea eax, [ebp - 0x180]
push eax
mov eax, dword [ebp - 0x1c]
neg eax
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0
push edi
mov eax, dword [ebp - 0x20]
push eax
push 0
push 0
push ebx
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [eax]
call dword [eax + 0x20]
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [eax]
call dword [eax + 8]
push ebx
call sub.gdi32.dll_DeleteDC
push esi
call sub.gdi32.dll_DeleteDC
mov ebx, dword [ebp - 0x14]
movzx eax, byte [ebp - 0x24]
mov edx, dword [0x4d8ed4]
mov byte [edx], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4593dd
lea eax, [ebp - 4]
call fcn.00405aac
ret