Function at 0x10005f25
Capabilities:
Check if file exists
Get common file path
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x5bc]
sub esp, 0x63c
mov eax, dword [0x10052b28]
xor eax, ebp
mov dword [ebp + 0x5b8], eax
mov eax, dword [ebp + 0x5c8]
push ebx
mov ebx, dword [ebp + 0x5c4]
push esi
push edi
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], eax
test ebx, ebx
je 0x10006063
test eax, eax
je 0x10006063
xor ecx, ecx
mov word [eax], cx
mov esi, 0x10044138
lea edi, [ebp + 0x5a8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 6
movsd dword es:[edi], dword [esi]
lea eax, [ebp + 0x5a8]
push eax
push ebx
movsw word es:[edi], word [esi]
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x1000607d
lea eax, [ebx + 0xc]
push eax
push 0x10044108
mov dword [ebp - 0x78], eax
mov esi, 0x208
lea eax, [ebp + 0x198]
push esi
push eax
call fcn.10005553
mov edi, dword [sym.imp.SHLWAPI.dll_SHGetValueW]
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp + 0x3a0]
push eax
lea eax, [ebp - 0x80]
push eax
push 0
lea eax, [ebp + 0x198]
xor ebx, ebx
push eax
inc ebx
push 0x80000000
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], esi
call edi
test eax, eax
jne 0x10006011
lea eax, [ebp + 0x3a0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
test eax, eax
je 0x10006011
lea ecx, [ebp + 0x3a0]
sub eax, ecx
sar eax, 1
push eax
mov eax, ecx
push eax
push dword [ebp - 0x74]
call dword [sym.imp.SHLWAPI.dll_StrCpyNW]
mov eax, ebx
jmp 0x10006065
push dword [ebp - 0x78]
lea eax, [ebp + 0x198]
push 0x100440d8
push esi
push eax
call fcn.10005553
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp + 0x3a0]
push eax
lea eax, [ebp - 0x80]
push eax
push 0
lea eax, [ebp + 0x198]
push eax
push 0x80000000
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], esi
call edi
test eax, eax
jne 0x10006063
lea eax, [ebp + 0x3a0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
test eax, eax
jne 0x10005ff6
xor eax, eax
mov ecx, dword [ebp + 0x5b8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1001a870
add ebp, 0x5bc
leave
ret
mov edi, dword [sym.imp.SHLWAPI.dll_StrCmpIW]
xor esi, esi
push ebx
push dword [esi*8 + 0x100520c8]
call edi
test eax, eax
je 0x100060be
inc esi
cmp esi, 0x16
jb 0x10006085
mov esi, dword [ebp - 0x74]
push 0x100440c8
push ebx
call edi
test eax, eax
jne 0x100060dc
push 0x104
push esi
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryW]
xor ecx, ecx
cmp ecx, eax
sbb eax, eax
neg eax
jmp 0x10006065
push 0
push dword [esi*8 + 0x100520cc]
mov esi, dword [ebp - 0x74]
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x1000609c
xor eax, eax
inc eax
jmp 0x10006065
push 0x100440b8
push ebx
call edi
test eax, eax
jne 0x100060f6
push 0x104
push esi
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
jmp 0x100060b4
push 0x100440a0
push ebx
call edi
test eax, eax
jne 0x10006122
push 0x104
push esi
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryW]
test eax, eax
je 0x10006063
push esi
call dword [sym.imp.SHLWAPI.dll_PathStripToRootW]
jmp 0x10006065
push 0x10044094
push ebx
call edi
test eax, eax
jne 0x1000613f
push esi
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
jmp 0x100060b4
push 0x1004407c
push ebx
call edi
test eax, eax
jne 0x10006165
push 0x10055424
push 0x104
push esi
call fcn.100054b8
neg eax
sbb eax, eax
inc eax
jmp 0x10006065
push 0x10044068
push ebx
call edi
test eax, eax
jne 0x100061ae
cmp dword [0x100549b0], eax
je 0x10006180
push 0x100547a8
jmp 0x10006150
push esi
call fcn.10005813
mov edi, eax
pop ecx
test edi, edi
je 0x100061a7
push esi
push 0x104
push 0x100547a8
call fcn.100054b8
neg eax
sbb eax, eax
inc eax
mov dword [0x100549b0], eax
mov eax, edi
jmp 0x10006065
push 0x10044048
push ebx
call edi
test eax, eax
jne 0x10006243
push 0x206
push eax
mov word [ebp + 0x3a0], ax
lea eax, [ebp + 0x3a2]
push eax
call fcn.1001a410
lea eax, [ebp + 0x3a0]
push eax
call fcn.1000599e
add esp, 0x10
test eax, eax
je 0x10006063
push 0x10044034
lea eax, [ebp + 0x3a0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp + 0x3a0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x10006063
lea eax, [ebp + 0x3a0]
push eax
mov edi, 0x104
push edi
push esi
push 0
push 0x10044020
push 0x10044014
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor ecx, ecx
cmp eax, edi
setne cl
mov eax, ecx
jmp 0x10006065
push 0x10043ff4
push ebx
call edi
test eax, eax
jne 0x1000625b
push esi
call fcn.1000599e
pop ecx
jmp 0x10006065
push 0x10043fe0
push ebx
call edi
test eax, eax
jne 0x10006298
lea eax, [ebp - 0x78]
push eax
push esi
lea eax, [ebp - 0x74]
push eax
push 0x10043fc0
push 0x10043f78
mov dword [ebp - 0x78], 0x208
mov dword [ebp - 0x74], 1
push 0x80000002
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
jmp 0x1000615b
push 0x10043f64
push ebx
call edi
test eax, eax
jne 0x100062b9
lea eax, [ebp - 0x78]
push eax
push esi
lea eax, [ebp - 0x74]
push eax
push 0x10043fc0
push 0x10043f08
jmp 0x1000627a
lea eax, [ebp - 0x7c]
push eax
push dword [ebp - 0x74]
lea eax, [ebp - 0x80]
push eax
push dword [ebp - 0x78]
xor ebx, ebx
push 0x10043e80
inc ebx
mov esi, 0x208
push 0x80000001
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], esi
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
je 0x1000600d
push 0x10043e64
push dword [ebp - 0x78]
call edi
test eax, eax
jne 0x1000631d
push dword [ebp - 0x7c]
push dword [ebp - 0x74]
push 0x10043e44
push 0x10043df0
push 0x80000002
call fcn.10004315
add esp, 0x14
jmp 0x10006065
push 0x10043dd8
push dword [ebp - 0x78]
call edi
test eax, eax
jne 0x10006338
push dword [ebp - 0x7c]
push dword [ebp - 0x74]
push 0x10043db8
jmp 0x10006306
push dword [ebp - 0x78]
lea eax, [ebp - 0x70]
push 0x10043d48
push esi
push eax
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], esi
call fcn.10005553
add esp, 0x10
lea eax, [ebp - 0x7c]
push eax
push dword [ebp - 0x74]
lea eax, [ebp - 0x80]
push eax
push 0x10043bd0
lea eax, [ebp - 0x70]
push eax
jmp 0x10006288