Function at 0x406960
Capabilities:
Get common file path
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x414
mov dword [ebp - 0x414], ecx
mov al, byte [0x4a53c4]
mov byte [ebp - 0x410], al
push 0x207
push 0
lea ecx, [ebp - 0x40f]
push ecx
call fcn.0041ce40
add esp, 0xc
mov dl, byte [0x4a53c5]
mov byte [ebp - 0x208], dl
push 0x207
push 0
lea eax, [ebp - 0x207]
push eax
call fcn.0041ce40
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x410]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push str.SetupApi.dll
lea edx, [ebp - 0x410]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 8
push 0
lea eax, [ebp - 0x410]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov ecx, dword [ebp - 0x414]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 0x414]
cmp dword [edx + 8], 0
je 0x406a66
push str.SetupDiGetClassDevsA
mov eax, dword [ebp - 0x414]
mov ecx, dword [eax + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd8c], eax
push str.SetupDiEnumDeviceInterfaces
mov edx, dword [ebp - 0x414]
mov eax, dword [edx + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd48], eax
push str.SetupDiGetDeviceInterfaceDetailA
mov ecx, dword [ebp - 0x414]
mov edx, dword [ecx + 8]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd7c], eax
push str.SetupDiDestroyDeviceInfoList
mov eax, dword [ebp - 0x414]
mov ecx, dword [eax + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd4c], eax
jmp 0x406a81
push 0x10
push 0x4a5450
push 0x4a546c
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
jmp 0x406ba4
push 0x104
lea edx, [ebp - 0x208]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0x4a5474
lea eax, [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 8
push 0
lea ecx, [ebp - 0x208]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov edx, dword [ebp - 0x414]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x414]
cmp dword [eax + 0xc], 0
je 0x406b87
push str.HidD_GetHidGuid
mov ecx, dword [ebp - 0x414]
mov edx, dword [ecx + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd5c], eax
push str.HidD_SetFeature
mov eax, dword [ebp - 0x414]
mov ecx, dword [eax + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd40], eax
push str.HidD_GetFeature
mov edx, dword [ebp - 0x414]
mov eax, dword [edx + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd64], eax
push str.HidD_GetPreparsedData
mov ecx, dword [ebp - 0x414]
mov edx, dword [ecx + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd54], eax
push str.HidD_GetAttributes
mov eax, dword [ebp - 0x414]
mov ecx, dword [eax + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd80], eax
push str.HidD_FreePreparsedData
mov edx, dword [ebp - 0x414]
mov eax, dword [edx + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd94], eax
push str.HidP_GetCaps
mov ecx, dword [ebp - 0x414]
mov edx, dword [ecx + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x59fd3c], eax
jmp 0x406b9f
push 0x10
push 0x4a5504
push 0x4a551c
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
jmp 0x406ba4
mov eax, 1
mov esp, ebp
pop ebp
ret