Function at 0x402860
Capabilities:
Delete file
Get common file path
Move file

Disassembly:
sub esp, 0x760
lea eax, [esp + 8]
push ebx
push esi
push edi
push ebp
push 0x4082b0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edi, dword [esp + 0x77c]
cmp edi, 1
jne 0x40289a
lea eax, [esp + 0x18]
push str.Drivers_
push eax
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
call ebp
jmp 0x4028a0
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
mov esi, dword [esp + 0x774]
lea eax, [esp + 0x18]
push esi
push eax
call ebp
lea eax, [esp + 0x630]
lea ecx, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x4028f1
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebx, dword [esp + 0x778]
push edi
push ebx
call fcn.004016d0
cmp eax, 1
je 0x4028f8
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x760
ret
mov ebx, dword [esp + 0x778]
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40295f
lea eax, [esp + 0x11c]
push 0x4081a0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0x11c]
push esi
push eax
call ebp
lea eax, [esp + 0x18]
push 1
lea ecx, [esp + 0x120]
push eax
push ecx
call fcn.00402ff0
add esp, 0xc
test eax, eax
jne 0x40294a
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x760
ret
cmp eax, 1
je 0x40295f
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x760
ret
lea eax, [esp + 0x11c]
push 0x4081a0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0x11c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, 0x5c
cmp byte [esp + eax + 0x11c], cl
je 0x402991
dec eax
jmp 0x402985
mov byte [esp + eax + 0x11c], 0
lea eax, [esp + 0x18]
push 0x4082b0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp edi, 1
jne 0x4029ba
lea eax, [esp + 0x18]
push str.Drivers_
push eax
call ebp
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, 0x5c
cmp byte [esp + eax + 0x18], cl
je 0x4029d3
dec eax
jmp 0x4029ca
mov byte [esp + eax + 0x18], 0
lea eax, [esp + 0x324]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x220]
lea eax, [esp + 0x14]
push ecx
lea ecx, [esp + 0x530]
push edx
lea edx, [esp + 0x430]
push eax
lea eax, [esp + 0x330]
push ecx
mov dword [esp + 0x24], 0x104
mov dword [esp + 0x20], 0x104
push edx
push eax
push esi
push 1
call sub.VERSION.dll_VerFindFileA
lea ecx, [esp + 0x10]
lea edx, [esp + 0x428]
lea eax, [esp + 0x52c]
push ecx
lea ecx, [esp + 0x1c]
push edx
lea edx, [esp + 0x124]
push eax
push ecx
push edx
push ebx
push esi
push 2
call sub.VERSION.dll_VerInstallFileA
test eax, eax
je 0x402a69
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x760
ret
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x402b0a
lea eax, [esp + 0x18]
push 0x4082b0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp edi, 1
jne 0x402a9a
lea eax, [esp + 0x18]
push str.Drivers_
push eax
call ebp
lea eax, [esp + 0x18]
push esi
push eax
call ebp
lea eax, [esp + 0x220]
push 0x4082b0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp edi, 1
jne 0x402ac9
lea eax, [esp + 0x220]
push str.Drivers_
push eax
call ebp
lea eax, [esp + 0x220]
push ebx
push eax
call ebp
lea eax, [esp + 0x18]
push 4
push 0
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExA]
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 1
je 0x402af2
call edi
lea eax, [esp + 0x18]
push 4
lea ecx, [esp + 0x224]
push eax
push ecx
call esi
cmp eax, 1
je 0x402b0a
call edi
mov eax, 1
pop ebp
mov dword [0x4082a4], 1
pop edi
pop esi
pop ebx
add esp, 0x760
ret