Function at 0x408a60
Capabilities:
Check if file exists
Create process on windows
Get common file path
Get file attributes
Set current directory

Disassembly:
sub esp, 0x794
mov eax, dword [0x4382c4]
xor eax, esp
mov dword [esp + 0x78c], eax
mov eax, dword [esp + 0x79c]
push ebx
push ebp
xor ebx, ebx
cmp eax, ebx
push esi
push edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ecx
jne 0x408aa4
push str.When_Operating_adapter__find_parameter_is_error_strTapID_is_NULL.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 4
jmp 0x408da0
cmp dword [esp + 0x7a8], 2
jne 0x408ab3
call fcn.00408130
push 0x103
lea edx, [esp + 0x485]
push ebx
push edx
mov byte [esp + 0x48c], bl
call fcn.00420f50
add esp, 0xc
push str.IsWow64Process
push str.kernel32
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x408aff
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [esp + 0x10], ebx
jne 0x408b19
push str.svnDrive_X86
push 0x104
lea ecx, [esp + 0x488]
push ecx
jmp 0x408b2b
push str.svnDrive_X64
push 0x104
lea edx, [esp + 0x488]
push edx
call fcn.0041aff9
add esp, 0xc
push 0x103
lea eax, [esp + 0x275]
push ebx
push eax
mov byte [esp + 0x27c], bl
call fcn.00420f50
mov ebp, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
add esp, 0xc
lea ecx, [esp + 0x270]
push ecx
push 0x104
call ebp
push 0x103
lea edx, [esp + 0x65]
push ebx
push edx
mov byte [esp + 0x6c], bl
call fcn.00420f50
add esp, 0xc
lea edi, [esp + 0x60]
call fcn.00414140
push 0x42cfc8
mov eax, edi
push 0x104
push eax
call fcn.0041af88
add esp, 0xc
lea ecx, [esp + 0x480]
push ecx
mov edx, edi
push 0x104
push edx
call fcn.0041af88
mov eax, edi
mov edi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
add esp, 0xc
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push str.devcon.exe
call esi
cmp eax, 0xffffffff
jne 0x408c06
lea ecx, [esp + 0x60]
push ecx
push 0x104
call ebp
push str.devcon.exe
lea edx, [esp + 0x64]
push edx
push str.File___s__s__does_not_exists.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0xc
lea eax, [esp + 0x270]
push eax
call edi
jmp 0x408da0
cmp dword [esp + 0x7a8], 1
jne 0x408dbd
push 0x103
lea ecx, [esp + 0x16d]
push ebx
push ecx
mov byte [esp + 0x174], bl
call fcn.00420f50
mov edi, dword [esp + 0x24]
add esp, 0xc
push edi
push str._s.sys
lea edx, [esp + 0x170]
push 0x104
push edx
call fcn.0041af4d
add esp, 0x10
lea eax, [esp + 0x168]
push eax
call esi
cmp eax, 0xffffffff
jne 0x408c97
lea ecx, [esp + 0x60]
push ecx
push 0x104
call ebp
lea edx, [esp + 0x168]
push edx
lea eax, [esp + 0x64]
push eax
push str.File___s__s__does_not_exists.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0xc
lea ecx, [esp + 0x270]
push ecx
jmp 0x408d9a
push 0x103
lea edx, [esp + 0x58d]
push ebx
push edx
mov byte [esp + 0x594], bl
call fcn.00420f50
add esp, 0xc
push edi
push str._s.inf
lea eax, [esp + 0x590]
push 0x104
push eax
call fcn.0041af4d
add esp, 0x10
lea ecx, [esp + 0x588]
push ecx
call esi
cmp eax, 0xffffffff
jne 0x408d16
lea edx, [esp + 0x60]
push edx
push 0x104
call ebp
lea eax, [esp + 0x588]
push eax
lea ecx, [esp + 0x64]
push ecx
push str.File___s__s__does_not_exists.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0xc
lea edx, [esp + 0x270]
push edx
jmp 0x408d9a
cmp dword [esp + 0x10], ebx
je 0x408dc1
push 0x103
lea eax, [esp + 0x695]
push ebx
push eax
mov byte [esp + 0x69c], bl
call fcn.00420f50
add esp, 0xc
push edi
push str._s.cat
lea ecx, [esp + 0x698]
push 0x104
push ecx
call fcn.0041af4d
add esp, 0x10
lea edx, [esp + 0x690]
push edx
call esi
cmp eax, 0xffffffff
jne 0x408dc1
lea eax, [esp + 0x60]
push eax
push 0x104
call ebp
lea ecx, [esp + 0x690]
push ecx
lea edx, [esp + 0x64]
push edx
push str.File___s__s__does_not_exists.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0xc
lea eax, [esp + 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
xor eax, eax
mov ecx, dword [esp + 0x79c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0041aec3
add esp, 0x794
ret 8
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x18]
push ecx
mov dword [esp + 0x28], 0x3c
mov dword [esp + 0x2c], 0x40
mov dword [esp + 0x30], ebx
call fcn.004150f0
add esp, 4
test eax, eax
jne 0x408df5
cmp dword [esp + 0x18], 3
mov dword [esp + 0x30], str.runas
jae 0x408dfd
mov dword [esp + 0x30], str.open
push 0x103
lea edx, [esp + 0x37d]
push ebx
push edx
mov dword [esp + 0x40], str.devcon.exe
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x384], bl
call fcn.00420f50
mov ebp, dword [esp + 0x7b4]
lea eax, [ebp - 1]
add esp, 0xc
cmp eax, 3
ja case.default.0x408e35
jmp dword [eax*4 + 0x408fa4]
push edi
push edi
push str.install__s.inf__s
lea edx, [esp + 0x384]
call fcn.00409300
add esp, 0xc
jmp 0x408ea3
push edi
push str.remove__s
lea edx, [esp + 0x380]
call fcn.00409300
jmp 0x408ea0
push edi
push str.enable__s
lea edx, [esp + 0x380]
call fcn.00409300
jmp 0x408ea0
push edi
push str.disable__s
lea edx, [esp + 0x380]
call fcn.00409300
jmp 0x408ea0
push ebp
push str.When_operating_adapter__unknown_operation_code__d_is_found.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 8
lea eax, [esp + 0x378]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x14], ebx
xor esi, esi
lea esp, [esp]
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
cmp dword [esp + 0x44], 0x20
jge 0x408edf
add esi, 1
cmp esi, 0xa
jl 0x408ec0
jmp 0x408d92
mov edx, dword [esp + 0x5c]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [esp + 0x5c]
lea eax, [esp + 0x14]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
xor edx, edx
cmp eax, 1
sete dl
push eax
push ebp
push str.devcon.exe
push str.Process___s__has_been_launched__operation_is__d_and_execute_result_is__d.
mov dword [ecx], edx
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 0x10
cmp ebp, 2
jne 0x408f88
push 0xff
lea edx, [esp + 0x16d]
push ebx
push edx
mov byte [esp + 0x174], bl
call fcn.00420f50
add esp, 0xc
lea eax, [esp + 0x168]
push eax
push edi
call fcn.004084a0
test eax, eax
jne 0x408f6d
push str.Cannot_find_viturl_network_adapter_in_registry.
mov ecx, 0x43b48c
call fcn.0040a090
add esp, 4
cmp byte [esp + 0x168], bl
je 0x408f88
lea ecx, [esp + 0x168]
test ecx, ecx
je 0x408f88
mov edi, ecx
call fcn.00408800
lea edx, [esp + 0x270]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
xor eax, eax
cmp dword [esp + 0x14], ebx
sete al
jmp 0x408da2