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

Disassembly:
push 0xffffffffffffffff
push 0x4212a1
mov eax, dword fs:[0]
push eax
sub esp, 0x3b4
mov eax, dword [0x42b1d0]
xor eax, esp
mov dword [esp + 0x3b0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x42b1d0]
xor eax, esp
push eax
lea eax, [esp + 0x3c8]
mov dword fs:[0], eax
push str.InstallDirverFiles_run..
mov edi, ecx
call fcn.004124a0
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 0x403d90
push str.SetupCopyOEMInfA
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x20], eax
cmp eax, ebx
jne 0x403aca
push ebp
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x403d90
push 0x103
lea eax, [esp + 0x1c1]
push ebx
push eax
mov byte [esp + 0x1c8], bl
call fcn.004183e0
add esp, 0xc
push 0x104
lea ecx, [esp + 0x1c0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x403abe
push 0xf9
lea edx, [esp + 0x2c9]
push ebx
push edx
mov byte [esp + 0x2d0], bl
call fcn.004183e0
mov eax, edi
add esp, 0xc
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 0x403b30
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x30]
call fcn.00401c30
push 6
push str..inf
lea eax, [esp + 0x30]
mov dword [esp + 0x3d8], ebx
call fcn.00401740
mov eax, dword [esp + 0x2c]
mov ebp, 0x10
cmp dword [esp + 0x40], ebp
jae 0x403b6e
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 0x403bd5
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x40], ebp
jae 0x403b91
lea eax, [esp + 0x2c]
push eax
push str.InstallDirverFiles_the_file__s_is_INVALID_HANDLE_VALUE
call fcn.00412560
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 0x403bc8
mov eax, dword [esp + 0x2c]
push eax
call fcn.0041288e
add esp, 4
mov dword [esp + 0x40], 0xf
jmp 0x403d88
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 0x403bf0
sub eax, edx
push eax
lea ecx, [esp + 0x1c0]
push ecx
lea ecx, [esp + 0x68]
call fcn.00401c30
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.00401740
mov esi, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov eax, edi
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403c40
sub eax, edx
push eax
push edi
lea ecx, [esp + 0x4c]
call fcn.00401c30
push 1
push 0x42418c
lea eax, [esp + 0x4c]
call fcn.00401740
lea eax, [esp + 0xa8]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403c70
sub eax, edx
push eax
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x4c]
call fcn.00401740
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x78], ebp
jae 0x403c99
lea ecx, [esp + 0x64]
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], ebp
jae 0x403ca7
lea eax, [esp + 0x48]
push ecx
push eax
push str.Copy_source_file__s______s
call fcn.004124a0
mov ecx, dword [esp + 0x70]
add esp, 0xc
cmp dword [esp + 0x78], ebp
jae 0x403cc4
lea ecx, [esp + 0x64]
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], ebp
jae 0x403cd2
lea eax, [esp + 0x48]
push ebx
lea edx, [esp + 0x28]
push edx
push 0xfa
lea edx, [esp + 0x2d0]
push edx
push ebx
push 1
push ecx
push eax
call dword [esp + 0x40]
test eax, eax
je 0x403dc7
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x7c]
push eax
push ecx
call esi
cmp eax, 1
je 0x403c35
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov edx, dword [esp + 0x18]
push edx
xor esi, esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x5c], ebp
jb 0x403d36
mov eax, dword [esp + 0x48]
push eax
call fcn.0041288e
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 0x403d5a
mov ecx, dword [esp + 0x64]
push ecx
call fcn.0041288e
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 0x403d84
mov edx, dword [esp + 0x2c]
push edx
call fcn.0041288e
add esp, 4
mov dword [esp + 0x40], edi
mov byte [esp + 0x2c], bl
mov dword [esp + 0x3c], ebx
push str.InstallDirverFiles_exit..
call fcn.004124a0
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.00412899
add esp, 0x3c0
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Copy_inf_file_error._ErrorCode:__d
call fcn.004124a0
mov edx, dword [esp + 0x24]
add esp, 8
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
push str.InstallDirverFiles_exit..
call fcn.004124a0
mov eax, dword [esp + 0x1c]
add esp, 4
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x5c], ebp
jb 0x403e11
mov ecx, dword [esp + 0x48]
push ecx
call fcn.0041288e
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 0x403e35
mov edx, dword [esp + 0x64]
push edx
call fcn.0041288e
add esp, 4
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], bl
cmp dword [esp + 0x40], ebp
jb 0x403e54
mov eax, dword [esp + 0x2c]
push eax
call fcn.0041288e
add esp, 4
mov eax, 0x4e25
jmp 0x403d9f