Function at 0x44f5f0
Capabilities:
Capture screenshot
Create thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x264
mov eax, dword [0x5d60c4]
xor eax, esp
mov dword [esp + 0x260], eax
push ebx
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0xe3c8]
mov byte [edi + 0xe965], 0
mov dword [edi + 0x860], 0
test eax, eax
je 0x44f79d
cmp dword [eax + 0x10], 0
je 0x44f789
push 0x9c
lea eax, [esp + 0x24]
push 0
push eax
call fcn.0052d9b0
add esp, 0xc
mov dword [esp + 0x44], 0x9c
lea eax, [esp + 0x20]
push eax
push 0xffffffffffffffff
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
push 0x1a4
lea eax, [esp + 0xc8]
mov dword [esp + 0x4c], 0x1c0000
push 0
push eax
call fcn.0052d9b0
mov ebx, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
lea eax, [esp + 0xcc]
add esp, 0xc
mov dword [esp + 0xc0], 0x1a8
xor esi, esi
mov byte [esp + 0x20], 0
push esi
push eax
push esi
push esi
call ebx
test eax, eax
je 0x44f79d
nop
mov eax, str.mv_video_hook_driver2
lea ecx, [esp + 0xe4]
nop dword [eax]
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x44f6e0
test dl, dl
je 0x44f6dc
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x44f6e0
add ecx, 2
add eax, 2
test dl, dl
jne 0x44f6c0
xor eax, eax
jmp 0x44f6e5
sbb eax, eax
or eax, 1
test eax, eax
je 0x44f702
push 0
lea eax, [esp + 0xc4]
inc esi
push eax
push esi
push 0
call ebx
test eax, eax
jne 0x44f6b0
jmp 0x44f79d
mov eax, dword [edi + 0xe41c]
test eax, eax
je 0x44f742
push eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
test eax, eax
jne 0x44f72c
push str.vncDesktop::InitBitmap_:_failed_to_DeleteDC_hrootdc_n
push eax
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
push dword [edi + 0xe41c]
call dword [sym.imp.GDI32.dll_DeleteDC]
mov dword [edi + 0xe41c], 0
push 0
push 0
lea eax, [esp + 0xcc]
push eax
push str.DISPLAY
call dword [sym.imp.GDI32.dll_CreateDCA]
mov dword [edi + 0xe41c], eax
lea eax, [esp + 0x20]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0xcc]
push eax
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
cmp dword [edi + 0xe41c], 0
je 0x44f7a6
mov dword [edi + 0x860], 1
jmp 0x44f79d
mov dword [edi + 0xe8f4], 1
mov dword [edi + 0xe8f8], 1
cmp dword [edi + 0xe41c], 0
jne 0x44f7f9
push str.vncDesktop::InitBitmap_:_No_driver_used__n
push 0
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [edi + 0xe41c], eax
test eax, eax
jne 0x44f7f9
push str.vncDesktop::InitBitmap_:_Failed_m_rootdc__n
push eax
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
mov eax, 6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
mov ecx, edi
call fcn.0047a9d0
mov ecx, dword [edi + 0x7ec]
test ecx, ecx
setne al
mov byte [edi + 0xe966], al
test ecx, ecx
je 0x44f832
cmp dword [edi + 0xe3e4], 1
jle 0x44f832
mov byte [edi + 0xe965], 1
mov dword [edi + 4], 0x63
mov dword [edi], 0x63
mov eax, dword [edi + 0xe3c8]
test eax, eax
je 0x44f899
cmp dword [eax + 0x10], 0
je 0x44f885
push dword [edi + 0x7c8]
mov ecx, edi
push dword [edi + 0x7c4]
push dword [edi + 0x7d4]
push dword [edi + 0x7d0]
call fcn.00454010
mov ebx, dword [edi + 0x7d0]
mov esi, dword [edi + 0x7c4]
add esi, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov esi, dword [edi + 0x7c8]
add esi, ebx
mov dword [esp + 0x18], esi
jmp 0x44f8f4
mov dword [edi + 0xe8f4], 1
mov dword [edi + 0xe8f8], 1
cmp byte [edi + 0xe965], 0
mov ecx, edi
je 0x44f8cf
push dword [edi + 0x7c8]
push dword [edi + 0x7c4]
push 0
push 0
call fcn.00454010
mov ebx, dword [edi + 0x7c4]
mov dword [esp + 0x14], ebx
mov ebx, dword [edi + 0x7c8]
mov dword [esp + 0x18], ebx
jmp 0x44f8ec
push dword [edi + 0xc]
push dword [edi + 8]
push 0
push 0
call fcn.00454010
mov eax, dword [edi + 8]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0
push dword [edi + 0xe448]
push dword [edi + 0xe444]
push str.vncDesktop::InitBitmap_:_bitmap_dimensions_are__d_x__d_n
push 9
push 0x5d6df8
call fcn.0041d510
mov eax, dword [0x5e44e8]
add esp, 0x14
cmp dword [eax + 0xa40], 0
je 0x44f9d9
mov ebx, dword [edi + 0xe3c4]
mov eax, dword [ebx + 0xbc]
mov esi, dword [eax]
cmp esi, eax
je 0x44f969
mov edx, dword [ebx]
mov ecx, ebx
movzx eax, word [esi + 8]
push eax
call dword [edx + 0x48]
lea ecx, [eax + 0x25c]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x44f950
sub ecx, edx
jne 0x44fa24
mov esi, dword [esi]
cmp esi, dword [ebx + 0xbc]
jne 0x44f938
mov ecx, 0x5b9638
mov eax, dword [0x5e44e8]
push ecx
push 0xff
push 0x5d9188
cmp dword [eax + 0xa48], 0
setne bl
call fcn.0053193e
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov dword [0x5d9170], eax
mov dword [0x5d9174], eax
mov eax, dword [esp + 0x14]
mov dword [0x5d9178], eax
mov eax, dword [esp + 0x18]
mov dword [0x5d917c], eax
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push 0x427da0
push 0
push 0
mov byte [0x5d913b], bl
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x44f9d9
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [edi + 0xe41c]
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [edi + 0xe418], eax
test eax, eax
jne 0x44fa3b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.vncDesktop::InitBitmap_:_failed_to_create_compatibleDC__d__n
push 0
push 0x5d6df8
call fcn.0041d510
add esp, 0x10
mov eax, 6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
mov edx, dword [ebx]
mov ecx, ebx
movzx eax, word [esi + 8]
push eax
call dword [edx + 0x48]
lea ecx, [eax + 0x25c]
jmp 0x44f96e
mov ebx, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x26
push dword [edi + 0xe41c]
call ebx
test al, 1
jne 0x44fa7d
push 0x10
push str.WinVNC
mov edx, str.vncDesktop_:_root_device_doesnt_support_BitBlt_nUltraVNC_Server_cannot_be_used_with_this_graphics_device_driver
call fcn.00425890
add esp, 8
mov eax, 7
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
push 0x26
push dword [edi + 0xe418]
call ebx
test al, al
js 0x44fab9
push 0x10
push str.WinVNC
mov edx, str.vncDesktop_:_memory_device_doesnt_support_GetDIBits_nUltraVNC_Server_cannot_be_used_with_this_graphics_device_driver
call fcn.00425890
add esp, 8
mov eax, 8
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
push 1
push 1
push dword [edi + 0xe41c]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [edi + 0xe420], eax
test eax, eax
jne 0x44fb08
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.vncDesktop::InitBitmap_:_failed_to_create_memory_bitmap__d__n
push 0
push 0x5d6df8
call fcn.0041d510
add esp, 0x10
mov eax, 9
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
push str.vncDesktop::InitBitmap_:_created_memory_bitmap_n
push 9
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
lea eax, [edi + 0xe44c]
push 0x430
push 0
push eax
call fcn.0052d9b0
add esp, 0xc
mov dword [edi + 0xe450], 0x28
lea esi, [edi + 0xe450]
push 0
push esi
push 0
push 1
push 0
push dword [edi + 0xe420]
push dword [edi + 0xe418]
call dword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
jne 0x44fb8e
push str.vncDesktop::InitBitmap_:_unable_to_get_display_format_n
push eax
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
mov eax, 0xa
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
push 0
push esi
push 0
push 1
push 0
push dword [edi + 0xe420]
push dword [edi + 0xe418]
call dword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
jne 0x44fbda
push str.vncDesktop::InitBitmap_:_unable_to_get_display_colour_info_n
push eax
push 0x5d6df8
call fcn.0041d510
add esp, 0xc
mov eax, 0xa
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret
push str.vncDesktop::InitBitmap_:_got_bitmap_format_n
push 9
push 0x5d6df8
call fcn.0041d510
mov ecx, dword [edi + 0xe444]
add esp, 0xc
movzx eax, word [edi + 0xe45e]
mov esi, dword [edi + 0xe448]
imul eax, ecx
push 0x26
push dword [edi + 0xe418]
mov dword [edi + 0xe454], ecx
imul eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
cdq
xor eax, edx
sub eax, edx
mov dword [edi + 0xe464], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
neg eax
mov dword [edi + 0xe458], eax
call ebx
shr eax, 8
push 1
not eax
push 0
and eax, 1
push 0
mov dword [edi + 0xe44c], eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x26c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0052b789
mov esp, ebp
pop ebp
ret