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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4403f8
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x44fb90]
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.004023d0
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 0x41200c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test edi, edi
jne 0x412034
mov esi, dword [ebp + 0xc]
push esi
mov ecx, str.Error:_Ini_File_Not_Exist
call fcn.00402a70
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.00415364
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 0x41212a
mov edi, 0x104
mov ecx, ebx
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4120da
test dx, dx
je 0x4120d6
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4120da
add eax, 4
add ecx, 4
test dx, dx
jne 0x4120b4
xor eax, eax
jmp 0x4120df
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x41212a
push esi
call fcn.00429751
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.00415364
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 0x4120b0
test esi, esi
jne 0x412132
xor eax, eax
jmp 0x412146
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x412137
sub eax, edx
sar eax, 1
push esi
lea edx, [ebp - 0x10]
push edx
mov ebx, eax
call fcn.00407550
push esi
call fcn.00429751
mov esi, dword [ebp - 0x10]
add esi, 0xfffffff0
add esp, 4
mov eax, esi
call fcn.004023d0
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 0x412190
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