Function at 0x4029f0
Capabilities:
Enumerate files on windows
Get common file path
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x421ae1
mov eax, dword fs:[0]
push eax
sub esp, 0x3b4
mov eax, dword [0x42c070]
xor eax, esp
mov dword [esp + 0x3b0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x42c070]
xor eax, esp
push eax
lea eax, [esp + 0x3c8]
mov dword fs:[0], eax
push str.InstallDirverFiles_run..
mov edi, ecx
call fcn.00412950
add esp, 4
push str.Setupapi.dll
mov esi, 0x4e25
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebp, eax
xor ebx, ebx
mov dword [esp + 0x18], ebp
cmp ebp, ebx
je 0x402d54
push str.SetupCopyOEMInfA
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x24], eax
cmp eax, ebx
jne 0x402a7a
push ebp
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x402d54
push 0x103
lea eax, [esp + 0x1c1]
push ebx
push eax
mov byte [esp + 0x1c8], bl
call fcn.00418e90
add esp, 0xc
push 0x104
lea ecx, [esp + 0x1c0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x402a6e
push 0xf9
lea edx, [esp + 0x2c9]
push ebx
push edx
mov byte [esp + 0x2d0], bl
call fcn.00418e90
mov eax, edi
add esp, 0xc
mov dword [esp + 0x20], ebx
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2c], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x402ae4
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x30]
call fcn.00407f80
push 6
push str..inf
lea eax, [esp + 0x30]
mov dword [esp + 0x3d8], ebx
call fcn.00407630
mov eax, dword [esp + 0x2c]
mov ebp, 0x10
cmp dword [esp + 0x40], ebp
jae 0x402b22
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x7c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [esp + 0x1c], eax
cmp eax, 0xffffffff
jne 0x402b89
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x40], ebp
jae 0x402b45
lea eax, [esp + 0x2c]
push eax
push str.InstallDirverFiles_the_file__s_is_INVALID_HANDLE_VALUE
call fcn.004129d0
mov edx, dword [esp + 0x20]
add esp, 8
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [esp + 0x3d0], 0xffffffff
cmp dword [esp + 0x40], ebp
jb 0x402b7c
mov eax, dword [esp + 0x2c]
push eax
call fcn.0041300c
add esp, 4
mov dword [esp + 0x40], 0xf
jmp 0x402d4c
mov esi, 0xf
lea eax, [esp + 0x1bc]
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x402ba4
sub eax, edx
push eax
lea ecx, [esp + 0x1c0]
push ecx
lea ecx, [esp + 0x68]
call fcn.00407f80
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], bl
push 0x12
push str._system32drivers_
lea eax, [esp + 0x68]
mov byte [esp + 0x3d8], 2
call fcn.00407630
mov esi, dword [sym.imp.KERNEL32.dll_FindNextFileA]
lea esp, [esp]
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x402bf5
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x4c]
call fcn.00407f80
push 1
push 0x4251fc
lea eax, [esp + 0x4c]
call fcn.00407630
lea eax, [esp + 0xa8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x402c23
sub eax, edx
push eax
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x4c]
call fcn.00407630
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x78], ebp
jae 0x402c4c
lea ecx, [esp + 0x64]
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], ebp
jae 0x402c5a
lea eax, [esp + 0x48]
push ecx
push eax
push str.Copy_source_file__s______s
call fcn.00412950
mov ecx, dword [esp + 0x70]
add esp, 0xc
cmp dword [esp + 0x78], ebp
jae 0x402c77
lea ecx, [esp + 0x64]
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], ebp
jae 0x402c85
lea eax, [esp + 0x48]
push ebx
lea edx, [esp + 0x24]
push edx
push 0xfa
lea edx, [esp + 0x2d0]
push edx
push ebx
push 1
push ecx
push eax
call dword [esp + 0x44]
test eax, eax
je 0x402d8b
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x7c]
push eax
push ecx
call esi
cmp eax, 1
je 0x402bf0
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp eax, ebx
je 0x402cda
push str.Find_Close_failed_
call fcn.004129d0
add esp, 4
mov edx, dword [esp + 0x18]
push edx
xor esi, esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x5c], ebp
jb 0x402cfa
mov eax, dword [esp + 0x48]
push eax
call fcn.0041300c
add esp, 4
mov edi, 0xf
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], bl
cmp dword [esp + 0x78], ebp
jb 0x402d1e
mov ecx, dword [esp + 0x64]
push ecx
call fcn.0041300c
add esp, 4
mov dword [esp + 0x3d0], 0xffffffff
mov dword [esp + 0x78], edi
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], bl
cmp dword [esp + 0x40], ebp
jb 0x402d48
mov edx, dword [esp + 0x2c]
push edx
call fcn.0041300c
add esp, 4
mov dword [esp + 0x40], edi
mov byte [esp + 0x2c], bl
mov dword [esp + 0x3c], ebx
push str.InstallDirverFiles_exit..
call fcn.00412950
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x3c8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3b0]
xor ecx, esp
call fcn.00413017
add esp, 0x3c0
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Copy_inf_file_error._ErrorCode:__d
call fcn.00412950
mov edx, dword [esp + 0x24]
add esp, 8
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
test eax, eax
je 0x402dbb
push str.findclose_failed_
call fcn.004129d0
add esp, 4
push str.InstallDirverFiles_exit..
call fcn.00412950
mov eax, dword [esp + 0x1c]
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x5c], ebp
jb 0x402de6
mov ecx, dword [esp + 0x48]
push ecx
call fcn.0041300c
add esp, 4
mov esi, 0xf
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], bl
cmp dword [esp + 0x78], ebp
jb 0x402e0a
mov edx, dword [esp + 0x64]
push edx
call fcn.0041300c
add esp, 4
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], bl
cmp dword [esp + 0x40], ebp
jb 0x402e29
mov eax, dword [esp + 0x2c]
push eax
call fcn.0041300c
add esp, 4
mov eax, 0x4e25
jmp 0x402d63