Function at 0x403560
Capabilities:
Check if file exists
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x488
mov eax, dword [0x4302ec]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x478]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
mov ecx, dword [ebp - 0x478]
mov edx, dword [ebp - 0x474]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebp - 0x470]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x46c]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
call fcn.00403180
add esp, 0x10
mov ebx, eax
push 0x104
lea eax, [ebp - 0x248]
mov ecx, 7
mov esi, str._bootstat.dat
lea edi, [ebp - 0x20]
push eax
rep movsd dword es:[edi], dword [esi]
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x248]
push 0x104
push edx
call fcn.00419792
add esp, 0xc
lea eax, [ebp - 0x248]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x403696
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
lea ecx, [ebp - 0x248]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x403696
lea edx, [ebp - 0x468]
push edx
lea eax, [ebp - 0x488]
push eax
lea ecx, [ebp - 0x480]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
lea edx, [ebp - 0x460]
push edx
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov ecx, dword [ebp - 0x460]
mov edx, dword [ebp - 0x45c]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebp - 0x458]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x454]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
call fcn.00403180
add esp, 0x10
cmp eax, ebx
jbe 0x40368f
mov ebx, eax
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x104
lea eax, [ebp - 0x450]
mov ecx, 8
mov esi, str.configdefault
lea edi, [ebp - 0x40]
push eax
rep movsd dword es:[edi], dword [esi]
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea ecx, [ebp - 0x40]
push ecx
lea edx, [ebp - 0x450]
push 0x104
push edx
call fcn.00419792
add esp, 0xc
lea eax, [ebp - 0x450]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x403777
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
lea ecx, [ebp - 0x248]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x403777
lea edx, [ebp - 0x468]
push edx
lea eax, [ebp - 0x480]
push eax
lea ecx, [ebp - 0x488]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
lea edx, [ebp - 0x460]
push edx
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov ecx, dword [ebp - 0x460]
mov edx, dword [ebp - 0x45c]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [ebp - 0x458]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x454]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
call fcn.00403180
add esp, 0x10
cmp eax, ebx
jbe 0x403770
mov ebx, eax
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.00402f10
cmp ebx, eax
jae 0x403793
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00418c6f
mov esp, ebp
pop ebp
ret
push ebx
call fcn.00402e20
mov ecx, dword [ebp - 4]
add esp, 4
pop edi
pop esi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.00418c6f
mov esp, ebp
pop ebp
ret