Function at 0x1000d549
Capabilities:
Get common file path
Get program files directory
Query or enumerate registry value

Disassembly:
push 0x258
mov eax, 0x1006a204
call fcn.100417b5
mov eax, dword [0x10092464]
xor ebx, ebx
mov esi, dword [ebp + 8]
inc ebx
mov edi, 0x1009244c
test bl, al
jne 0x1000d606
or eax, ebx
mov dword [0x10092464], eax
and dword [ebp - 4], 0
lea ecx, [ebp - 0x250]
push str.8FA908C0_EAC5_47F9_8074_FFC5EBBEB255
call fcn.10001735
push dword [0x1008f0fc]
lea ecx, [ebp - 0x24c]
mov byte [ebp - 4], bl
call fcn.10001735
lea eax, [ebp - 0x250]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x24c]
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.1003f560
add esp, 0xc
push dword [eax]
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.10001779
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x24c]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x250]
lea ecx, [ecx - 0x10]
call fcn.10002163
push 0x1006e555
call fcn.10041724
or dword [ebp - 4], 0xffffffff
pop ecx
push str.8FA908C0_EAC5_47F9_8074_FFC5EBBEB255
lea ecx, [ebp - 0x24c]
mov dword [ebp - 0x260], ebx
call fcn.10001735
push dword [0x1008f0f8]
lea ecx, [ebp - 0x250]
mov dword [ebp - 4], 4
call fcn.10001735
lea eax, [ebp - 0x24c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x250]
push eax
lea eax, [ebp - 0x25c]
push eax
call fcn.1003f560
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 6
call fcn.10001779
mov ecx, dword [ebp - 0x25c]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x250]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x24c]
mov byte [ebp - 4], 0xa
lea ecx, [ecx - 0x10]
call fcn.10002163
cmp dword [0x10092460], 8
lea eax, [ebp + 0xc]
push eax
cmovae edi, dword [0x1009244c]
lea eax, [ebp - 0x260]
push esi
push eax
push str.Path
push edi
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x1000d6e8
cmp dword [ebp - 0x21c], 8
lea eax, [ebp - 0x230]
cmovae eax, dword [ebp - 0x230]
push eax
push esi
call fcn.1000cfba
pop ecx
pop ecx
test eax, eax
jne 0x1000d831
cmp dword [ebp - 0x21c], 8
lea eax, [ebp - 0x230]
mov edi, 0x10092670
cmovae eax, dword [ebp - 0x230]
push eax
push edi
call fcn.1000cfba
pop ecx
pop ecx
test eax, eax
je 0x1000d724
push edi
push dword [ebp + 0xc]
push esi
call fcn.10005fe2
mov ebx, eax
neg ebx
sbb ebx, ebx
inc ebx
jmp 0x1000d831
push 0
push 0x26
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x1000d82f
push str.8FA908C0_EAC5_47F9_8074_FFC5EBBEB255
lea ecx, [ebp - 0x254]
call fcn.10001735
push str.HzMA_ntrLwNAoqseZHEQ
lea ecx, [ebp - 0x258]
mov byte [ebp - 4], 0xb
call fcn.10001735
lea eax, [ebp - 0x254]
mov byte [ebp - 4], 0xc
push eax
lea eax, [ebp - 0x258]
push eax
lea eax, [ebp - 0x264]
push eax
call fcn.1003f560
add esp, 0xc
push dword [eax]
lea ecx, [ebp - 0x248]
mov byte [ebp - 4], 0xd
call fcn.10001779
mov ecx, dword [ebp - 0x264]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x258]
lea ecx, [ecx - 0x10]
call fcn.10002163
mov ecx, dword [ebp - 0x254]
lea ecx, [ecx - 0x10]
call fcn.10002163
cmp dword [ebp - 0x234], 8
lea eax, [ebp - 0x248]
cmovae eax, dword [ebp - 0x248]
push eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
cmp dword [ebp - 0x21c], 8
lea eax, [ebp - 0x230]
cmovae eax, dword [ebp - 0x230]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.1000cfba
pop ecx
pop ecx
test eax, eax
je 0x1000d824
push edi
push dword [ebp + 0xc]
push esi
call fcn.10005fe2
neg eax
lea ecx, [ebp - 0x248]
sbb ebx, ebx
inc ebx
call fcn.1000231b
jmp 0x1000d831
lea ecx, [ebp - 0x248]
call fcn.1000231b
xor ebx, ebx
lea ecx, [ebp - 0x230]
call fcn.1000231b
mov eax, ebx
call fcn.1004175f
ret