Function at 0x46d790
Capabilities:
Capture screenshot

Disassembly:
sub esp, 0x3c
push ebx
push esi
mov esi, dword [esp + 0x4c]
push esi
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
test ebx, ebx
mov dword [esp + 0xc], ebx
jne 0x46d7b0
pop esi
pop ebx
add esp, 0x3c
ret
test esi, esi
mov eax, esi
jne 0x46d7bc
call dword [sym.imp.USER32.dll_GetDesktopWindow]
lea ecx, [esp + 0x1c]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
jne 0x46d7dc
push ebx
push esi
call dword [sym.imp.USER32.dll_ReleaseDC]
pop esi
xor eax, eax
pop ebx
add esp, 0x3c
ret
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x60]
push ebp
mov ebp, dword [esp + 0x28]
sub ebp, esi
sub ecx, edx
push edi
mov dword [esp + 0x20], ecx
test eax, eax
mov edi, ebp
mov dword [esp + 0x10], ecx
je 0x46d834
mov eax, dword [esp + 0x60]
test eax, eax
jle 0x46d810
mov edi, eax
jmp 0x46d834
jge 0x46d834
cmp eax, 0xfffffff6
jge 0x46d81c
mov eax, 0xfffffff6
imul eax, ebp
mov edx, eax
mov eax, 0xae147ae1
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov edi, edx
mov eax, dword [esp + 0x74]
test eax, eax
je 0x46d870
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x46d84a
mov dword [esp + 0x10], eax
jmp 0x46d870
jge 0x46d870
cmp eax, 0xfffffff6
jge 0x46d856
mov eax, 0xfffffff6
imul eax, ecx
mov ecx, eax
mov eax, 0xae147ae1
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov dword [esp + 0x10], edx
push ebx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov edx, dword [esp + 0x10]
mov esi, eax
push edx
push edi
push ebx
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov ebx, eax
push ebx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push 4
push esi
mov dword [esp + 0x20], eax
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push 0xcc0020
push eax
push ebp
push 0
push 0xfffffffffffffff8
push ecx
push edx
push edi
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_StretchBlt]
lea eax, [esp + 0x34]
push eax
push 0x18
push ebx
call dword [sym.imp.GDI32.dll_GetObjectA]
mov edi, dword [esp + 0x3c]
imul edi, dword [esp + 0x40]
add edi, 0x36
lea ecx, [edi + 8]
push ecx
call fcn.0046ceb0
mov ebp, eax
xor eax, eax
add esp, 4
lea edx, [ebp + 4]
mov dword [ebp], 1
mov dword [edx], edi
add edx, 4
mov ecx, edx
add edx, 0xe
mov edi, edx
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov word [ecx + 0xc], ax
mov dword [edx - 4], 0x36
mov eax, dword [esp + 0x3c]
mov ecx, 0xa
imul eax, dword [esp + 0x40]
add eax, 0x36
mov word [edx - 0xe], 0x4d42
mov dword [edx - 0xc], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov dword [edx], 0x28
mov ecx, dword [esp + 0x38]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x3c]
mov dword [edx + 8], eax
mov word [edx + 0xc], 1
mov cx, word [esp + 0x46]
xor eax, eax
mov word [edx + 0xe], cx
mov dword [edx + 0x10], eax
mov ecx, dword [esp + 0x3c]
imul ecx, dword [esp + 0x40]
mov dword [edx + 0x14], ecx
mov dword [edx + 0x18], eax
mov dword [edx + 0x1c], eax
mov dword [edx + 0x20], eax
push eax
mov dword [edx + 0x24], eax
push edx
add edx, 0x28
push edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push esi
call dword [sym.imp.GDI32.dll_GetDIBits]
mov eax, dword [esp + 0x18]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x54]
push ecx
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, ebp
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x3c
ret