Function at 0x403610
Capabilities:
Check if file exists
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4af587
mov eax, dword fs:[0]
push eax
sub esp, 0x90c
mov eax, dword [0x4e5114]
xor eax, ebp
mov dword [ebp - 0x10], eax
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x8ac], ecx
push 0x208
push 0
lea eax, [ebp - 0x420]
push eax
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0x218]
push ecx
call fcn.0048e340
add esp, 0xc
push 0x4cf838
lea ecx, [ebp - 0x848]
call fcn.004020b0
mov dword [ebp - 4], 0
push 0x4cf83c
lea ecx, [ebp - 0x860]
call fcn.004020b0
mov byte [ebp - 4], 1
push 0x4cf840
lea ecx, [ebp - 0x878]
call fcn.004020b0
mov byte [ebp - 4], 2
push 0x4cf844
lea ecx, [ebp - 0x890]
call fcn.004020b0
mov byte [ebp - 4], 3
mov dword [ebp - 0x8b0], 0
push 0
push 0x2b
lea edx, [ebp - 0x420]
push edx
push 0
call fcn.0040e440
add esp, 0x10
lea eax, [ebp - 0x420]
add eax, 0xfffffffe
mov dword [ebp - 0x8d8], eax
mov ecx, dword [ebp - 0x8d8]
mov dx, word [ecx + 2]
mov word [ebp - 0x8de], dx
add dword [ebp - 0x8d8], 2
cmp word [ebp - 0x8de], 0
jne 0x4036ef
mov edi, dword [ebp - 0x8d8]
mov eax, dword [0x4cf848]
mov dword [edi], eax
lea ecx, [ebp - 0x420]
add ecx, 0xfffffffe
mov dword [ebp - 0x8d4], ecx
mov edx, dword [ebp - 0x8d4]
mov ax, word [edx + 2]
mov word [ebp - 0x8e0], ax
add dword [ebp - 0x8d4], 2
cmp word [ebp - 0x8e0], 0
jne 0x40372d
mov edi, dword [ebp - 0x8d4]
mov ecx, dword [0x4cf84c]
mov dword [edi], ecx
mov edx, dword [0x4cf850]
mov dword [edi + 4], edx
mov eax, dword [0x4cf854]
mov dword [edi + 8], eax
mov ecx, dword [0x4cf858]
mov dword [edi + 0xc], ecx
mov dx, word [0x4cf85c]
mov word [edi + 0x10], dx
lea eax, [ebp - 0x420]
add eax, 0xfffffffe
mov dword [ebp - 0x8d0], eax
mov ecx, dword [ebp - 0x8d0]
mov dx, word [ecx + 2]
mov word [ebp - 0x8e2], dx
add dword [ebp - 0x8d0], 2
cmp word [ebp - 0x8e2], 0
jne 0x403791
mov edi, dword [ebp - 0x8d0]
mov eax, dword [0x4cf860]
mov dword [edi], eax
lea ecx, [ebp - 0x420]
add ecx, 0xfffffffe
mov dword [ebp - 0x8cc], ecx
mov edx, dword [ebp - 0x8cc]
mov ax, word [edx + 2]
mov word [ebp - 0x8e4], ax
add dword [ebp - 0x8cc], 2
cmp word [ebp - 0x8e4], 0
jne 0x4037cf
mov edi, dword [ebp - 0x8cc]
mov ecx, dword [0x4cf864]
mov dword [edi], ecx
mov edx, dword [0x4cf868]
mov dword [edi + 4], edx
mov eax, dword [0x4cf86c]
mov dword [edi + 8], eax
mov ecx, dword [0x4cf870]
mov dword [edi + 0xc], ecx
mov dx, word [0x4cf874]
mov word [edi + 0x10], dx
lea eax, [ebp - 0x420]
add eax, 0xfffffffe
mov dword [ebp - 0x8dc], eax
mov ecx, dword [ebp - 0x8dc]
mov dx, word [ecx + 2]
mov word [ebp - 0x8e6], dx
add dword [ebp - 0x8dc], 2
cmp word [ebp - 0x8e6], 0
jne 0x403833
mov edi, dword [ebp - 0x8dc]
mov eax, dword [0x4cf878]
mov dword [edi], eax
mov ecx, dword [0x4cf87c]
mov dword [edi + 4], ecx
mov dx, word [0x4cf880]
mov word [edi + 8], dx
lea eax, [ebp - 0x420]
push eax
push 0x104
lea ecx, [ebp - 0x218]
push ecx
push 0x4cf884
push 0x4cf888
push 0x4cf898
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0x218]
mov dword [ebp - 0x8b4], edx
mov eax, dword [ebp - 0x8b4]
add eax, 2
mov dword [ebp - 0x8f8], eax
mov ecx, dword [ebp - 0x8b4]
mov dx, word [ecx]
mov word [ebp - 0x8f4], dx
add dword [ebp - 0x8b4], 2
cmp word [ebp - 0x8f4], 0
jne 0x4038b9
mov eax, dword [ebp - 0x8b4]
sub eax, dword [ebp - 0x8f8]
sar eax, 1
mov dword [ebp - 0x8fc], eax
mov ecx, dword [ebp - 0x8fc]
mov dword [ebp - 0x8b0], ecx
cmp dword [ebp - 0x8b0], 0
jle 0x40399f
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40399f
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x848]
call fcn.00406c60
lea ecx, [ebp - 0x218]
push ecx
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x10
call fcn.00406c60
mov edx, dword [ebp - 0x8ac]
mov byte [edx + 7], 1
mov eax, dword [ebp - 0x8ac]
movzx ecx, byte [eax + 8]
test ecx, ecx
jne 0x40399f
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x890]
call fcn.004022e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x878]
call fcn.004022e0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x860]
call fcn.004022e0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x848]
call fcn.004022e0
jmp 0x403f48
push 0x208
push 0
lea edx, [ebp - 0x628]
push edx
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x830]
push eax
call fcn.0048e340
add esp, 0xc
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x58
call fcn.00405d30
movzx ecx, al
test ecx, ecx
je 0x403a15
push 0x104
lea edx, [ebp - 0x830]
push edx
mov eax, dword [ebp - 0x8ac]
mov ecx, dword [eax + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x5c
lea edx, [ebp - 0x830]
push edx
call fcn.00406c40
add esp, 8
xor ecx, ecx
mov word [eax + 2], cx
jmp 0x403a89
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x58
call fcn.00401c90
mov dword [ebp - 0x8ec], eax
lea edx, [ebp - 0x830]
mov dword [ebp - 0x8c8], edx
mov eax, dword [ebp - 0x8c8]
mov dword [ebp - 0x918], eax
mov ecx, dword [ebp - 0x8ec]
mov dx, word [ecx]
mov word [ebp - 0x8c2], dx
mov eax, dword [ebp - 0x8c8]
mov cx, word [ebp - 0x8c2]
mov word [eax], cx
mov edx, dword [ebp - 0x8ec]
add edx, 2
mov dword [ebp - 0x8ec], edx
mov eax, dword [ebp - 0x8c8]
add eax, 2
mov dword [ebp - 0x8c8], eax
cmp word [ebp - 0x8c2], 0
jne 0x403a41
push 0x4cf8ac
lea ecx, [ebp - 0x830]
push ecx
push 0x4cf8c8
lea edx, [ebp - 0x628]
push edx
call fcn.00401b30
add esp, 0x10
lea eax, [ebp - 0x628]
push eax
push 0x104
lea ecx, [ebp - 0x218]
push ecx
push 0x4cf8d4
push 0x4cf8d8
push 0x4cf8e8
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0x218]
mov dword [ebp - 0x8b8], edx
mov eax, dword [ebp - 0x8b8]
add eax, 2
mov dword [ebp - 0x900], eax
mov ecx, dword [ebp - 0x8b8]
mov dx, word [ecx]
mov word [ebp - 0x8f2], dx
add dword [ebp - 0x8b8], 2
cmp word [ebp - 0x8f2], 0
jne 0x403aec
mov eax, dword [ebp - 0x8b8]
sub eax, dword [ebp - 0x900]
sar eax, 1
mov dword [ebp - 0x904], eax
mov ecx, dword [ebp - 0x904]
mov dword [ebp - 0x8b0], ecx
cmp dword [ebp - 0x8b0], 0
jle 0x403bd2
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x403bd2
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x860]
call fcn.00406c60
lea ecx, [ebp - 0x218]
push ecx
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x10
call fcn.00406c60
mov edx, dword [ebp - 0x8ac]
mov byte [edx + 7], 1
mov eax, dword [ebp - 0x8ac]
movzx ecx, byte [eax + 8]
test ecx, ecx
jne 0x403bd2
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x890]
call fcn.004022e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x878]
call fcn.004022e0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x860]
call fcn.004022e0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x848]
call fcn.004022e0
jmp 0x403f48
push 0x4cf8f8
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x70
call fcn.00401c90
push eax
push 0x4cf914
lea edx, [ebp - 0x628]
push edx
call fcn.00401b30
add esp, 0x10
lea eax, [ebp - 0x628]
push eax
push 0x104
lea ecx, [ebp - 0x218]
push ecx
push 0x4cf920
push 0x4cf924
push 0x4cf934
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0x218]
mov dword [ebp - 0x8bc], edx
mov eax, dword [ebp - 0x8bc]
add eax, 2
mov dword [ebp - 0x908], eax
mov ecx, dword [ebp - 0x8bc]
mov dx, word [ecx]
mov word [ebp - 0x8f0], dx
add dword [ebp - 0x8bc], 2
cmp word [ebp - 0x8f0], 0
jne 0x403c3d
mov eax, dword [ebp - 0x8bc]
sub eax, dword [ebp - 0x908]
sar eax, 1
mov dword [ebp - 0x90c], eax
mov ecx, dword [ebp - 0x90c]
mov dword [ebp - 0x8b0], ecx
cmp dword [ebp - 0x8b0], 0
jle 0x403d23
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x403d23
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x878]
call fcn.00406c60
lea ecx, [ebp - 0x218]
push ecx
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x10
call fcn.00406c60
mov edx, dword [ebp - 0x8ac]
mov byte [edx + 7], 1
mov eax, dword [ebp - 0x8ac]
movzx ecx, byte [eax + 8]
test ecx, ecx
jne 0x403d23
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x890]
call fcn.004022e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x878]
call fcn.004022e0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x860]
call fcn.004022e0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x848]
call fcn.004022e0
jmp 0x403f48
push 0x4cf944
push 0x4cf948
push 0x4cf958
lea edx, [ebp - 0x8a8]
push edx
mov ecx, dword [ebp - 0x8ac]
call fcn.004058d0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x8a8]
call fcn.00401c90
mov dword [ebp - 0x8c0], eax
mov eax, dword [ebp - 0x8c0]
add eax, 2
mov dword [ebp - 0x910], eax
mov ecx, dword [ebp - 0x8c0]
mov dx, word [ecx]
mov word [ebp - 0x8ee], dx
add dword [ebp - 0x8c0], 2
cmp word [ebp - 0x8ee], 0
jne 0x403d68
mov eax, dword [ebp - 0x8c0]
sub eax, dword [ebp - 0x910]
sar eax, 1
mov dword [ebp - 0x914], eax
mov ecx, dword [ebp - 0x914]
mov dword [ebp - 0x8b0], ecx
cmp dword [ebp - 0x8b0], 0
jle 0x403e62
lea ecx, [ebp - 0x8a8]
call fcn.00401c90
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x403e62
lea edx, [ebp - 0x8a8]
push edx
lea ecx, [ebp - 0x890]
call fcn.00405e10
lea eax, [ebp - 0x8a8]
push eax
mov ecx, dword [ebp - 0x8ac]
add ecx, 0x10
call fcn.00405e10
mov ecx, dword [ebp - 0x8ac]
mov byte [ecx + 7], 1
mov edx, dword [ebp - 0x8ac]
movzx eax, byte [edx + 8]
test eax, eax
jne 0x403e62
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x8a8]
call fcn.004022e0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x890]
call fcn.004022e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x878]
call fcn.004022e0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x860]
call fcn.004022e0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x848]
call fcn.004022e0
jmp 0x403f48
mov ecx, dword [ebp - 0x8ac]
movzx edx, byte [ecx + 8]
test edx, edx
je 0x403efa
mov eax, dword [ebp - 0x8ac]
movzx ecx, byte [eax + 7]
test ecx, ecx
je 0x403efa
lea edx, [ebp - 0x860]
push edx
lea eax, [ebp - 0x848]
push eax
call fcn.00406030
add esp, 8
movzx ecx, al
test ecx, ecx
je 0x403ea9
mov edx, dword [ebp - 0x8ac]
mov byte [edx + 9], 1
lea eax, [ebp - 0x878]
push eax
lea ecx, [ebp - 0x848]
push ecx
call fcn.00406030
add esp, 8
movzx edx, al
test edx, edx
je 0x403ed0
mov eax, dword [ebp - 0x8ac]
mov byte [eax + 9], 1
lea ecx, [ebp - 0x890]
push ecx
lea edx, [ebp - 0x848]
push edx
call fcn.00406030
add esp, 8
movzx eax, al
test eax, eax
je 0x403efa
push 1
lea ecx, [ebp - 0x848]
call fcn.00405da0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x8a8]
call fcn.004022e0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x890]
call fcn.004022e0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x878]
call fcn.004022e0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x860]
call fcn.004022e0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x848]
call fcn.004022e0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048b588
mov esp, ebp
pop ebp
ret