Function at 0x447ce0
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x254
mov eax, dword [0x55800c]
xor eax, esp
mov dword [esp + 0x250], eax
push ebx
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0xdbec]
mov byte [edi + 0xe264], 0
mov dword [edi + 0x88], 0
test eax, eax
je 0x447e97
cmp dword [eax + 0x10], 0
jne 0x447d3d
mov dword [edi + 0xe110], 1
mov dword [edi + 0xe114], 1
jmp 0x447e97
push 0x9c
lea eax, [esp + 0x14]
push 0
push eax
call fcn.004cddb0
add esp, 0xc
mov dword [esp + 0x34], 0x9c
lea eax, [esp + 0x10]
push eax
push 0xffffffffffffffff
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
push str.USER32
mov dword [esp + 0x3c], 0x1c0000
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0x1a4
lea eax, [esp + 0xb8]
push 0
push eax
call fcn.004cddb0
mov ebx, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
lea eax, [esp + 0xbc]
add esp, 0xc
mov dword [esp + 0xb0], 0x1a8
xor esi, esi
mov byte [esp + 0x10], 0
push esi
push eax
push esi
push esi
call ebx
test eax, eax
je 0x447e97
nop
mov eax, str.mv_video_hook_driver2
lea ecx, [esp + 0xd4]
nop dword [eax]
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x447df0
test dl, dl
je 0x447dec
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x447df0
add ecx, 2
add eax, 2
test dl, dl
jne 0x447dd0
xor eax, eax
jmp 0x447df5
sbb eax, eax
or eax, 1
test eax, eax
je 0x447e12
push 0
lea eax, [esp + 0xb4]
inc esi
push eax
push esi
push 0
call ebx
test eax, eax
jne 0x447dc0
jmp 0x447e97
mov eax, dword [edi + 0xdc24]
test eax, eax
je 0x447e52
push eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
test eax, eax
jne 0x447e3c
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_failed_to_DeleteDC_hrootdc_n
push eax
push 0x558c50
call fcn.0041c840
add esp, 0xc
push dword [edi + 0xdc24]
call dword [sym.imp.GDI32.dll_DeleteDC]
mov dword [edi + 0xdc24], 0
push 0
push 0
lea eax, [esp + 0xbc]
push eax
push str.DISPLAY
call dword [sym.imp.GDI32.dll_CreateDCA]
mov dword [edi + 0xdc24], eax
lea eax, [esp + 0x10]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0xbc]
push eax
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
cmp dword [edi + 0xdc24], 0
je 0x447ea0
mov dword [edi + 0x88], 1
cmp dword [edi + 0xdc24], 0
jne 0x447ef3
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_No_driver_used__n
push 0
push 0x558c50
call fcn.0041c840
add esp, 0xc
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [edi + 0xdc24], eax
test eax, eax
jne 0x447ef3
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_Failed_m_rootdc__n
push eax
push 0x558c50
call fcn.0041c840
add esp, 0xc
mov eax, 6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.00474f40
mov ecx, dword [edi + 0x14]
test ecx, ecx
setne al
mov byte [edi + 0xe265], al
test ecx, ecx
je 0x447f29
cmp dword [edi + 0xe260], 1
jle 0x447f29
mov byte [edi + 0xe264], 1
mov dword [edi], 6
mov dword [edi + 4], 6
mov eax, dword [edi + 0xdbec]
test eax, eax
je 0x447f4d
cmp dword [eax + 0x10], 0
jne 0x447f67
mov dword [edi + 0xe110], 1
mov dword [edi + 0xe114], 1
xor ecx, ecx
xor eax, eax
cmp byte [edi + 0xe264], cl
je 0x447f81
mov edx, dword [edi + 0xe22c]
mov esi, dword [edi + 0xe230]
jmp 0x447f8d
mov eax, dword [edi + 0xe258]
mov ecx, dword [edi + 0xe25c]
mov edx, dword [edi + 0xe22c]
mov esi, dword [edi + 0xe230]
jmp 0x447f8d
mov edx, dword [edi + 0xe190]
mov esi, dword [edi + 0xe194]
push esi
push edx
push ecx
push eax
mov ecx, edi
call fcn.0044cbe0
push dword [edi + 0xdc50]
push dword [edi + 0xdc4c]
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_bitmap_dimensions_are__d_x__d_n
push 9
push 0x558c50
call fcn.0041c840
add esp, 0x14
push dword [edi + 0xdc24]
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [edi + 0xdc20], eax
test eax, eax
jne 0x448003
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_failed_to_create_compatibleDC__d__n
push 0
push 0x558c50
call fcn.0041c840
add esp, 0x10
mov eax, 6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
mov ebx, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x26
push dword [edi + 0xdc24]
call ebx
test al, 1
jne 0x448045
push 0x10
push 0x542d04
mov edx, str.vncDesktop_:_root_device_doesnt_support_BitBlt_nWinVNC_cannot_be_used_with_this_graphic_device_driver
call fcn.00425e00
add esp, 8
mov eax, 7
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
push 0x26
push dword [edi + 0xdc20]
call ebx
test al, al
js 0x448081
push 0x10
push 0x542d04
mov edx, str.vncDesktop_:_memory_device_doesnt_support_GetDIBits_nWinVNC_cannot_be_used_with_this_graphics_device_driver
call fcn.00425e00
add esp, 8
mov eax, 8
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
push 1
push 1
push dword [edi + 0xdc24]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [edi + 0xdc28], eax
test eax, eax
jne 0x4480d0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_failed_to_create_memory_bitmap__d__n
push 0
push 0x558c50
call fcn.0041c840
add esp, 0x10
mov eax, 9
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_created_memory_bitmap_n
push 9
push 0x558c50
call fcn.0041c840
add esp, 0xc
lea eax, [edi + 0xdc54]
push 0x430
push 0
push eax
call fcn.004cddb0
add esp, 0xc
mov dword [edi + 0xdc58], 0x28
lea esi, [edi + 0xdc58]
push 0
push esi
push 0
push 1
push 0
push dword [edi + 0xdc28]
push dword [edi + 0xdc20]
call dword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
jne 0x448156
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_unable_to_get_display_format_n
push eax
push 0x558c50
call fcn.0041c840
add esp, 0xc
mov eax, 0xa
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
push 0
push esi
push 0
push 1
push 0
push dword [edi + 0xdc28]
push dword [edi + 0xdc20]
call dword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
jne 0x4481a2
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_unable_to_get_display_colour_info_n
push eax
push 0x558c50
call fcn.0041c840
add esp, 0xc
mov eax, 0xa
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
push str.d:_saasultravncwinvncwinvnc_vncdesktop.cpp_:_got_bitmap_format_n
push 9
push 0x558c50
call fcn.0041c840
mov ecx, dword [edi + 0xdc4c]
add esp, 0xc
movzx eax, word [edi + 0xdc66]
mov esi, dword [edi + 0xdc50]
imul eax, ecx
push 0x26
push dword [edi + 0xdc20]
mov dword [edi + 0xdc5c], ecx
imul eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
cdq
xor eax, edx
sub eax, edx
mov dword [edi + 0xdc6c], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
neg eax
mov dword [edi + 0xdc60], eax
call ebx
shr eax, 8
push 1
not eax
push 0
and eax, 1
push 0
mov dword [edi + 0xdc54], eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x25c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret