Function at 0x404590
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
sub esp, 0x424
mov eax, dword [0x5a8cf0]
xor eax, esp
mov dword [esp + 0x420], eax
push ebx
push edi
xor ebx, ebx
push 0x208
lea eax, [esp + 0x16]
push ebx
push eax
mov word [esp + 0x1c], bx
call fcn.00516810
push 0x208
lea ecx, [esp + 0x22e]
push ebx
push ecx
mov word [esp + 0x234], bx
call fcn.00516810
lea edx, [esp + 0x28]
push 0x104
push edx
lea edi, [ebx + 0x10]
call fcn.00402520
add esp, 0x20
test eax, eax
je 0x4047a7
push esi
lea eax, [esp + 0xc]
push eax
push 0x20019
push ebx
push 0x552010
push reloc.OLEAUT32.dll_SysReAllocString
xor esi, esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
lea edx, [esp + 0x14]
jne 0x4046e3
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x10]
push ecx
push edx
push ebx
push ebx
push str.InstallDir
push eax
mov dword [esp + 0x28], 0x20a
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x404646
lea esi, [ebx + 1]
mov ecx, dword [esp + 0xc]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp esi, ebx
je 0x4047f3
push ebp
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x228]
push 0x105
push edx
call fcn.00516b48
push str.QTOControl.dll
lea eax, [esp + 0x28]
push 0x105
push eax
call fcn.00516c7d
push str.QTOLibrary.dll
lea ecx, [esp + 0x240]
push 0x105
push ecx
call fcn.00516c7d
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x24
lea edx, [esp + 0x224]
push edx
call esi
mov ebp, eax
lea eax, [esp + 0x18]
push eax
call esi
test eax, ebp
je 0x4047ef
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
jne 0x40470d
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
mov ebx, eax
jmp 0x40473d
push 0x105
push edx
call fcn.004977c0
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x4047f3
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
jmp 0x404659
push 0x551fa4
push esi
call edi
cmp eax, ebx
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x404725
call ebp
mov ebx, eax
jmp 0x404736
call eax
mov ebx, eax
test ebx, ebx
jne 0x404736
lea ecx, [esp + 0x18]
call fcn.00403450
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x224]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
jne 0x404757
call ebp
mov edi, eax
jmp 0x404784
push 0x551fa4
push esi
call edi
test eax, eax
jne 0x404769
call ebp
mov edi, eax
jmp 0x40477d
call eax
mov edi, eax
test edi, edi
jne 0x40477d
lea ecx, [esp + 0x224]
call fcn.00403450
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test ebx, ebx
jne 0x4047e8
test edi, edi
jne 0x4047e8
xor eax, eax
pop ebp
pop esi
pop edi
pop ebx
mov ecx, dword [esp + 0x420]
xor ecx, esp
call fcn.0051674d
add esp, 0x424
ret
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4047cf
pop edi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x420]
xor ecx, esp
call fcn.0051674d
add esp, 0x424
ret
mov eax, edi
pop edi
pop ebx
mov ecx, dword [esp + 0x420]
xor ecx, esp
call fcn.0051674d
add esp, 0x424
ret
mov eax, 0x10
jmp 0x40478e
mov eax, edi
jmp 0x40478e
mov ecx, dword [esp + 0x42c]
pop esi
mov eax, edi
pop edi
pop ebx
xor ecx, esp
call fcn.0051674d
add esp, 0x424
ret