Function at 0x12778a0
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
call fcn.01291dc0
mov ebx, eax
mov eax, edx
mov dword [ebp - 4], eax
cmp eax, 0x600000
jb 0x1277bc8
ja 0x12778c7
test ebx, ebx
jb 0x1277bc8
push 0x10
call fcn.01294390
add esp, 4
test eax, eax
je 0x12778f1
push str.this_is_vista_and_up_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x18
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov esi, eax
test esi, esi
je 0x1277b48
push edi
mov edi, dword [ebp + 8]
push str.ChangeDisplaySettingsExA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10
mov dword [edi + 4], eax
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277946
push dword [edi + 4]
push str.VBoxDisplayInit:_pfnChangeDisplaySettingsEx___p_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
push str.EnumDisplayDevicesA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10
mov dword [edi + 8], eax
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277982
push dword [edi + 8]
push str.VBoxDisplayInit:_pfnEnumDisplayDevices___p_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
cmp dword [ebp - 4], 0x600100
jb 0x1277a5c
ja 0x1277999
test ebx, ebx
jb 0x1277a5c
push str.SetDisplayConfig
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10
mov dword [0x12fda80], eax
call fcn.01294390
add esp, 4
test eax, eax
je 0x12779da
push dword [0x12fda80]
push str.VBoxDisplayInit:_pfnSetDisplayConfig___p_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
push str.QueryDisplayConfig
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10
mov dword [0x12fda84], eax
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277a1b
push dword [0x12fda84]
push str.VBoxDisplayInit:_pfnQueryDisplayConfig___p_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
push str.GetDisplayConfigBufferSizes
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10
mov dword [0x12fda88], eax
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277a5c
push dword [0x12fda88]
push str.VBoxDisplayInit:_pfnGetDisplayConfigBufferSizes___p_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
lea eax, [edi + 0xc]
push eax
call fcn.0128b1b0
mov esi, eax
add esp, 4
test esi, esi
jns 0x1277adc
mov edi, dword [0x12fde48]
test edi, edi
je 0x1277aa8
push 0x10
mov ecx, edi
call dword [section..rdata]
call edi
add esp, 4
test eax, eax
je 0x1277aa8
push esi
push str.VBoxTray:_vboxDispKmtCallbacksInit_failed_hr_0x_x_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952d0
add esp, 0x1c
push 0x10
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277ad3
push esi
push str.VBoxTray:_vboxDispKmtCallbacksInit_failed_hr_0x_x_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x1c
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.012764c0
mov esi, eax
test esi, esi
js 0x1277af0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [0x12fde48]
test edi, edi
je 0x1277b2a
push 0x10
mov ecx, edi
call dword [section..rdata]
call edi
add esp, 4
test eax, eax
je 0x1277b2a
push esi
push str.VBoxTray:_VBoxRrInit_failed_hr_0x_x_n
push str.unsigned_long___cdecl_vboxDispIfWddmInit_const_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952d0
add esp, 0x1c
push 0x10
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277ad3
push esi
push str.VBoxTray:_VBoxRrInit_failed_hr_0x_x_n
push str.unsigned_long___cdecl_vboxDispIfWddmInit_const_struct_VBOXDISPIF__
jmp 0x1277ac1
mov esi, dword [0x12fde48]
test esi, esi
je 0x1277b8a
push 0x10
mov ecx, esi
call dword [section..rdata]
call esi
mov esi, eax
add esp, 4
test esi, esi
je 0x1277b8a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.GetModuleHandle_USER32__failed__err__d__n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push esi
call fcn.012952d0
add esp, 0x1c
push 0x10
call fcn.01294390
mov esi, eax
add esp, 4
test esi, esi
je 0x1277bbd
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.GetModuleHandle_USER32__failed__err__d__n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push esi
call fcn.012952b0
add esp, 0x1c
pop esi
mov eax, 0x32
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [0x12fde48]
test esi, esi
je 0x1277c01
push 0x10
mov ecx, esi
call dword [section..rdata]
call esi
add esp, 4
test eax, eax
je 0x1277c01
push str.can_not_switch_to_VBOXDISPIF_MODE_WDDM__because_os_is_not_Vista_or_upper_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952d0
add esp, 0x18
push 0x10
call fcn.01294390
add esp, 4
test eax, eax
je 0x1277c2b
push str.can_not_switch_to_VBOXDISPIF_MODE_WDDM__because_os_is_not_Vista_or_upper_n
push str.unsigned_long___cdecl_vboxDispIfSwitchToWDDM_struct_VBOXDISPIF__
push str._Rfn:__M
push 0
push 0x10
push eax
call fcn.012952b0
add esp, 0x18
pop esi
mov eax, 0x32
pop ebx
mov esp, ebp
pop ebp
ret