Function at 0x10176570
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101f8e5b
mov eax, dword fs:[0]
push eax
sub esp, 0x894
mov eax, dword [0x102632d4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x87c], 0
mov dword [ebp - 0x894], 0
push str.hid.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x864], eax
push str.SetupAPI.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x860], eax
cmp dword [ebp - 0x860], 0
jne 0x101765e1
xor eax, eax
jmp 0x1017699b
cmp dword [ebp - 0x864], 0
jne 0x10176611
cmp dword [ebp - 0x860], 0
je 0x1017660a
mov eax, dword [ebp - 0x860]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [ebp - 0x860], 0
xor eax, eax
jmp 0x1017699b
push str.HidD_GetHidGuid
mov ecx, dword [ebp - 0x864]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x880], eax
cmp dword [ebp - 0x880], 0
jne 0x10176637
jmp 0x10176955
lea edx, [ebp - 0x820]
push edx
call dword [ebp - 0x880]
push str.SetupDiGetClassDevsW
mov eax, dword [ebp - 0x860]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x884], eax
cmp dword [ebp - 0x884], 0
jne 0x1017666a
jmp 0x10176955
push 0x12
push 0
push 0
lea ecx, [ebp - 0x820]
push ecx
call dword [ebp - 0x884]
mov dword [ebp - 0x86c], eax
mov dword [ebp - 0x854], 0x1c
mov dword [ebp - 0x85c], 0
mov dword [ebp - 0x870], 0xffffffff
mov edx, dword [ebp - 0x870]
add edx, 1
mov dword [ebp - 0x870], edx
push str.SetupDiEnumDeviceInterfaces
mov eax, dword [ebp - 0x860]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x888], eax
cmp dword [ebp - 0x888], 0
jne 0x101766d6
jmp 0x1017691d
lea ecx, [ebp - 0x854]
push ecx
mov edx, dword [ebp - 0x870]
push edx
lea eax, [ebp - 0x820]
push eax
push 0
mov ecx, dword [ebp - 0x86c]
push ecx
call dword [ebp - 0x888]
mov dword [ebp - 0x868], eax
cmp dword [ebp - 0x868], 0
jne 0x1017670e
jmp 0x1017691d
push str.SetupDiGetDeviceInterfaceDetailW
mov edx, dword [ebp - 0x860]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x874], eax
cmp dword [ebp - 0x874], 0
jne 0x10176734
jmp 0x1017691d
push 0
lea eax, [ebp - 0x858]
push eax
push 0
push 0
lea ecx, [ebp - 0x854]
push ecx
mov edx, dword [ebp - 0x86c]
push edx
call dword [ebp - 0x874]
mov dword [ebp - 0x868], eax
mov eax, dword [ebp - 0x858]
push eax
call fcn.101b0c7c
add esp, 4
mov dword [ebp - 0x85c], eax
mov ecx, dword [ebp - 0x85c]
mov dword [ecx], 6
push 0
push 0
mov edx, dword [ebp - 0x858]
push edx
mov eax, dword [ebp - 0x85c]
push eax
lea ecx, [ebp - 0x854]
push ecx
mov edx, dword [ebp - 0x86c]
push edx
call dword [ebp - 0x874]
mov dword [ebp - 0x868], eax
cmp dword [ebp - 0x868], 0
jne 0x101767cf
mov eax, dword [ebp - 0x85c]
push eax
call fcn.101ad199
add esp, 4
mov dword [ebp - 0x85c], 0
jmp 0x10176910
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
mov ecx, dword [ebp - 0x85c]
add ecx, 4
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x878], eax
cmp dword [ebp - 0x878], 0xffffffff
jne 0x1017681b
mov edx, dword [ebp - 0x85c]
push edx
call fcn.101ad199
add esp, 4
mov dword [ebp - 0x85c], 0
jmp 0x10176910
mov dword [ebp - 0x8a0], 0xc
push str.HidD_GetManufacturerString
mov eax, dword [ebp - 0x864]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x88c], eax
push 0x800
push 0
lea ecx, [ebp - 0x810]
push ecx
call fcn.101a9880
add esp, 0xc
cmp dword [ebp - 0x88c], 0
je 0x101768d6
push 0x400
lea edx, [ebp - 0x810]
push edx
mov eax, dword [ebp - 0x878]
push eax
call dword [ebp - 0x88c]
lea ecx, [ebp - 0x810]
push ecx
lea ecx, [ebp - 0x838]
call fcn.10008860
mov dword [ebp - 4], 0
lea edx, [ebp - 0x838]
push edx
call fcn.10010e40
add esp, 4
push str.linux
lea ecx, [ebp - 0x838]
call fcn.100099e0
push eax
call fcn.10011500
add esp, 8
test eax, eax
je 0x101768c4
mov dword [ebp - 0x87c], 3
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x838]
call fcn.10008820
cmp dword [ebp - 0x85c], 0
je 0x101768f8
mov eax, dword [ebp - 0x85c]
push eax
call fcn.101ad199
add esp, 4
mov dword [ebp - 0x85c], 0
mov ecx, dword [ebp - 0x878]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x87c], 0
je 0x10176910
jmp 0x1017691d
cmp dword [ebp - 0x894], 0x28
jl 0x101766a1
push str.SetupDiDestroyDeviceInfoList
mov edx, dword [ebp - 0x860]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x890], eax
cmp dword [ebp - 0x890], 0
jne 0x10176940
jmp 0x10176955
mov eax, dword [ebp - 0x86c]
push eax
call dword [ebp - 0x890]
xor ecx, ecx
jne 0x10176611
cmp dword [ebp - 0x864], 0
je 0x10176975
mov edx, dword [ebp - 0x864]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [ebp - 0x864], 0
cmp dword [ebp - 0x860], 0
je 0x10176995
mov eax, dword [ebp - 0x860]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [ebp - 0x860], 0
mov eax, dword [ebp - 0x87c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101912fd
mov esp, ebp
pop ebp
ret