Function at 0x40dbc0
Capabilities:
Check if file exists
Query or enumerate registry value
Read .ini file
Set current directory

Disassembly:
sub esp, 0x17c
mov eax, dword [0x452504]
push ebx
mov ebx, dword [esp + 0x184]
mov dword [esp + 0x17c], eax
lea eax, [ebx + 0x2a18]
push esi
mov esi, ecx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40dbe6
sub eax, edx
mov dword [esp + 0x14], eax
jne 0x40dc22
push 0
push 0xaf
push 0x60002
call fcn.0041a7d0
add esp, 0xc
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x178]
call fcn.00435083
add esp, 0x17c
ret 0xc
push ebp
push edi
mov edi, dword [esp + 0x194]
lea eax, [edi + 0x40a]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ebp, [ebx + 0x200e]
mov eax, ebp
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40dc47
sub eax, edx
cmp eax, 3
je 0x40dc84
push 0
push 0xb0
push 0x60003
call fcn.0041a7d0
add esp, 0xc
xor eax, eax
mov ecx, dword [esp + 0x188]
pop edi
pop ebp
pop esi
pop ebx
call fcn.00435083
add esp, 0x17c
ret 0xc
add edi, 0x100
push edi
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x8c]
push str._sFCVR
push eax
call edi
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
push 1
push 0
lea edx, [esp + 0x94]
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x40dd03
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
lea edx, [esp + 0xa4]
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x40dd03
push 0x13000e
call fcn.0041a6e0
add esp, 4
jmp 0x40dc69
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x18]
push ecx
push 0
push 0
push ebp
push edx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x34], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x40dd39
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x10]
xor eax, eax
push ebp
push ecx
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], eax
lea eax, [esi + 0x22e]
push str._sSkinsSteal_ttl_s.bmp
push eax
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [ebx + 0x4270]
add esp, 0x10
cmp edx, eax
jne 0x40dd96
lea eax, [esi + 0x22e]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40ddd9
push ebp
lea eax, [esp + 0x28]
push str.ttl_s.bmp
push eax
call edi
mov ecx, dword [esp + 0x1a4]
mov edx, dword [ecx + 4]
add esp, 0xc
test edx, edx
je 0x40ddd9
mov eax, dword [ecx + 8]
sub eax, edx
sar eax, 2
test eax, eax
jbe 0x40ddd9
push 0
push 0
lea edx, [esp + 0x2c]
push edx
call fcn.004302c0
test eax, eax
jne 0x40ddd9
mov dword [esi + 8], 1
mov ecx, dword [esp + 0x10]
push ebp
push ecx
lea eax, [esi + 0x438]
push str._sImages_s.ico
push eax
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [ebx + 0x4270]
add esp, 0x10
cmp edx, eax
jne 0x40de0f
lea eax, [esi + 0x438]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40de52
push ebp
lea eax, [esp + 0x28]
push str._s.ico
push eax
call edi
mov ecx, dword [esp + 0x1a4]
mov edx, dword [ecx + 4]
add esp, 0xc
test edx, edx
je 0x40de52
mov eax, dword [ecx + 8]
sub eax, edx
sar eax, 2
test eax, eax
jbe 0x40de52
push 0
push 0
lea edx, [esp + 0x2c]
push edx
call fcn.004302c0
test eax, eax
jne 0x40de52
mov dword [esi + 0x10], 1
lea eax, [ebx + 0x424e]
push 0x447764
push eax
call fcn.0043bc84
add esp, 8
test eax, eax
lea eax, [ebx + 0x2003]
jne 0x40de83
push eax
call fcn.00442c1a
push eax
mov eax, dword [esp + 0x18]
push eax
push str._s_shgc.hsp
jmp 0x40de98
push ebp
push eax
call fcn.00442c1a
mov ecx, dword [esp + 0x18]
add esp, 4
push eax
push ecx
push str._s_s_s.hsp
lea eax, [esi + 0x642]
push eax
call edi
mov edx, dword [esp + 0x24]
add esp, 0x14
push ebp
push edx
lea eax, [esi + 0x747]
push str._sitem_s.cfg
push eax
call edi
lea eax, [ebx + 0x2112]
push eax
mov eax, dword [esp + 0x24]
push eax
lea ecx, [esi + 0x84c]
push str._s_s.cfg
push ecx
call edi
push ebp
lea eax, [ebx + 0x2a18]
push eax
lea ecx, [esi + 0x1953]
push str._s_ttl_s.bmp
push ecx
call edi
push ebp
lea eax, [ebx + 0x2a18]
push eax
lea edx, [esi + 0x2955]
push str._s__s.ico
push edx
call edi
add esp, 0x40
lea eax, [ebx + 0x424e]
push 0x447764
push eax
call fcn.0043bc84
add esp, 8
test eax, eax
lea eax, [ebx + 0x2003]
jne 0x40df3b
push eax
call fcn.00442c1a
push eax
lea eax, [ebx + 0x2a18]
push eax
push str._s__shgc.hsp
lea eax, [esi + 0x3957]
push eax
jmp 0x40df59
push ebp
push eax
call fcn.00442c1a
add esp, 4
push eax
lea eax, [ebx + 0x2a18]
push eax
push str._s__s_s.hsp
lea ecx, [esi + 0x3957]
push ecx
call edi
add esp, 0x14
push ebp
lea ebp, [ebx + 0x2a18]
push ebp
lea edx, [esi + 0x4158]
push str._s_item_s.cfg
push edx
call edi
lea eax, [ebx + 0x2112]
push eax
push ebp
lea eax, [esi + 0x4959]
push str._s__s.cfg
push eax
call edi
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
add esp, 0x20
lea eax, [esi + 0x642]
push eax
push 0
push str.Version
push str.Version
call edi
cmp dword [ebx + 0x426c], eax
mov ebp, 1
jbe 0x40dfb8
mov dword [esi + 0x18], ebp
lea eax, [esi + 0x747]
push eax
push 0
push str.Version
push str.Version
call edi
cmp dword [ebx + 0x4274], eax
jbe 0x40dfd8
mov dword [esi + 0x1c], ebp
lea eax, [esi + 0x84c]
push eax
push 0
push str.Version
push str.Version
call edi
cmp dword [ebx + 0x4278], eax
jbe 0x40dff8
mov dword [esi + 0x20], ebp
cmp dword [esi], 0
jne 0x40dc69
mov eax, dword [esi + 4]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 8]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0xc]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0x18]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0x1c]
test eax, eax
jne 0x40dc69
mov eax, dword [esi + 0x20]
test eax, eax
jne 0x40dc69
mov eax, ebp
jmp 0x40dc6b