Function at 0x411a20
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43fbb8
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x44db90]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x10], 0
mov eax, dword [eax]
sub eax, 0x10
call fcn.00402210
lea esi, [eax + 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
lea eax, [esi - 0x10]
lea edx, [eax + 0xc]
mov edi, ecx
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x411a8c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test edi, edi
jne 0x411ab4
mov esi, dword [ebp + 0xc]
push esi
mov ecx, str.Error:_Ini_File_Not_Exist
call fcn.004028b0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor ecx, ecx
mov eax, 0x104
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00414c24
mov esi, eax
mov eax, dword [section..data]
mov edx, dword [eax + 0xc]
add esp, 4
mov ecx, section..data
call edx
add eax, 0x10
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
mov dword [ebp - 4], 0
mov eax, dword [eax]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push eax
push 0x104
push esi
push ebx
push ecx
push edx
call edi
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
push eax
push 0x104
push esi
push ebx
push ecx
push edx
call edi
cmp eax, 0x103
jb 0x411baa
mov edi, 0x104
mov ecx, ebx
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x411b5a
test dx, dx
je 0x411b56
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x411b5a
add eax, 4
add ecx, 4
test dx, dx
jne 0x411b34
xor eax, eax
jmp 0x411b5f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x411baa
push esi
call fcn.00429011
add edi, 0x104
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00414c24
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
add esp, 8
mov esi, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push eax
push edi
push esi
push ebx
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [edi - 1]
cmp eax, ecx
jae 0x411b30
test esi, esi
jne 0x411bb2
xor eax, eax
jmp 0x411bc6
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x411bb7
sub eax, edx
sar eax, 1
push esi
lea edx, [ebp - 0x10]
push edx
mov ebx, eax
call fcn.00407380
push esi
call fcn.00429011
mov esi, dword [ebp - 0x10]
add esi, 0xfffffff0
add esp, 4
mov eax, esi
call fcn.00402210
mov edi, dword [ebp + 0xc]
add eax, 0x10
mov dword [edi], eax
mov dword [ebp - 4], 0xffffffff
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411c10
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10