Function at 0x46a8a8
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov byte [ebp - 1], dl
mov edi, eax
mov ebx, dword [ebp + 8]
call fcn.00460230
mov eax, dword [ebp - 8]
mov word [eax], 0
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_GetDC
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_CreateCompatibleDC
mov esi, eax
movzx eax, word [edi + 0x92]
push eax
movzx eax, word [edi + 0x90]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_CreateCompatibleBitmap
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
push esi
call sub.gdi32.dll_SelectObject
push 0xcc0020
push 0
push 0
mov eax, dword [ebp - 0x10]
push eax
movzx eax, word [edi + 0x92]
push eax
movzx eax, word [edi + 0x90]
push eax
push 0
push 0
push esi
call sub.gdi32.dll_BitBlt
mov eax, 0x28
call fcn.00402b2c
mov edi, eax
mov edx, 0x28
mov eax, edi
call fcn.00408168
mov dword [edi], 0x28
push 0
push edi
push 0
push 0
push 0
mov eax, dword [ebp - 0xc]
push eax
push esi
call sub.gdi32.dll_GetDIBits
xor eax, eax
mov al, byte [ebp - 1]
cmp eax, 0x18
ja case.0x46a974.0
mov al, byte [eax + 0x46a97b]
jmp dword [eax*4 + 0x46a994]
mov eax, dword [ebp - 8]
mov word [eax], 0x30
mov eax, dword [ebp - 8]
movzx eax, word [eax]
call fcn.00402b2c
mov dword [ebx], eax
mov eax, dword [ebx]
mov ecx, 0x28
mov edx, edi
call fcn.0040814c
mov eax, dword [ebx]
mov word [eax + 0xe], 1
mov eax, dword [ebx]
mov dword [eax + 0x20], 2
jmp case.0x46a974.0
mov eax, dword [ebp - 8]
mov word [eax], 0x68
mov eax, dword [ebp - 8]
movzx eax, word [eax]
call fcn.00402b2c
mov dword [ebx], eax
mov eax, dword [ebx]
mov ecx, 0x28
mov edx, edi
call fcn.0040814c
mov eax, dword [ebx]
mov word [eax + 0xe], 4
mov eax, dword [ebx]
mov dword [eax + 0x20], 0x10
jmp case.0x46a974.0
mov eax, dword [ebp - 8]
mov word [eax], 0x428
mov eax, dword [ebp - 8]
movzx eax, word [eax]
call fcn.00402b2c
mov dword [ebx], eax
mov eax, dword [ebx]
mov ecx, 0x28
mov edx, edi
call fcn.0040814c
mov eax, dword [ebx]
mov word [eax + 0xe], 8
mov eax, dword [ebx]
mov dword [eax + 0x20], pe_nt_image_headers32
jmp case.0x46a974.0
mov eax, dword [ebp - 8]
mov word [eax], 0x28
mov eax, dword [ebp - 8]
movzx eax, word [eax]
call fcn.00402b2c
mov dword [ebx], eax
mov eax, dword [ebx]
mov ecx, 0x28
mov edx, edi
call fcn.0040814c
mov eax, dword [ebx]
mov word [eax + 0xe], 0x10
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x20], edx
jmp case.0x46a974.0
mov eax, dword [ebp - 8]
mov word [eax], 0x28
mov eax, dword [ebp - 8]
movzx eax, word [eax]
call fcn.00402b2c
mov dword [ebx], eax
mov eax, dword [ebx]
mov ecx, 0x28
mov edx, edi
call fcn.0040814c
mov eax, dword [ebx]
mov word [eax + 0xe], 0x18
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x20], edx
mov eax, dword [ebx]
cmp dword [eax + 0x14], 0
ja 0x46aae8
mov eax, dword [ebx]
mov eax, dword [eax + 8]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebx]
imul dword [edx + 4]
mov edx, dword [ebx]
movzx edx, word [edx + 0xe]
imul edx
test eax, eax
jns 0x46aae0
add eax, 7
sar eax, 3
mov edx, dword [ebx]
mov dword [edx + 0x14], eax
mov eax, dword [ebx]
xor edx, edx
mov dword [eax + 0x10], edx
push 0
mov eax, dword [ebx]
push eax
push 0
push 0
push 0
mov eax, dword [ebp - 0xc]
push eax
push esi
call sub.gdi32.dll_GetDIBits
mov eax, dword [ebp - 0x10]
push eax
push 0
call sub.user32.dll_ReleaseDC
push esi
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
mov eax, edi
call fcn.00402b5c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4