Function at 0x4a23b8
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4a2750
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x34
call fcn.00402bdc
mov edx, dword [ebp - 4]
mov dword [edx + 0xd4], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
xor ecx, ecx
mov edx, 0x34
call fcn.00403690
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
add eax, 0x28
mov edx, dword [ebp - 4]
mov dword [edx + 0xd8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd8]
add eax, 4
mov edx, dword [ebp - 4]
mov dword [edx + 0xdc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xdc]
add eax, 4
mov edx, dword [ebp - 4]
mov dword [edx + 0xe0], eax
push 0
call sub.user32.dll_GetDC
mov edx, dword [ebp - 4]
mov dword [edx + 0xf4], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0xf4], 0
jne 0x4a246c
mov ecx, 0x19d
mov edx, 0x4a2764
mov eax, 0x4a27a8
call fcn.00404d00
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xf4]
push eax
call sub.gdi32.dll_CreateCompatibleDC
mov edx, dword [ebp - 4]
mov dword [edx + 0xe4], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0xe4], 0
jne 0x4a24a4
mov ecx, 0x1a0
mov edx, 0x4a2764
mov eax, 0x4a27a8
call fcn.00404d00
mov eax, dword [0x4aa204]
mov eax, dword [eax]
call fcn.0047092c
push eax
mov eax, dword [0x4aa204]
mov eax, dword [eax]
call fcn.00470938
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xf4]
push eax
call sub.gdi32.dll_CreateCompatibleBitmap
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
mov dword [eax], 0x28
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
push eax
push 0
push 1
push 0
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
push eax
call sub.gdi32.dll_GetDIBits
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4a2521
mov ecx, 0x1a8
mov edx, 0x4a2764
mov eax, 0x4a27a8
call fcn.00404d00
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
push eax
push 0
push 1
push 0
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
push eax
call sub.gdi32.dll_GetDIBits
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4a2563
mov ecx, 0x1ac
mov edx, 0x4a2764
mov eax, 0x4a27a8
call fcn.00404d00
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
mov eax, dword [eax + 8]
cdq
xor eax, edx
sub eax, edx
jno 0x4a257b
call fcn.00403d48
neg eax
jno 0x4a2584
call fcn.00403d48
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0xd4]
mov dword [edx + 8], eax
push 0
push 0
mov eax, dword [ebp - 4]
add eax, 0xb4
push eax
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
push eax
call sub.gdi32.dll_CreateDIBSection
mov edx, dword [ebp - 4]
mov dword [edx + 0xf0], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0xf0], 0
jne 0x4a2602
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.00409758
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x10]
mov edx, 0x4a27c4
call fcn.004050cc
mov ecx, dword [ebp - 0x10]
mov dl, 1
mov eax, dword [0x408684]
call fcn.0040da44
call fcn.00404670
cmp byte [0x4ad3e8], 0
je 0x4a26a3
push 0
push 0
mov eax, dword [ebp - 4]
add eax, 0x128
push eax
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
push eax
call sub.gdi32.dll_CreateDIBSection
mov edx, dword [ebp - 4]
mov dword [edx + 0xe8], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0xe8], 0
jne 0x4a2681
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x1c]
call fcn.00409758
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x18]
mov edx, 0x4a27c4
call fcn.004050cc
mov ecx, dword [ebp - 0x18]
mov dl, 1
mov eax, dword [0x408684]
call fcn.0040da44
call fcn.00404670
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe8]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
push eax
call sub.gdi32.dll_SelectObject
mov edx, dword [ebp - 4]
mov dword [edx + 0xec], eax
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc0]
test eax, eax
jns 0x4a26be
call fcn.00403d40
mov edx, dword [ebp - 4]
mov dword [edx + 0xd0], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd0]
call fcn.00402bdc
mov edx, dword [ebp - 4]
mov dword [edx + 0xb8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xb8]
xor ecx, ecx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0xd0]
call fcn.00403690
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
movzx eax, word [eax + 0xe]
shr eax, 3
mov edx, dword [ebp - 4]
mov dword [edx + 0xfc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xd4]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 4]
imul dword [edx + 0xfc]
jno 0x4a272c
call fcn.00403d48
mov edx, dword [ebp - 4]
mov dword [edx + 0xf8], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4a2757
lea eax, [ebp - 0x1c]
mov edx, 4
call fcn.00404dc8
ret