Function at 0x401790
Capabilities:
Copy file
Create directory
Delete file
Get common file path
Get file attributes
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5a4
mov eax, dword [0x441080]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x104
lea eax, [ebp - 0x108]
mov esi, edx
push 0
push eax
mov edi, ecx
call fcn.0041a0d0
push esi
lea eax, [ebp - 0x108]
push str._s_temppkg
push eax
call fcn.00402250
add esp, 0x18
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ecx, eax
not ecx
test ecx, ecx
je 0x4017eb
test al, 0x10
jne 0x4017fa
push 0
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ecx, str.extract_files_...
call fcn.00401a40
push 0x441a10
lea edx, [ebp - 0x108]
call fcn.00402290
push dword [0x441a10]
lea eax, [ebp - 0x5a4]
push 0x43d6c0
push 0x190
push eax
call fcn.00401010
add esp, 0x14
lea ecx, [ebp - 0x5a4]
call fcn.00401a40
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
mov esi, dword [sym.imp.KERNEL32.dll_MulDiv]
test edi, edi
je 0x401872
mov eax, dword [0x442aa0]
push 0
push dword [0x442a94]
inc eax
push 0x7530
push eax
mov dword [0x442aa0], eax
call esi
push eax
push 0x402
push edi
call ebx
mov ecx, str.extract_files_is_complete_...
call fcn.00401a40
mov ecx, str.Install_driver_...
call fcn.00401a40
push 0x104
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push str.drivers
lea eax, [ebp - 0x310]
push 0x104
push eax
call fcn.0041c42a
lea eax, [ebp - 0x310]
push eax
lea eax, [ebp - 0x20c]
push str._s_sectdr.sys
push eax
call fcn.00402250
add esp, 0x18
cmp byte [0x442aa5], 0
je 0x4018e9
call fcn.00401f80
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x4019b6
lea eax, [ebp - 0x108]
push eax
lea eax, [ebp - 0x414]
push str._s_sectdr.sys
push eax
call fcn.00402250
lea eax, [ebp - 0x310]
push eax
lea eax, [ebp - 0x518]
push str._s_sectdr.tmp
push eax
call fcn.00402250
add esp, 0x18
lea eax, [ebp - 0x518]
push 0
push eax
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x401983
lea eax, [ebp - 0x310]
push eax
lea eax, [ebp - 0x414]
push str._s_sectdr.del
push eax
call fcn.00402250
add esp, 0xc
lea eax, [ebp - 0x414]
push 1
push eax
lea eax, [ebp - 0x20c]
push eax
call esi
push 4
push 0
lea eax, [ebp - 0x414]
push eax
call esi
push 1
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x518]
push eax
call esi
test eax, eax
jne 0x4019ab
push 4
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x518]
push eax
call esi
call fcn.00401c00
mov esi, dword [sym.imp.KERNEL32.dll_MulDiv]
test edi, edi
je 0x401a1e
mov eax, dword [0x442aa0]
push 0
push dword [0x442a94]
inc eax
push 0x7530
push eax
mov dword [0x442aa0], eax
call esi
push eax
push 0x402
push edi
call ebx
lea ecx, [ebp - 0x108]
call fcn.00401af0
mov eax, dword [0x442aa0]
push 0
push dword [0x442a94]
inc eax
push 0x7530
push eax
mov dword [0x442aa0], eax
call esi
push eax
push 0x402
push edi
call ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041908f
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x108]
call fcn.00401af0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041908f
mov esp, ebp
pop ebp
ret