Function at 0x500b5e
Capabilities:
Get common file path
Read .ini file

Disassembly:
mov eax, 0x56e91e
call fcn.0053c1d0
sub esp, 0x35c
mov eax, dword [0x5af710]
push ebx
push esi
mov esi, dword [ebp + 8]
xor eax, ebp
push edi
mov edi, dword [ebp + 0xc]
xor ebx, ebx
cmp esi, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x348], ecx
mov dword [ebp - 0x364], edi
jne 0x500b9a
xor eax, eax
jmp 0x500e81
push str.regkey
mov ecx, esi
mov dword [ebp - 0x34c], ebx
call fcn.00502474
push eax
lea ecx, [ebp - 0x350]
call fcn.004071e0
push str.regkeyname
mov ecx, esi
mov dword [ebp - 4], ebx
call fcn.00502474
push eax
lea ecx, [ebp - 0x354]
call fcn.004071e0
push str.regkeydatatype
mov ecx, esi
mov byte [ebp - 4], 1
call fcn.00502474
push eax
lea ecx, [ebp - 0x35c]
call fcn.004071e0
push str.regkeyvalue
mov ecx, esi
mov byte [ebp - 4], 2
call fcn.00502474
push eax
lea ecx, [ebp - 0x340]
call fcn.004071e0
mov esi, 0x572aed
push esi
lea ecx, [ebp - 0x344]
mov byte [ebp - 4], 3
call fcn.004071e0
lea eax, [ebp - 0x344]
push eax
push ecx
lea eax, [ebp - 0x35c]
mov dword [ebp - 0x358], esp
mov ecx, esp
push eax
mov byte [ebp - 4], 4
call fcn.0040b190
push ecx
lea eax, [ebp - 0x354]
mov dword [ebp - 0x360], esp
mov ecx, esp
push eax
mov byte [ebp - 4], 5
call fcn.0040b190
push ecx
lea eax, [ebp - 0x350]
mov dword [ebp - 0x368], esp
mov ecx, esp
push eax
mov byte [ebp - 4], 6
call fcn.0040b190
mov ecx, dword [ebp - 0x348]
mov byte [ebp - 4], 4
call fcn.00500307
cmp eax, ebx
je 0x500d8f
mov eax, dword [ebp - 0x340]
cmp dword [eax - 0xc], ebx
mov dword [ebp - 0x34c], 1
jne 0x500cb1
lea eax, [ebp - 0x344]
push eax
mov ecx, edi
call fcn.0040b4e0
jmp 0x500e35
push ebx
mov edi, str._install_
push edi
lea ecx, [ebp - 0x340]
call fcn.00429be2
push eax
lea eax, [ebp - 0x360]
push eax
lea ecx, [ebp - 0x340]
call fcn.00418d7f
mov eax, dword [ebp - 0x340]
mov esi, dword [eax - 0xc]
push ebx
push edi
lea ecx, [ebp - 0x340]
mov byte [ebp - 4], 7
call fcn.00429be2
sub esi, eax
sub esi, 9
push esi
lea eax, [ebp - 0x348]
push eax
lea ecx, [ebp - 0x340]
call fcn.00418d32
mov edi, dword [ebp - 0x360]
push ebx
push edi
lea ecx, [ebp - 0x344]
mov byte [ebp - 4], 8
call fcn.00429be2
push ebx
push dword [ebp - 0x348]
lea ecx, [ebp - 0x344]
mov esi, eax
call fcn.00429be2
cmp esi, ebx
jl 0x500d74
cmp eax, ebx
jle 0x500d74
sub eax, esi
dec eax
dec eax
push eax
add esi, 2
push esi
lea eax, [ebp - 0x358]
push eax
lea ecx, [ebp - 0x344]
call fcn.00418cc9
mov ecx, dword [ebp - 0x364]
push eax
mov byte [ebp - 4], 9
call fcn.0040b4e0
mov ecx, dword [ebp - 0x358]
add ecx, 0xfffffff0
call fcn.00401250
mov ecx, dword [ebp - 0x348]
add ecx, 0xfffffff0
call fcn.00401250
lea ecx, [edi - 0x10]
call fcn.00401250
jmp 0x500e35
push str._system_xysetup.ini
push dword [ebp - 0x350]
call fcn.0053e16c
test eax, eax
pop ecx
pop ecx
jne 0x500e35
push 0x12c
lea eax, [ebp - 0x13c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp - 0x13c]
push str.xysetup.ini
push eax
call fcn.0053c4c0
mov edi, 0x200
push edi
lea eax, [ebp - 0x33c]
push ebx
push eax
call fcn.0053c340
add esp, 0x14
lea eax, [ebp - 0x13c]
push eax
push edi
lea eax, [ebp - 0x33c]
push eax
push esi
push str.path
push str.setup
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x33c]
push eax
call fcn.0053be00
test eax, eax
pop ecx
je 0x500e35
mov ecx, dword [ebp - 0x348]
lea eax, [ebp - 0x33c]
push eax
add ecx, 0x8c
call fcn.00404600
mov dword [ebp - 0x34c], 1
mov ecx, dword [ebp - 0x344]
add ecx, 0xfffffff0
call fcn.00401250
mov ecx, dword [ebp - 0x340]
add ecx, 0xfffffff0
call fcn.00401250
mov ecx, dword [ebp - 0x35c]
add ecx, 0xfffffff0
call fcn.00401250
mov ecx, dword [ebp - 0x354]
add ecx, 0xfffffff0
call fcn.00401250
mov ecx, dword [ebp - 0x350]
add ecx, 0xfffffff0
call fcn.00401250
mov eax, dword [ebp - 0x34c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0053aaae
leave
ret 8