Function at 0x402810
Capabilities:
Capture screenshot

Disassembly:
push 0xffffffffffffffff
push 0x42edd0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x68
push ebx
push ebp
push esi
push edi
push 0
mov dword [esp + 0x84], 0
call dword [sym.imp.USER32.dll_GetDC]
push eax
call fcn.00427366
mov ebp, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, eax
push 0xc
mov eax, dword [esi + 8]
push eax
call ebp
mov ecx, dword [esi + 8]
push 8
push ecx
mov ebx, eax
call ebp
mov edx, dword [esi + 8]
push 0xa
push edx
mov edi, eax
call ebp
push ebx
push 0x43d42c
mov ebp, eax
call fcn.004103cf
push edi
push 0x43d41c
call fcn.004103cf
push ebp
push 0x43d40c
call fcn.004103cf
add esp, 0x18
lea ecx, [esp + 0x28]
call fcn.004272c4
test esi, esi
mov byte [esp + 0x80], 1
jne 0x4028a8
xor eax, eax
jmp 0x4028ab
mov eax, dword [esi + 4]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push eax
lea ecx, [esp + 0x2c]
call fcn.0042737b
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x43165c
mov eax, dword [esi + 4]
push ebp
push edi
push eax
mov byte [esp + 0x8c], 2
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
lea ecx, [esp + 0x14]
call fcn.00427b35
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
neg eax
sbb eax, eax
and eax, ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
call fcn.004274a6
test esi, esi
mov ebx, eax
je 0x40290c
mov esi, dword [esi + 4]
mov edx, dword [esp + 0x2c]
push 0xcc0020
push 0
push 0
push esi
push ebp
push edi
push 0
push 0
push edx
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x38]
push eax
push 0x18
push ecx
call dword [sym.imp.GDI32.dll_GetObjectA]
mov edx, dword [esp + 0x88]
push 0x43d408
push edx
call fcn.004103bc
mov esi, eax
mov ecx, 9
xor eax, eax
lea edi, [esp + 0x5c]
rep stosd dword es:[edi], eax
mov ax, word [esp + 0x52]
mov ecx, dword [esp + 0x48]
mov word [esp + 0x66], ax
mov eax, dword [esp + 0x4c]
imul eax, ecx
mov dword [esp + 0x6c], eax
xor edx, edx
add eax, 0x36
mov dword [esp + 0x22], edx
mov dword [esp + 0x22], eax
push esi
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x2a], edx
push 0xe
lea eax, [esp + 0x28]
push 1
mov dword [esp + 0x36], edx
push eax
mov dword [esp + 0x78], 0
mov word [esp + 0x74], 1
mov dword [esp + 0x68], 0x28
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x3a], 0x36
mov word [esp + 0x30], 0x4d42
call fcn.00410252
push esi
push 0x28
lea ecx, [esp + 0x70]
push 1
push ecx
call fcn.00410252
mov edx, dword [esp + 0x6c]
imul edx, dword [esp + 0x68]
push edx
call fcn.00420fba
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x58]
add esp, 0x2c
mov edi, eax
lea eax, [esp + 0x50]
push 0
push eax
push edi
push ebp
push 0
push ecx
push edx
call dword [sym.imp.GDI32.dll_GetDIBits]
mov eax, dword [esp + 0x44]
push esi
imul eax, dword [esp + 0x44]
push eax
push 1
push edi
call fcn.00410252
push edi
call fcn.00420fe3
push esi
call fcn.004101d5
add esp, 0x18
test ebx, ebx
je 0x402a30
mov ebx, dword [ebx + 4]
mov ecx, dword [esp + 0x2c]
push ebx
push ecx
call fcn.004274a6
mov dword [esp + 0x10], vtable.CGdiObject.0
lea ecx, [esp + 0x10]
mov byte [esp + 0x80], 3
call fcn.00427b8c
lea ecx, [esp + 0x28]
mov byte [esp + 0x80], 0
call fcn.004273e3
lea ecx, [esp + 0x88]
mov dword [esp + 0x80], 0xffffffff
call fcn.00420a91
mov ecx, dword [esp + 0x78]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x74
ret 4