Function at 0x411630
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc4
mov eax, dword [0x444080]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push esi
push edi
push 0
lea eax, [esp + 0xc0]
mov dword [esp + 0xc0], 1
push eax
lea eax, [esp + 0xc0]
mov dword [esp + 0xc8], 0
push eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call dword [sym.imp.gdiplus.dll_GdiplusStartup]
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
mov dword [esp + 0x28], eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push 3
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x4c
call esi
push 0x4d
mov dword [esp + 0x24], eax
call esi
push 0x4e
mov edi, eax
call esi
push 0x4f
mov ebx, eax
call esi
mov esi, eax
push esi
push ebx
push dword [esp + 0x18]
mov dword [esp + 0x24], esi
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
push dword [esp + 0x18]
mov ecx, esi
mov dword [esp + 0x24], eax
neg ecx
mov dword [esp + 0x8c], 0x28
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], 0x200001
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
call dword [sym.imp.GDI32.dll_SelectObject]
movzx eax, word [esp + 0x92]
imul eax, ebx
add eax, 0x1f
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
imul eax, esi
shl eax, 2
push eax
push 0x42
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push 0xcc0020
mov esi, eax
mov eax, dword [esp + 0x1c]
push eax
push ebx
push edi
push dword [esp + 0x30]
mov edi, dword [esp + 0x24]
push edi
push eax
push ebx
mov ebx, dword [esp + 0x34]
push 0
push 0
push ebx
call dword [sym.imp.GDI32.dll_StretchBlt]
push 0
lea eax, [esp + 0x88]
push eax
push esi
push dword [esp + 0x24]
push 0
push dword [esp + 0x30]
push ebx
call dword [sym.imp.GDI32.dll_GetDIBits]
push ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
push edi
push dword [esp + 0x28]
call dword [sym.imp.USER32.dll_ReleaseDC]
xor eax, eax
mov dword [esp + 0x84], vtable.ATL::CImage.0
mov word [esp + 0xa2], ax
mov dword [esp + 0xa8], 0xffffffff
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
call fcn.00402d60
mov esi, eax
lea edi, [esi + 4]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
inc dword [esi + 0x1c]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x28]
push ecx
push 0x54
push eax
mov dword [esp + 0x94], eax
call dword [sym.imp.GDI32.dll_GetObjectA]
cmp eax, 0x54
jne 0x4118ca
mov esi, dword [esp + 0x48]
mov eax, esi
mov ecx, dword [esp + 0x44]
cdq
mov edi, eax
mov dword [esp + 0x90], ecx
movzx eax, word [esp + 0x4e]
xor edi, edx
mov dword [esp + 0x9c], eax
sub edi, edx
imul eax, ecx
mov byte [esp + 0xa0], 1
mov dword [esp + 0x94], edi
add eax, 0x1f
cdq
and edx, 0x1f
lea ecx, [edx + eax]
mov edx, dword [esp + 0x3c]
sar ecx, 5
shl ecx, 2
mov dword [esp + 0x98], ecx
mov dword [esp + 0x8c], edx
test esi, esi
jle 0x41190a
lea eax, [edi - 1]
imul eax, ecx
add eax, edx
neg ecx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x98], ecx
jmp 0x41190a
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x94], eax
movzx eax, word [esp + 0x3a]
mov byte [esp + 0xa0], 0
mov dword [esp + 0x9c], eax
mov dword [esp + 0x98], 0
mov dword [esp + 0x8c], 0
sub esp, 8
mov dword [esp + 0xac], 0xffffffff
lea ecx, [esp + 0x8c]
mov byte [esp + 0xa9], 0
call fcn.00410e00
push dword [esp + 0xb8]
mov ebx, dword [sym.imp.gdiplus.dll_GdiplusShutdown]
call ebx
mov eax, dword [esp + 0x88]
test eax, eax
je 0x41194d
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
call fcn.00402d60
mov esi, eax
lea edi, [esi + 4]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [esi + 0x1c], 0xffffffff
jne 0x411985
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi]
test eax, eax
je 0x411974
push eax
call ebx
mov dword [esi], 0
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push edi
call esi
jmp 0x41198b
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push edi
call esi
mov ecx, dword [esp + 0xcc]
mov al, 1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004141fd
mov esp, ebp
pop ebp
ret