Function at 0x4187f0
Capabilities:
Check if file exists
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48a1ec
mov eax, dword fs:[0]
push eax
sub esp, 0x458
mov eax, dword [0x4b22c8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x44c], 0
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x419271
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x434], eax
mov eax, dword [str.ludashi]
mov dword [ebp - 4], 0
test eax, eax
je 0x41927b
mov esi, dword [ebp + 8]
mov ecx, dword [esi]
nop
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x418886
test dx, dx
je 0x418882
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x418886
add ecx, 4
add eax, 4
test dx, dx
jne 0x418860
xor eax, eax
jmp 0x41888b
sbb eax, eax
or eax, 1
or ebx, 0xffffffff
test eax, eax
jne 0x41889e
push 0xe
push str.ComputerZ_Tray
jmp 0x418aca
push dword [0x4b11a0]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x4188bd
push 0xd
push str.ComputerZLite
jmp 0x418aca
push dword [0x4b11a4]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x418999
push dword [0x4b11c0]
lea ecx, [ebp - 0x438]
call fcn.004033b0
push dword [0x4b11c8]
lea ecx, [ebp - 0x430]
mov byte [ebp - 4], 1
call fcn.004033b0
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x440]
push eax
call fcn.004424e0
add esp, 0xc
mov edx, dword [ebp - 0x430]
mov eax, ebx
mov byte [ebp - 4], 4
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41893c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x438]
mov eax, ebx
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41895d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x440]
push eax
lea ecx, [ebp - 0x434]
call fcn.00404ab0
mov edx, dword [ebp - 0x440]
mov eax, ebx
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418ad5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x418ad5
push dword [0x4b11a8]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x4189b8
push 0xd
push str.LDSGameMaster
jmp 0x418aca
push dword [0x4b11b8]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x4189d7
push 8
push str.QuickSee
jmp 0x418aca
push dword [0x4b11b0]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x4189f6
push 7
push str.MYNovel
jmp 0x418aca
push dword [0x4b11ac]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x418a15
push 0xc
push str.CouponMaster
jmp 0x418aca
push dword [0x4b11b4]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x418ab0
push dword [0x4b11c0]
lea ecx, [ebp - 0x438]
call fcn.004033b0
push dword [0x4b11c4]
lea ecx, [ebp - 0x430]
mov byte [ebp - 4], 6
call fcn.004033b0
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x440]
push eax
call fcn.004424e0
add esp, 0xc
lea ecx, [ebp - 0x430]
call fcn.00404360
lea ecx, [ebp - 0x438]
mov byte [ebp - 4], 0xa
call fcn.00404360
lea eax, [ebp - 0x440]
push eax
lea ecx, [ebp - 0x434]
call fcn.00404ab0
lea ecx, [ebp - 0x440]
mov byte [ebp - 4], 0
call fcn.00404360
jmp 0x418ad5
push dword [0x4b11bc]
push esi
call fcn.00418730
add esp, 8
test al, al
je 0x418ad5
push 0x11
push str.FirePhoenixUpdate
lea ecx, [ebp - 0x434]
call fcn.00409e30
mov ecx, dword [ebp - 0x434]
mov edi, 1
cmp dword [ecx - 0xc], 0
je 0x41922f
push 0x210
lea eax, [ebp - 0x220]
push 0
push eax
call fcn.00460e20
add esp, 0xc
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x419285
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x42c], eax
push 0x490c08
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0xb
call fcn.00407d90
test al, al
jne 0x418b47
push 0x20
push 0x490c08
lea ecx, [ebp - 0x42c]
call fcn.00409e30
mov byte [ebp - 4], 0xc
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x41928f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x43c], eax
push str.YFPjZzCzUlcBlc9vKqAMMD_8NQ6PIq5h4q3LS8RekrjUptV7UMS9Q6NLctHQyjT_hn0WbpC6M53tA5PDpILveg
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], 0xd
call fcn.00407d90
test al, al
jne 0x418b92
push 0x58
push str.YFPjZzCzUlcBlc9vKqAMMD_8NQ6PIq5h4q3LS8RekrjUptV7UMS9Q6NLctHQyjT_hn0WbpC6M53tA5PDpILveg
lea ecx, [ebp - 0x43c]
call fcn.00409e30
lea eax, [ebp - 0x42c]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x43c]
push eax
lea eax, [ebp - 0x444]
push eax
call fcn.004424e0
mov edx, dword [ebp - 0x444]
add esp, 0xc
add edx, 0xfffffff0
mov esi, dword [eax]
mov eax, ebx
mov dword [ebp - 0x448], esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418bd8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x43c]
mov eax, ebx
mov byte [ebp - 4], 0xc
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418bf9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x42c]
mov eax, ebx
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418c1a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x45c], 0
mov dword [ebp - 0x458], 0
mov dword [ebp - 0x454], 0
lea eax, [ebp - 0x430]
mov byte [ebp - 4], 0xf
push eax
push 0x20219
push 0
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x430], 0
call esi
test eax, eax
jne 0x418c72
mov dword [ebp - 0x458], 0x200
jmp 0x418ca9
lea eax, [ebp - 0x430]
mov dword [ebp - 0x430], 0
push eax
push 0x20119
push 0
push dword [ebp - 0x448]
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x41922f
mov dword [ebp - 0x458], 0x100
mov esi, dword [ebp - 0x430]
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x220]
mov dword [ebp - 0x45c], esi
push eax
lea eax, [ebp - 0x444]
mov dword [ebp - 0x43c], esi
push eax
push 0
push str.Path
push esi
mov dword [ebp - 0x430], 0x210
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x418d0e
mov eax, dword [ebp - 0x444]
cmp eax, 1
je 0x418cfc
cmp eax, 2
jne 0x418d0e
cmp dword [ebp - 0x430], 0
jne 0x418d0e
xor eax, eax
mov word [ebp - 0x220], ax
push str.SoftMgr_somextrainfo.ini
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x418d45
test esi, esi
je 0x41922f
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x41922f
lea eax, [ebp - 0x220]
push eax
push 0
push str.ItemType
push dword [ebp - 0x434]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor ecx, ecx
cmp eax, 4
setne cl
mov dword [ebp - 0x42c], ecx
jne 0x418d7d
test esi, esi
je 0x419229
push esi
jmp 0x419223
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x419299
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x440], edi
mov byte [ebp - 4], 0x10
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x4192a3
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x42c], eax
push 0x490868
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0x11
call fcn.00407d90
test al, al
jne 0x418de5
push 1
push 0x490868
lea ecx, [ebp - 0x42c]
call fcn.00409e30
mov esi, dword [ebp - 0x42c]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0x13
mov dword [ebp - 0x438], eax
test ecx, ecx
je 0x418e0a
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x418e20
call fcn.00408700
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4192ad
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x44c], 1
mov dword [ebp - 0x430], eax
mov eax, dword [ebp - 0x434]
push dword [eax - 0xc]
push eax
push dword [esi - 0xc]
lea eax, [ebp - 0x430]
push esi
push eax
call fcn.00407f40
mov eax, dword [ebp - 0x430]
lea edx, [edi - 0x10]
add esp, 0x14
mov dword [ebp - 0x444], edx
lea esi, [eax - 0x10]
cmp esi, edx
je 0x418ec8
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
jl 0x418eb3
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x418eb3
push esi
call fcn.00407ed0
add esp, 4
mov dword [ebp - 0x448], eax
mov ecx, ebx
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x418ea8
mov edi, dword [ebp - 0x444]
push edi
mov ecx, dword [edi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x448]
lea edi, [eax + 0x10]
mov dword [ebp - 0x440], edi
jmp 0x418ec8
push dword [eax - 0xc]
lea ecx, [ebp - 0x440]
push eax
call fcn.00409e30
mov edi, dword [ebp - 0x440]
mov dword [ebp - 0x44c], 0
mov eax, ebx
mov byte [ebp - 4], 0x12
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x418eea
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x438]
mov eax, ebx
mov byte [ebp - 4], 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x418f08
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x220]
push eax
push 0
push str.ItemType
push edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor ecx, ecx
cmp eax, 3
setne cl
mov dword [ebp - 0x42c], ecx
je 0x4191fd
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x4192b7
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x430], esi
mov byte [ebp - 4], 0x14
call fcn.00408700
mov ecx, eax
test ecx, ecx
je 0x4192c1
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x42c], eax
push 0x490868
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0x15
call fcn.00407d90
test al, al
jne 0x418f99
push 1
push 0x490868
lea ecx, [ebp - 0x42c]
call fcn.00409e30
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x17
mov dword [ebp - 0x464], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x418fbd
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x418fd3
call fcn.00408700
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4192cb
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x434]
add eax, 0x10
mov dword [ebp - 0x438], eax
mov eax, dword [ebp - 0x42c]
mov dword [ebp - 0x44c], 2
push dword [ecx - 0xc]
push ecx
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x438]
push eax
call fcn.00407f40
add esp, 0x14
mov eax, dword [ebp - 0x438]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x460], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x419032
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x419048
call fcn.00408700
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4192d5
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x44c], 6
mov dword [ebp - 0x448], eax
mov eax, dword [ebp - 0x438]
push 4
push str.1
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.00407f40
mov eax, dword [ebp - 0x448]
lea ecx, [esi - 0x10]
add esp, 0x14
mov dword [ebp - 0x450], ecx
lea edx, [eax - 0x10]
mov dword [ebp - 0x444], edx
cmp edx, ecx
je 0x4190ff
cmp dword [ecx + 0xc], 0
jl 0x4190e4
mov esi, dword [ebp - 0x450]
mov ecx, dword [edx]
cmp ecx, dword [esi]
jne 0x4190e4
push edx
call fcn.00407ed0
add esp, 4
mov dword [ebp - 0x450], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4190d9
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x450]
lea esi, [eax + 0x10]
mov dword [ebp - 0x430], esi
jmp 0x4190f9
push dword [eax - 0xc]
lea ecx, [ebp - 0x430]
push eax
call fcn.00409e30
mov esi, dword [ebp - 0x430]
mov edx, dword [ebp - 0x444]
mov dword [ebp - 0x44c], 2
mov eax, ebx
mov byte [ebp - 4], 0x17
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x419121
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x460]
mov eax, ebx
mov byte [ebp - 4], 0x16
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41913f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x464]
mov eax, ebx
mov byte [ebp - 4], 0x14
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41915d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x220]
push eax
push 0
push str.ItemType
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor ecx, ecx
cmp eax, 3
setne cl
mov dword [ebp - 0x42c], ecx
jne 0x419187
add esi, 0xfffffff0
jmp 0x4191e5
push 0x208
lea eax, [ebp - 0x428]
push 0
push eax
call fcn.00460e20
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x104
lea eax, [ebp - 0x428]
push eax
push 0x48f62c
push str.items
push str.DisabledTask
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push esi
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
xor ecx, ecx
test eax, eax
sete cl
add esi, 0xfffffff0
mov dword [ebp - 0x42c], ecx
test eax, eax
mov eax, ebx
mov byte [ebp - 4], 0x10
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4191fd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, ebx
mov byte [ebp - 4], 0xf
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x419218
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x43c]
test eax, eax
je 0x419229
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [ebp - 0x42c]
mov eax, dword [ebp - 0x434]
mov dword [ebp - 4], 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x419251
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00446191
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
push 0x80004005
call fcn.00407d70
int3