Function at 0x402ab0
Capabilities:
Check if file exists
Print debug messages
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x545792
mov eax, dword fs:[0]
push eax
sub esp, 0x120
mov eax, dword [0x591d64]
xor eax, esp
mov dword [esp + 0x11c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x591d64]
xor eax, esp
push eax
lea eax, [esp + 0x134]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x144]
mov eax, dword [ebp + 0xe8]
mov eax, dword [eax - 0xc]
lea esi, [ebp + 0xe8]
test eax, eax
jne 0x402b4c
push 0x103
push eax
lea ecx, [esp + 0x35]
push ecx
mov byte [esp + 0x38], al
call fcn.00507960
add esp, 0xc
push 0x104
lea edx, [esp + 0x30]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
lea ecx, [esp + 0x2c]
push ecx
push 0x56eb90
push esi
call fcn.0040de30
add esp, 0xc
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402b66
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0x13c], 0
mov ecx, dword [esi]
push ecx
lea edx, [esp + 0x28]
push str._sGameInfoSelfConfig.ini
push edx
call fcn.0040de30
mov ebx, dword [esp + 0x30]
add esp, 0xc
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x402bd3
lea eax, [ebx - 0x10]
mov dword [esp + 0x13c], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402bcc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x403586
push ebx
push 0
push str.btnCount
push str.dlg_config
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp + 0xec], eax
mov eax, dword [ebp + 0xf0]
lea esi, [ebp + 0xf0]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402c1b
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.checkExe
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402c56
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
mov byte [eax + ecx], 0
mov edx, dword [ebp + 0xf4]
cmp dword [edx - 0xc], 0
lea esi, [ebp + 0xf4]
jne 0x402ce2
mov eax, edx
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402ca1
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.mainExe
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402cd2
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
mov byte [eax + ecx], 0
mov eax, dword [ebp + 0xf8]
lea esi, [ebp + 0xf8]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402d11
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.assisExe
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
jne 0x402d40
jmp 0x402d4e
push 0x80070057
call fcn.0040e230
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
mov byte [eax + edx], 0
mov eax, dword [ebp + 0xfc]
cmp dword [eax - 0xc], 0
lea esi, [ebp + 0xfc]
jne 0x402ddc
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402d93
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.param
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402dc8
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
mov byte [eax + ecx], 0
mov eax, dword [ebp + 0x100]
lea esi, [ebp + 0x100]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402e0b
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.assocToGid
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402e40
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
mov byte [eax + edx], 0
mov eax, dword [ebp + 0x104]
lea esi, [ebp + 0x104]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402e83
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.currntVer
push str.game_base
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402eb8
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
push ebx
push 0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
push str.setBits
push str.action_first
mov byte [eax + ecx], 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push ebx
push 0
push str.substFlag
push str.action_first
mov dword [ebp + 0x108], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp + 0x10c], eax
mov eax, dword [ebp + 0x110]
lea esi, [ebp + 0x110]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x402f2d
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.virtualDriveFile
push str.action_first
call edi
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x402f62
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
mov byte [eax + edx], 0
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402f90
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x18], edi
mov byte [esp + 0x13c], 1
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x402fc2
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x13c], 2
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x403000
push 0x104
lea ecx, [esp + 0x1c]
call fcn.0040e0f0
mov edi, dword [esp + 0x18]
push ebx
push 0x104
push edi
push 0x56f8a7
push str.delFileOrDirs
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
cmp eax, dword [edi - 8]
jg 0x402d36
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
mov eax, dword [edi - 0xc]
test eax, eax
je 0x403095
push 0
push 0x56f8a7
lea ecx, [esp + 0x1c]
call fcn.0040e1a0
xor esi, esi
lea ebx, [ebx]
push 0x7c
push esi
push edi
lea ecx, [esp + 0x20]
push ecx
call fcn.004183d5
mov edx, dword [esp + 0x14]
cmp dword [edx - 0xc], 0
je 0x403095
mov eax, dword [ebp + 0x11c]
lea ecx, [ebp + 0x114]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00415ceb
inc esi
cmp esi, 0x32
jl 0x403060
push ebx
push 0
push str.modifyIniOrXmlFlag
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp + 0x128], eax
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4030c8
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x1c], edi
mov byte [esp + 0x13c], 3
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x403106
push 0x104
lea ecx, [esp + 0x20]
call fcn.0040e0f0
mov edi, dword [esp + 0x1c]
push ebx
push 0x104
push edi
push 0x56f8a7
push str.assocGids
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
cmp eax, dword [edi - 8]
jg 0x402d36
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
cmp dword [edi - 0xc], 0
je 0x403195
push 0
push 0x56f8a7
lea ecx, [esp + 0x1c]
call fcn.0040e1a0
xor esi, esi
nop
push 0x7c
push esi
push edi
lea ecx, [esp + 0x20]
push ecx
call fcn.004183d5
mov edx, dword [esp + 0x14]
cmp dword [edx - 0xc], 0
je 0x403195
mov eax, dword [ebp + 0x134]
lea ecx, [ebp + 0x12c]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00415ceb
inc esi
cmp esi, 0x32
jl 0x403160
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4031af
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x20], edi
mov byte [esp + 0x13c], 4
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x4031ed
push 0x104
lea ecx, [esp + 0x24]
call fcn.0040e0f0
mov edi, dword [esp + 0x20]
push ebx
push 0x104
push edi
push 0x56f8a7
push str.regDlls
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
cmp eax, dword [edi - 8]
jg 0x402d36
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
cmp dword [edi - 0xc], 0
je 0x40327b
push 0
push 0x56f8a7
lea ecx, [esp + 0x1c]
call fcn.0040e1a0
xor esi, esi
push 0x7c
push esi
push edi
lea ecx, [esp + 0x20]
push ecx
call fcn.004183d5
mov edx, dword [esp + 0x14]
cmp dword [edx - 0xc], 0
je 0x40327b
mov eax, dword [ebp + 0x148]
lea ecx, [ebp + 0x140]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00415ceb
inc esi
cmp esi, 0x32
jl 0x403246
mov eax, dword [ebp + 0x154]
lea esi, [ebp + 0x154]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x4032aa
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.runFirstExe
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x4032e3
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
mov byte [eax + ecx], 0
mov eax, dword [ebp + 0x158]
lea esi, [ebp + 0x158]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x104
or eax, ecx
jge 0x403326
push 0x104
mov ecx, esi
call fcn.0040e0f0
mov eax, dword [esi]
push ebx
push 0x104
push eax
push 0x56f8a7
push str.runFirstParam
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x40335f
push ecx
push eax
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x402d36
push ebx
push 0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
push str.sleep
push str.action_first
mov byte [eax + edx], 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push ebx
push 0
push str.sleep
push str.action_after
mov dword [ebp + 0x15c], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp + 0x160], eax
call fcn.00415458
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4033bf
push 0x80004005
call fcn.0040e230
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x28], esi
mov byte [esp + 0x13c], 5
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, 0x104
or eax, ecx
jge 0x4033fd
push 0x104
lea ecx, [esp + 0x2c]
call fcn.0040e0f0
mov esi, dword [esp + 0x28]
push ebx
push 0x104
push esi
push 0x56f8a7
push str.killProNames
push str.action_after
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [esi - 8]
push eax
push esi
call fcn.00505327
add esp, 8
test eax, eax
jl 0x402d36
cmp eax, dword [esi - 8]
jg 0x402d36
mov dword [esi - 0xc], eax
mov byte [eax + esi], 0
cmp dword [esi - 0xc], 0
je 0x40348f
push 0
push 0x56f8a7
lea ecx, [esp + 0x1c]
call fcn.0040e1a0
xor edi, edi
push 0x7c
push edi
push esi
lea ecx, [esp + 0x20]
push ecx
call fcn.004183d5
mov edx, dword [esp + 0x14]
cmp dword [edx - 0xc], 0
je 0x40348b
mov eax, dword [ebp + 0x16c]
lea ecx, [ebp + 0x164]
lea edx, [esp + 0x14]
push edx
push eax
call fcn.00415ceb
inc edi
cmp edi, 0x32
jl 0x403456
mov edi, dword [esp + 0x20]
push str.Msg:ConfigValue_init_succeed._n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea eax, [esi - 0x10]
mov byte [esp + 0x13c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4034be
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x13c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4034e2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x13c], 2
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40350a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x13c], 1
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403532
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x13c], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40355a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebx, 0xfffffff0
mov dword [esp + 0x13c], 0xffffffff
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403581
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, 1
mov ecx, dword [esp + 0x134]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x11c]
xor ecx, esp
call fcn.005043e7
add esp, 0x12c
ret 4