Function at 0x405c70
Capabilities:
Check if file exists
Delete file
Get common file path
Move file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x430e7b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x10c4
call fcn.00414b20
mov eax, dword [0x4431cc]
push ebx
push esi
push edi
xor eax, ebp
push 0
lea ecx, [esp + 0x3c]
mov dword [esp + 0x10d0], eax
call fcn.00407d00
lea eax, [esp + 0xba0]
push eax
mov dword [esp + 0x10e0], 0
call fcn.00405440
mov eax, dword [0x44d2b0]
mov esi, 1
add esp, 4
cmp eax, esi
je 0x405ce3
cmp dword [0x44d2ac], esi
jne 0x405d0e
xor eax, eax
mov ecx, 0x41
mov edi, 0x4444e0
rep stosd dword es:[edi], eax
mov ecx, dword [0x4446e8]
push ecx
push 0x4444e0
call fcn.004145fa
add esp, 8
lea ecx, [esp + 0x38]
call fcn.00407820
lea edx, [esp + 0x380]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea eax, [esp + 0x380]
push eax
call fcn.004144df
add esp, 4
cmp word [esp + eax*2 + 0x37e], 0x5c
je 0x405d51
lea ecx, [esp + 0x380]
push 0x4330e4
push ecx
call fcn.004145d0
add esp, 8
lea edx, [esp + 0x380]
push 0x444b28
push edx
call fcn.004145d0
add esp, 8
push 0
push 2
push 0
lea eax, [esp + 0x38c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
mov edi, eax
cmp edi, 0xffffffff
mov dword [esp + 0x14], edi
jne 0x405db6
push 0xa
lea ecx, [esp + 0xdac]
push ecx
push 0x13f0
call fcn.00414ddb
add esp, 0xc
push 0x43c88c
lea eax, [esp + 0x10]
lea edx, [esp + 0xdac]
push eax
mov dword [esp + 0x14], edx
call fcn.00414e9e
lea ecx, [esp + 0x28]
push ecx
push str.CopyFiles
push 0x447814
push edi
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupGetFieldCount]
cmp eax, esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], esi
jb 0x405f1b
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
lea ecx, [ecx]
mov ecx, dword [esp + 0xc]
push 0
push 0x104
lea eax, [esp + 0x798]
push eax
push ecx
lea edx, [esp + 0x38]
push edx
call ebx
lea eax, [esp + 0x790]
push eax
push edi
call dword [sym.imp.SETUPAPI.dll_SetupGetLineCountW]
mov esi, eax
test esi, esi
jle 0x405f01
lea ecx, [esp + 0x18]
push ecx
push 0
lea edx, [esp + 0x798]
push edx
push edi
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test esi, esi
jle 0x405f01
push 0
push 0x104
lea eax, [esp + 0x9a0]
push eax
push 1
lea ecx, [esp + 0x28]
push ecx
call ebx
xor eax, eax
mov ecx, 0x41
lea edi, [esp + 0x588]
lea edx, [esp + 0xba0]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x58c]
push eax
call fcn.004145fa
lea ecx, [esp + 0x9a0]
push ecx
lea edx, [esp + 0x594]
push edx
call fcn.004145d0
add esp, 0x10
push 0x80
lea eax, [esp + 0x58c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea ecx, [esp + 0x588]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x405ee8
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x405ee8
cmp eax, 3
je 0x405ee8
push 4
push 0
lea edx, [esp + 0x590]
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov dword [0x44d2a0], 1
lea eax, [esp + 0x18]
push eax
mov ecx, eax
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
dec esi
jne 0x405e42
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
inc eax
cmp eax, ecx
mov dword [esp + 0xc], eax
jbe 0x405df0
mov esi, 1
push edi
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
lea ecx, [esp + 0x38]
mov dword [esp + 0x10dc], 0xffffffff
call fcn.00407690
mov ecx, dword [esp + 0x10d4]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x10cc]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.00414a22
mov esp, ebp
pop ebp
ret