Function at 0x41f4d0
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path
Move file

Disassembly:
push 0xffffffffffffffff
push 0x482e4c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1b0
mov eax, dword [0x4ac588]
push edi
mov edi, dword [esp + 0x1c8]
push edi
mov dword [esp + 0x1b4], eax
call fcn.0041c280
add esp, 4
test al, al
je 0x41f77c
push esi
call fcn.00461fc6
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 8], eax
lea eax, [esp + 8]
push eax
mov dword [esp + 0x1c4], 0
call fcn.0041e600
mov esi, dword [esp + 0xc]
add esp, 4
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x41f553
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push ebp
lea ecx, [esp + 0xb4]
push ecx
push 0
push 0x48d3c0
push esi
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
lea edx, [esp + 0xb4]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [esp + 0xb4]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
jne 0x41f5b3
or ebp, 0xffffffff
lea eax, [esi - 0x10]
mov dword [esp + 0x1c4], ebp
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x41f5ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
xor al, al
jmp 0x41f77a
push str.ini.dat
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.00407d70
add esp, 0xc
mov eax, dword [eax]
push 1
push 0x1b6
push 0xb
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x1d4], 1
call fcn.0041eb20
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
or ebp, 0xffffffff
mov byte [esp + 0x1c4], 3
lea edx, [eax + 0xc]
mov ecx, ebp
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41f60f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
push 2
push 0
lea ecx, [esp + 0x20]
call fcn.0041cca0
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x41f678
lea ecx, [esp + 0x80]
mov byte [esp + 0x1c4], 0
call fcn.0041ec20
lea ecx, [esp + 0x80]
mov dword [esp + 0x80], 0x48d12c
call fcn.0045cc0d
lea eax, [esi - 0x10]
mov dword [esp + 0x1c4], ebp
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x41f5ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
xor al, al
jmp 0x41f77a
lea eax, [esp + 0x10]
push eax
call fcn.0041ed30
add esp, 4
mov eax, dword [eax]
mov edx, dword [esp + 0x1cc]
push 0x488bf8
lea ecx, [esp + 0xb8]
push ecx
push 0x48d378
push eax
push 0x48d378
push edi
push 0x48d378
push edx
lea eax, [esp + 0x40]
push eax
mov byte [esp + 0x1e8], 4
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
add esp, 8
push eax
call fcn.0041d8d0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
add esp, 8
mov byte [esp + 0x1c4], 3
lea ecx, [eax + 0xc]
mov edx, ebp
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41f726
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea ecx, [esp + 0x18]
call fcn.0041e510
lea ecx, [esp + 0x80]
mov byte [esp + 0x1c4], 0
call fcn.0041ec20
lea ecx, [esp + 0x80]
mov dword [esp + 0x80], 0x48d12c
call fcn.0045cc0d
lea eax, [esi - 0x10]
mov dword [esp + 0x1c4], ebp
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebp
dec ebp
test ebp, ebp
jg 0x41f778
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov al, 1
pop ebp
pop esi
mov ecx, dword [esp + 0x1b4]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x1b0]
pop edi
call fcn.0044af18
add esp, 0x1bc
ret