Function at 0x41f800
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Get common file path
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
xor ecx, ecx
push ebx
push esi
cmp eax, ecx
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 4], ecx
je 0x41f832
mov ecx, dword [eax + 8]
mov edx, dword [eax]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 4], eax
mov esi, dword [ebp + 8]
push esi
call fcn.004026b0
add esp, 4
test eax, eax
je 0x41fc4c
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x11b]
mov byte [ebp - 0x11c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [ebp - 0x11c]
push ecx
push 0x104
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea edx, [ebp - 0x11c]
push 0x44a76c
push edx
call edi
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
lea eax, [ebp - 0x11c]
push eax
call ebx
test eax, eax
jne 0x41f8a6
lea ecx, [ebp - 0x11c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea edx, [ebp - 0x11c]
push edx
call ebx
test eax, eax
jne 0x41f8c2
lea esp, [ebp - 0x128]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push esi
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameA]
xor ebx, ebx
cmp eax, ebx
jne 0x41f8e0
xor eax, eax
lea esp, [ebp - 0x128]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push eax
lea eax, [ebp - 0x11c]
push eax
call edi
lea ecx, [ebp - 0x11c]
push 0x80
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea edx, [ebp - 0x11c]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x11c]
push 1
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x41f92c
lea esp, [ebp - 0x128]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 0x18]
lea esi, [ecx + 0x58c]
mov ecx, dword [ecx + 0x590]
cmp ecx, ebx
jne 0x41f944
mov dword [ebp - 8], ebx
jmp 0x41f94f
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
xor edi, edi
cmp eax, edi
mov dword [ebp - 0x14], ebx
jle 0x41f9e8
mov edx, dword [ebp - 0x18]
mov eax, dword [edx + 0x590]
mov eax, dword [eax + ebx*4]
cmp eax, edi
je 0x41f9d9
mov eax, dword [eax + 0xc]
cmp eax, edi
je 0x41f97b
mov dword [ebp + 8], eax
jmp 0x41f985
mov dword [ebp + 8], 0x44e4fc
mov eax, dword [ebp + 8]
cmp eax, edi
je 0x41f9be
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ebx, [eax + eax + 2]
mov eax, ebx
add eax, 3
and al, 0xfc
call fcn.0042a4e0
mov ecx, dword [ebp + 8]
mov edi, esp
push 0
push 0
push ebx
push edi
push 0xffffffffffffffff
push ecx
push 0
push 0
mov byte [edi], 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebx, dword [ebp - 0x14]
lea edx, [ebp - 0x11c]
push edi
push edx
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 8
test eax, eax
je 0x41fc4c
xor edi, edi
mov eax, dword [ebp - 8]
inc ebx
cmp ebx, eax
mov dword [ebp - 0x14], ebx
jl 0x41f95f
push 0xc8
call sub.MFC42.DLL_operatornew
add esp, 4
cmp eax, edi
je 0x41fa2e
mov dword [eax + 0xc], edi
mov dword [eax + 0x90], edi
mov dword [eax + 0x94], edi
mov dword [eax + 0x98], edi
mov dword [eax + 0xa0], edi
mov dword [eax + 0xa4], edi
mov dword [eax + 0xb0], edi
mov dword [eax + 0xa8], edi
mov dword [eax + 0xb4], edi
mov edi, eax
test edi, edi
mov dword [ebp + 0xc], edi
jne 0x41fa46
xor eax, eax
lea esp, [ebp - 0x128]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, 0x2e
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x11c]
test ecx, ecx
mov dword [eax], 0xb8
jne 0x41fa66
xor ebx, ebx
jmp 0x41fa9f
lea edx, [ebp - 0x11c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
lea eax, [edi + edi]
add eax, 3
and al, 0xfc
call fcn.0042a4e0
mov ebx, esp
push edi
push ebx
lea eax, [ebp - 0x11c]
push 0xffffffffffffffff
push eax
push 0
push 0
mov word [ebx], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0xc]
lea edi, [ecx + 0xc]
test eax, eax
je 0x41fab9
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [edi], 0
test ebx, ebx
je 0x41fac6
push ebx
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [edi], eax
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xc]
mov byte [edx + 0x7c], 0
mov eax, dword [ebp + 0xc]
mov dword [eax + 0xb8], ecx
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edx + 0xbc], eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
mov dword [ecx + 0xc0], edx
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov edi, eax
sub ecx, eax
sar ecx, 2
cmp ecx, 1
jae 0x41fbc3
mov edx, dword [esi + 4]
test edx, edx
je 0x41fb1a
mov ecx, eax
sub ecx, edx
sar ecx, 2
cmp ecx, 1
ja 0x41fb1f
mov ecx, 1
test edx, edx
jne 0x41fb27
xor eax, eax
jmp 0x41fb2c
sub eax, edx
sar eax, 2
add eax, ecx
test eax, eax
mov dword [ebp - 4], eax
jge 0x41fb37
xor eax, eax
lea edx, [eax*4]
push edx
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebx, eax
mov eax, dword [esi + 4]
mov ecx, esi
push ebx
push edi
push eax
call fcn.00424850
lea ecx, [ebp + 0xc]
mov dword [ebp + 8], eax
push ecx
push 1
push eax
mov ecx, esi
call fcn.00424880
mov edx, dword [ebp + 8]
mov eax, dword [esi + 8]
add edx, 4
mov ecx, esi
push edx
push eax
push edi
call fcn.00424850
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
push ecx
push edx
mov ecx, esi
call fcn.004241c0
mov eax, dword [esi + 4]
push eax
call fcn.0042a030
mov ecx, dword [ebp - 4]
add esp, 4
lea edx, [ebx + ecx*4]
mov ecx, esi
mov dword [esi + 0xc], edx
call fcn.00423ca0
lea eax, [ebx + eax*4 + 4]
mov dword [esi + 4], ebx
mov dword [esi + 8], eax
mov eax, 1
lea esp, [ebp - 0x128]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, eax
sub ecx, edi
sar ecx, 2
cmp ecx, 1
jae 0x41fc0f
lea edx, [edi + 4]
mov ecx, esi
push edx
push eax
push edi
call fcn.00424850
mov eax, dword [esi + 8]
lea ecx, [ebp + 0xc]
mov edx, eax
push ecx
sub edx, edi
mov ecx, 1
sar edx, 2
sub ecx, edx
push ecx
push eax
mov ecx, esi
call fcn.00424880
mov eax, dword [esi + 8]
cmp edi, eax
je 0x41fc48
mov edx, dword [ebp + 0xc]
mov dword [edi], edx
add edi, 4
cmp edi, eax
jne 0x41fc01
jmp 0x41fc48
push eax
push eax
add eax, 0xfffffffc
mov ecx, esi
push eax
call fcn.00424850
mov ecx, dword [esi + 8]
lea eax, [ecx - 4]
cmp edi, eax
je 0x41fc35
mov edx, dword [eax - 4]
sub eax, 4
sub ecx, 4
cmp eax, edi
mov dword [ecx], edx
jne 0x41fc26
lea eax, [edi + 4]
cmp edi, eax
je 0x41fc48
mov ecx, dword [ebp + 0xc]
mov dword [edi], ecx
add edi, 4
cmp edi, eax
jne 0x41fc3c
add dword [esi + 8], 4
lea esp, [ebp - 0x128]
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8