Function at 0x412f90
Capabilities:
Create directory
Get common file path
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf5c
mov eax, dword [0x439030]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xor eax, eax
mov ebx, ecx
push 0x206
push eax
mov word [ebp - 0xa2c], ax
lea eax, [ebp - 0xa2a]
push eax
mov dword [ebp - 0xf5c], ebx
call fcn.0041ba00
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x20c], ax
lea eax, [ebp - 0x20a]
push eax
call fcn.0041ba00
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xf40], ax
lea eax, [ebp - 0xf3e]
push eax
call fcn.0041ba00
add esp, 0x24
lea eax, [ebp - 0x20c]
push 0
push 0x23
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push 0x4318c0
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.0041826c
lea eax, [ebx + 0x1048]
push eax
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.0041826c
push str._Data_
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.0041826c
add esp, 0x24
lea eax, [ebp - 0x20c]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push str.filecache.ini
lea eax, [ebp - 0x20c]
push 0x104
push eax
call fcn.0041826c
mov eax, dword [0x435a20]
movdqu xmm0, xmmword [str.SOFTWARE_]
push 0x1f4
mov dword [ebp - 0x404], eax
lea eax, [ebp - 0x400]
push 0
push eax
movdqu xmmword [ebp - 0x414], xmm0
call fcn.0041ba00
lea eax, [ebx + 0x1254]
push eax
lea eax, [ebp - 0x414]
push 0x104
push eax
call fcn.0041826c
add esp, 0x24
lea eax, [ebp - 0xf54]
push eax
push 0x20219
push 0
lea eax, [ebp - 0x414]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4131a7
push dword [ebp - 0xf54]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call esi
lea eax, [ebp - 0xf54]
mov dword [ebp - 0xf4c], 0x104
push eax
push 0x20219
push 0
lea eax, [ebp - 0x414]
xor bl, bl
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x413195
lea eax, [ebp - 0xf4c]
push eax
lea eax, [ebp - 0xb30]
push eax
lea eax, [ebp - 0xf50]
push eax
push 0
push str.InstallName
push dword [ebp - 0xf54]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0xf54]
test eax, eax
movzx ebx, bl
mov ecx, 1
cmove ebx, ecx
call esi
test bl, bl
je 0x413195
lea eax, [ebp - 0xb30]
push eax
lea eax, [ebp - 0xa2c]
push 0x104
push eax
call fcn.0041814e
mov ebx, dword [ebp - 0xf5c]
jmp 0x4131fd
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041813f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.004183e7
add esp, 8
cmp eax, 0xffffffff
je 0x4131e5
lea eax, [ebp - 0x20c]
push eax
push 0x104
lea eax, [ebp - 0xf40]
push eax
push 0x431c1c
push str.InstallName
push str.config
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0xf40]
push eax
lea eax, [ebp - 0xa2c]
push 0x104
push eax
call fcn.0041814e
add esp, 0xc
xor eax, eax
mov word [ebp - 0x824], ax
push 0x206
push eax
lea eax, [ebp - 0x822]
push eax
call fcn.0041ba00
xor eax, eax
push 0x206
push eax
mov word [ebp - 0xd38], ax
lea eax, [ebp - 0xd36]
push eax
call fcn.0041ba00
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x61c], ax
lea eax, [ebp - 0x61a]
push eax
call fcn.0041ba00
lea eax, [ebp - 0xf58]
mov dword [ebp - 0xf48], 0x5f
push eax
lea eax, [ebp - 0xf48]
mov dword [ebp - 0xf44], 0x2e
push eax
lea eax, [ebp - 0xa2c]
mov dword [ebp - 0xf58], 0
push eax
call fcn.0041872e
add esp, 0x30
xor esi, esi
test eax, eax
je 0x4132d7
cmp esi, 1
jne 0x4132a0
push eax
lea eax, [ebp - 0x824]
jmp 0x4132ac
cmp esi, 2
jne 0x4132ba
push eax
lea eax, [ebp - 0x61c]
push 0x104
push eax
call fcn.0041814e
add esp, 0xc
lea eax, [ebp - 0xf58]
push eax
lea eax, [ebp - 0xf48]
push eax
push 0
call fcn.0041872e
add esp, 0xc
inc esi
test eax, eax
jne 0x413292
lea ecx, [ebp - 0x824]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4132e0
sub ecx, edx
sar ecx, 1
je 0x413195
lea eax, [ebp - 0xf44]
push eax
lea eax, [ebp - 0x61c]
push eax
call fcn.0041849b
add esp, 8
test eax, eax
je 0x413340
lea eax, [ebp - 0xf58]
push eax
lea eax, [ebp - 0xf44]
push eax
lea eax, [ebp - 0x61c]
push eax
call fcn.0041872e
push eax
lea eax, [ebp - 0xd38]
push 0x104
push eax
call fcn.0041814e
add esp, 0x18
jmp 0x41335b
lea eax, [ebp - 0x61c]
push eax
lea eax, [ebp - 0xd38]
push 0x104
push eax
call fcn.0041814e
add esp, 0xc
lea eax, [ebp - 0x824]
push eax
call fcn.00418803
add esp, 4
mov esi, eax
mov ecx, ebx
push esi
call fcn.00412d70
mov ecx, dword [ebp - 4]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041813f
mov esp, ebp
pop ebp
ret