Function at 0x4048e0
Capabilities:
Delete registry value
Set registry value

Disassembly:
sub esp, 0x254
push ebx
lea eax, [esp + 0xb0]
push eax
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0xc]
push ecx
push str.DemoForge_Mirage_Driver
xor ebx, ebx
push str.Mirage_Driver
mov dword [esp + 0x18], ebx
call fcn.004047b0
add esp, 0x10
test eax, eax
jne 0x40493d
push str.DemoForge_Mirage_Driver
push str.Mirage_Driver
push str..VideoDriver.cpp:_tNo__s_or__s_found._n
push ebx
push 0x457788
call fcn.00401860
add esp, 0x14
xor eax, eax
pop ebx
add esp, 0x254
ret 8
push esi
push 0x9c
lea edx, [esp + 0x1c]
push ebx
push edx
call fcn.004326b0
add esp, 0xc
lea eax, [esp + 0x18]
push eax
push 0xffffffffffffffff
push ebx
mov word [esp + 0x48], 0x9c
mov word [esp + 0x4a], bx
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov eax, dword [esp + 0x264]
cmp eax, ebx
mov dword [esp + 0x40], 0x1c0000
je 0x4049ab
mov ecx, dword [eax]
mov esi, dword [eax + 8]
mov edx, dword [eax + 4]
sub esi, ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [eax + 0xc]
sub ecx, edx
mov dword [esp + 0x40], 0x1c0020
mov dword [esp + 0x48], edx
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0xc]
lea edx, [esp + 0xd8]
push edx
lea eax, [esp + 0xbc]
push eax
push ecx
push str..VideoDriver.cpp:_tDevNum:_d_nName:_s_nString:_s_n_n
push 9
push 0x457788
mov byte [esp + 0x30], bl
call fcn.00401860
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
push edx
push eax
push str..VideoDriver.cpp:_tScreen_Top_Left_Position:___i___i__n
push 9
push 0x457788
call fcn.00401860
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
push ecx
push edx
push str..VideoDriver.cpp:_tScreen_Dimensions:___i___i__n
push 9
push 0x457788
call fcn.00401860
mov eax, dword [esp + 0xc0]
add esp, 0x40
push eax
push str..VideoDriver.cpp:_tScreen_Color_depth:__i_n
push 9
push 0x457788
call fcn.00401860
push str.dfmirage
call fcn.004044a0
mov esi, eax
add esp, 0x14
cmp esi, ebx
jne 0x404a4d
pop esi
xor eax, eax
pop ebx
add esp, 0x254
ret 8
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
push str.Screen.ForcedBpp
push esi
call edi
push str.Pointer.Enabled
push esi
call edi
mov ecx, dword [esp + 0x264]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push 4
lea edx, [esp + 0x10]
push edx
push 4
neg ecx
push ebx
sbb ecx, ecx
push str.Cap.DfbBackingMode
and ecx, 3
push esi
mov dword [esp + 0x24], ecx
call edi
test eax, eax
je 0x404ab8
mov eax, dword [esp + 0xc]
push eax
push str..VideoDriver.cpp:_tCant_set__Cap.DfbBackingMode__to__d_n
push ebx
push 0x457788
call fcn.00401860
add esp, 0x10
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x254
ret 8
push ebp
push 4
lea ecx, [esp + 0x14]
push ecx
push 4
push ebx
push str.Order.BltCopyBits.Enabled
mov ebp, 1
push esi
mov dword [esp + 0x28], ebp
call edi
test eax, eax
je 0x404ae4
mov edx, dword [esp + 0x10]
push edx
push str..VideoDriver.cpp:_tCant_set_Order.BltCopyBits.Enabled_to__d_n
jmp 0x404b08
push 4
lea eax, [esp + 0x14]
push eax
push 4
push ebx
push str.Attach.ToDesktop
push esi
mov dword [esp + 0x28], ebp
call edi
test eax, eax
je 0x404b25
mov ecx, dword [esp + 0x10]
push ecx
push str..VideoDriver.cpp:_tCant_set_Attach.ToDesktop_to__d_n
push ebx
push 0x457788
call fcn.00401860
add esp, 0x10
pop ebp
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x254
ret 8
lea edx, [esp + 0x14]
push edx
push str.ChangeDisplaySettingsExA
push str.User32.DLL
mov dword [esp + 0x20], ebx
call fcn.00404750
add esp, 0xc
cmp eax, ebx
mov dword [esp + 0x18], eax
je 0x404b16
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_GetThreadDesktop]
mov ebp, eax
cmp ebp, ebx
je 0x404b77
push 0x2000000
push ebx
push ebx
call dword [sym.imp.USER32.dll_OpenInputDesktop]
mov edi, eax
cmp edi, ebx
je 0x404b7b
push edi
call dword [sym.imp.USER32.dll_SetThreadDesktop]
jmp 0x404b7b
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x88], 0x18
jne 0x404b90
mov dword [esp + 0x88], 0x20
push ebx
push 1
push ebx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xd0]
push ecx
call dword [esp + 0x28]
cmp eax, ebx
je 0x404bc5
push eax
lea edx, [esp + 0xc4]
push edx
push str..VideoDriver.cpp:_tChangeDisplaySettingsEx_failed_on_device___s__with_status:_0x_x_n
push ebx
push 0x457788
call fcn.00401860
add esp, 0x14
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xc0]
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
cmp cl, bl
jne 0x404bd4
push ebp
call dword [sym.imp.USER32.dll_SetThreadDesktop]
push edi
call dword [sym.imp.USER32.dll_CloseDesktop]
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop ebp
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x254
ret 8