Function at 0x403010
Capabilities:
Link many functions at runtime
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb40
mov eax, dword [0x463024]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, ecx
lea ecx, [ebp - 0xb38]
push edi
push str.SoftwareAsusGPUTweakIIIMode
mov dword [esi + 0x3a8], 0
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::constructor_wchar_t_const__]
mov eax, dword [ebp - 0xb38]
lea edx, [ebp - 0x30c]
sub edx, eax
movzx ecx, word [eax]
lea eax, [eax + 2]
mov word [edx + eax - 2], cx
test cx, cx
jne 0x403051
lea eax, [ebp - 0xb30]
mov dword [ebp - 0xb3c], 4
push eax
push 0x2001f
push 0
lea eax, [ebp - 0x30c]
mov dword [ebp - 0xb40], 4
push eax
push 0x80000002
mov dword [ebp - 0xb34], 0
mov dword [ebp - 0xb30], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4030e8
lea eax, [ebp - 0xb3c]
push eax
lea eax, [ebp - 0xb34]
push eax
lea eax, [ebp - 0xb40]
push eax
push 0
push str.EnableLanguage
push dword [ebp - 0xb30]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4030e8
cmp dword [ebp - 0xb34], eax
seta al
mov byte [esi + 0x3b8], al
lea ecx, [ebp - 0xb38]
call dword [sym.imp.utilities.dll_public:_void___thiscall_SOUI::TStringT_wchar_t__struct_SOUI::wchar_traits_::destructor_void_]
cmp byte [esi + 0x3b8], 1
jne 0x40310f
call fcn.00408910
mov ecx, esi
mov dword [esi + 0x3b4], eax
call fcn.00407ba0
push 0x410
lea eax, [ebp - 0x71c]
push 0
push eax
call fcn.00414e80
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x71c]
add esp, 0xc
push 0x410
push eax
push 0
call ebx
lea eax, [ebp - 0xb2c]
mov ecx, 0x104
lea esi, [ebp - 0x71c]
lea edi, [ebp - 0xb2c]
push 0x5c
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00413ed2
lea ecx, [ebp - 0xb2c]
sub eax, ecx
sar eax, 1
push 0x5c
mov dword [ebp + eax*2 - 0xb2c], 0x5c
lea eax, [ebp - 0x71c]
push eax
call fcn.00413ed2
xor ecx, ecx
push str.GPU_Z.dll
push 0x208
mov word [eax + 2], cx
lea eax, [ebp - 0x71c]
push eax
call fcn.0041f84a
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
lea eax, [ebp - 0x71c]
add esp, 0x1c
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [0x468db0], eax
call esi
push str.Init
push dword [0x468db0]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.Shutdown
push dword [0x468db0]
mov dword [0x468d5c], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetVGAInfo
push dword [0x468db0]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetVGACount
push dword [0x468db0]
mov dword [0x468d58], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x200
mov dword [0x468d54], eax
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.00414e80
add esp, 0xc
lea eax, [ebp - 0x20c]
push 0x200
push eax
push 0
call ebx
lea eax, [ebp - 0x20c]
push 0x5c
push eax
call fcn.00413ed2
movups xmm0, xmmword [str.Exeio.dll]
lea ecx, [ebp - 0x20c]
add esp, 8
sub eax, ecx
sar eax, 1
lea ecx, [ecx + eax*2]
movups xmmword [ecx], xmm0
mov eax, dword [0x45a5f4]
mov dword [ecx + 0x10], eax
mov ax, word [0x45a5f8]
mov word [ecx + 0x14], ax
lea eax, [ebp - 0x20c]
push eax
call edi
mov edi, eax
call esi
test edi, edi
jne 0x403294
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.00412485
mov esp, ebp
pop ebp
ret 4
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.Get_VGA_Bios_Infor
push edi
call ebx
push str.Get_VGA_BiosTweak_Infor
push edi
mov dword [0x465598], eax
call ebx
push 0x28a8
mov esi, eax
push 0
push 0x4664a8
mov dword [0x465594], esi
call fcn.00414e80
mov eax, dword [0x465598]
add esp, 0xc
test eax, eax
je 0x4032e4
push 0x4664a8
call eax
mov esi, dword [0x465594]
add esp, 4
push 0xf08
push 0
push 0x4655a0
call fcn.00414e80
add esp, 0xc
test esi, esi
je 0x403306
push 0x4655a0
call esi
add esp, 4
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00412485
mov esp, ebp
pop ebp
ret 4