Function at 0x4786e5
Capabilities:
Check if file exists
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x2b0]
sub esp, 0x330
mov eax, dword [0x4f4de0]
xor eax, ebp
mov dword [ebp + 0x2ac], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x7c]
push eax
mov esi, ecx
push esi
lea eax, [ebp - 0x80]
push eax
push str.Path
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_PathsQHSafeMain.exe
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x7c], 0x207
mov dword [ebp - 0x80], 1
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
push esi
push 0x4d7498
lea eax, [esi + 0x208]
push 0x104
push eax
call fcn.00415b00
add esp, 0x10
lea ebx, [esi + 0x618]
mov edi, 0x4d67f4
push edi
mov ecx, ebx
call fcn.00404670
lea ecx, [esi + 0x620]
push edi
call fcn.00404670
lea ecx, [esi + 0x624]
push edi
call fcn.00404670
lea ecx, [esi + 0x62c]
push edi
call fcn.00404670
lea ecx, [esi + 0x630]
push 0x4d8c14
call fcn.00404670
lea ecx, [esi + 0x628]
push edi
call fcn.00404670
push esi
lea ecx, [ebp - 0x78]
call fcn.00404050
push 0x4cd9a0
lea ecx, [ebp - 0x78]
call fcn.00405c60
lea eax, [ebp - 0x78]
push eax
call fcn.00418ad0
pop ecx
push esi
lea ecx, [ebp - 0x74]
call fcn.00404050
lea eax, [ebp - 0x74]
push eax
call fcn.00418af0
pop ecx
mov ecx, dword [ebp - 0x74]
add ecx, 0xfffffff0
call fcn.00404d30
call fcn.00418b20
cmp dword [esi + 0x63c], 1
jne 0x47881c
xor eax, eax
push 0xc6
push eax
mov word [ebp - 0x24], ax
lea eax, [ebp - 0x22]
push eax
call fcn.00497680
add esp, 0xc
push 0x64
lea eax, [ebp - 0x24]
push eax
call fcn.004bb440
test eax, eax
je 0x47881c
lea eax, [ebp - 0x24]
push eax
mov ecx, ebx
call fcn.00404670
lea eax, [esi + 0x61c]
push eax
call fcn.00418bc0
xor eax, eax
mov dword [esp], 0x206
push eax
mov word [ebp + 0xa4], ax
lea eax, [ebp + 0xa6]
push eax
call fcn.00497680
mov ebx, dword [sym.imp.SHLWAPI.dll_PathCombineW]
add esp, 0xc
push str.QHVer.dll
push esi
lea eax, [ebp + 0xa4]
push eax
call ebx
lea eax, [ebp + 0xa4]
push eax
lea eax, [ebp - 0x74]
push eax
call fcn.0046e5a5
pop ecx
pop ecx
push eax
lea ecx, [esi + 0x620]
call fcn.00404570
mov ecx, dword [ebp - 0x74]
add ecx, 0xfffffff0
call fcn.00404d30
lea eax, [ebp + 0xa4]
push eax
lea eax, [ebp - 0x74]
push eax
call fcn.004785ad
pop ecx
pop ecx
push eax
lea ecx, [esi + 0x634]
call fcn.00404570
mov ecx, dword [ebp - 0x74]
add ecx, 0xfffffff0
call fcn.00404d30
xor eax, eax
push 0x206
push eax
mov word [ebp + 0xa4], ax
lea eax, [ebp + 0xa6]
push eax
call fcn.00497680
add esp, 0xc
push 0x4c8cc8
push esi
lea eax, [ebp + 0xa4]
push eax
call ebx
lea eax, [ebp + 0xa4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4789b5
lea eax, [ebp + 0xa4]
push eax
mov ebx, 0x3e8
push ebx
push ebx
lea ecx, [esi + 0x624]
call fcn.00404b90
push eax
push 0x4d7acc
push str.language
push 0x4d9e58
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0xffffffffffffffff
lea ecx, [esi + 0x624]
call fcn.00404c40
lea eax, [ebp + 0xa4]
push eax
push ebx
push ebx
lea ecx, [esi + 0x62c]
call fcn.00404b90
push eax
push edi
push str.channel
push 0x4d9e58
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0xffffffffffffffff
lea ecx, [esi + 0x62c]
call fcn.00404c40
lea eax, [ebp + 0xa4]
push eax
push ebx
push ebx
lea ebx, [esi + 0x630]
mov ecx, ebx
call fcn.00404b90
push eax
push edi
push 0x4cd98c
push 0x4d9e58
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0xffffffffffffffff
mov ecx, ebx
call fcn.00404c40
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
je 0x4789a9
push 0x4cd988
mov ecx, ebx
call fcn.00405640
test eax, eax
jne 0x4789b5
push 0x4d8c14
mov ecx, ebx
call fcn.00404670
push 0x110
xor ebx, ebx
lea eax, [ebp - 0x6c]
push ebx
push eax
xor edi, edi
mov dword [ebp - 0x70], 0x114
call fcn.00497680
push 0x118
lea eax, [ebp + 0x194]
push edi
push eax
mov dword [ebp + 0x190], 0x11c
call fcn.00497680
add esp, 0x18
push edi
lea eax, [ebp + 0x190]
push eax
mov ecx, 0x4fbc50
call fcn.0049305c
test eax, eax
je 0x478a12
mov edi, dword [ebp + 0x194]
mov ebx, dword [ebp + 0x198]
jmp 0x478a26
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x478a26
mov edi, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x68]
push 0x1e
call dword [sym.imp.SHLWAPI.dll_IsOS]
test eax, eax
mov eax, 0x4cd980
jne 0x478a3c
mov eax, 0x4cd978
push eax
push ebx
push edi
lea eax, [esi + 0x628]
push 0x4cd964
push eax
call fcn.004048a0
add esp, 0x14
push esi
lea eax, [esi + 0x410]
push 0x104
xor ecx, ecx
push eax
mov word [eax], cx
call fcn.00407360
call fcn.00418b10
push eax
lea ecx, [esi + 0x640]
call fcn.00415e60
mov ecx, dword [ebp - 0x78]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp + 0x2ac]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00497941
add ebp, 0x2b0
leave
ret