Function at 0x450888
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffbc
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0xc], ecx
mov byte [ebp - 5], dl
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x450daf
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
mov eax, dword [ebp - 0xc]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.0040f48c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
cmp byte [eax + 0x211], 0
jne 0x4508da
mov eax, dword [ebp - 4]
test byte [eax + 0x20], 0x10
je 0x450d99
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x48]
push eax
call sub.user32.dll_GetWindowDC
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x450d99
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_CreateCompatibleDC
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x45091a
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x48]
push eax
call sub.user32.dll_ReleaseDC
jmp 0x450d99
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.00450394
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 4]
call fcn.00450394
mov eax, dword [0x49ef34]
cmp byte [eax], 0
je 0x450945
lea edx, [ebp - 0x40]
mov eax, dword [ebp - 4]
call fcn.0045004c
mov eax, dword [ebp - 0x34]
push eax
mov eax, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_CreateCompatibleBitmap
test eax, eax
jne 0x450978
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x48]
push eax
call sub.user32.dll_ReleaseDC
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_DeleteDC
jmp 0x450d99
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_SelectObject
mov dword [ebp - 0x18], eax
xor ecx, ecx
push ebp
push 0x450d92
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 0xc]
mov edi, eax
lea esi, [ebp - 0x40]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
cmp byte [ebp - 5], 0
je 0x4509b4
mov eax, 0x80000002
call fcn.00417014
jmp 0x4509be
mov eax, 0x80000003
call fcn.00417014
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x38]
sub al, 1
jb 0x4509d4
je 0x4509d8
dec al
je 0x4509dc
dec al
je 0x4509e1
jmp 0x450a02
mov al, 1
jmp 0x450a04
xor eax, eax
jmp 0x450a04
mov al, byte [ebp - 5]
jmp 0x450a04
push 0xc
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_GetDeviceCaps
cmp byte [ebp - 5], 0
je 0x4509fa
cmp eax, 8
setge al
jmp 0x450a04
cmp eax, 8
setg al
jmp 0x450a04
xor eax, eax
test al, al
je 0x450a32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34]
call fcn.00417014
push eax
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.00417014
mov ecx, eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.00450e50
jmp 0x450a4e
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34]
call fcn.00417014
mov ecx, eax
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.00450dc0
mov eax, dword [0x49ef34]
cmp byte [eax], 0
je 0x450a89
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
test byte [eax + 0x210], 1
je 0x450a72
mov al, byte [eax + 0x211]
dec eax
sub al, 2
jb 0x450a7b
mov eax, dword [ebp - 4]
test byte [eax + 0x20], 0x10
je 0x450a89
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.004503bc
mov eax, dword [0x49ef34]
cmp byte [eax], 0
je 0x450aa1
lea ecx, [ebp - 0x40]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045061c
mov eax, dword [ebp - 4]
cmp word [eax + 0x52], 0
je 0x450b1b
mov dl, 1
mov eax, dword [0x416108]
call fcn.00417e18
mov dword [ebp - 0x20], eax
xor eax, eax
push ebp
push 0x450b14
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x20]
call fcn.0041893c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x40]
call fcn.004174e8
mov edx, eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0xc]
call fcn.00417690
lea eax, [ebp - 0x30]
push eax
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x54]
call dword [ebx + 0x50]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x450b1b
mov eax, dword [ebp - 0x20]
call fcn.00402e94
ret
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
add eax, 4
call fcn.00403be4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
movzx eax, byte [eax + 0x1c]
imul ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x24]
movzx edx, byte [edx + 0x1c]
imul edx
add ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x28]
movzx edx, byte [edx + 0x1c]
imul edx
add ebx, eax
mov eax, ebx
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
cmp eax, edx
setl byte [ebp - 0x19]
cmp byte [ebp - 0x19], 0
je 0x450bbc
mov bl, 1
jmp 0x450c10
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
movzx eax, byte [eax + 0x1c]
imul ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x28]
movzx edx, byte [edx + 0x1c]
imul edx
add ebx, eax
mov eax, ebx
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
cmp eax, edx
setl bl
test bl, bl
jne 0x450c29
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0045078c
mov edx, dword [ebp - 4]
mov dl, byte [edx + 0x3a]
sub dl, 1
jb 0x450c67
dec dl
je 0x450c3e
dec dl
je 0x450c56
jmp 0x450c8e
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
cmp eax, edx
jge 0x450c8e
sub edx, eax
sar edx, 1
jns 0x450c51
adc edx, 0
add dword [ebp - 0x30], edx
jmp 0x450c8e
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
cmp eax, edx
jge 0x450c8e
sub edx, eax
add dword [ebp - 0x30], edx
jmp 0x450c8e
mov edx, dword [0x49ef34]
cmp byte [edx], 0
jne 0x450c8e
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
cmp eax, edx
jge 0x450c8e
mov edx, dword [ebp - 0x28]
sub edx, dword [ebp - 0x30]
sub edx, eax
sar edx, 1
jns 0x450c8b
adc edx, 0
add dword [ebp - 0x30], edx
cmp byte [ebp - 0x19], 0
je 0x450cc5
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
cmp dword [eax + 4], 0
je 0x450cc5
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
cmp byte [eax + 0x1c], 0
je 0x450cc5
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
push eax
mov al, byte [ebp - 5]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.004504b4
test bl, bl
je 0x450cfa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
cmp dword [eax + 4], 0
je 0x450cfa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
cmp byte [eax + 0x1c], 0
je 0x450cfa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
push eax
mov al, byte [ebp - 5]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.004504b4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
cmp byte [eax + 0x1c], 0
je 0x450d19
push eax
mov al, byte [ebp - 5]
push eax
lea ecx, [ebp - 0x30]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.004504b4
push 0xcc0020
mov edx, dword [ebp - 0xc]
mov edx, dword [edx + 4]
push edx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ecx + 0xc]
mov ebx, dword [ebp - 0xc]
sub ecx, edx
push ecx
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ecx + 8]
mov ebx, dword [ebp - 0xc]
sub ecx, eax
push ecx
mov ecx, dword [ebp - 0xc]
push edx
mov edx, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x14]
push eax
call sub.gdi32.dll_BitBlt
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x450d99
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_SelectObject
push eax
call sub.gdi32.dll_DeleteObject
mov eax, dword [ebp - 0x10]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x48]
push eax
call sub.user32.dll_ReleaseDC
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x450db6
lea eax, [ebp - 0x44]
call fcn.00403b90
ret