Function at 0x7aa3a0
Capabilities:
Link many functions at runtime

Disassembly:
push edi
push esi
sub esp, 8
mov dword [esp], str.HID.DLL
call fcn.007c60a0
mov dword [0x818c40], eax
mov dword [esp], str.ADVAPI32.DLL
call fcn.007c60a0
mov dword [0x818c44], eax
mov dword [esp], str.SETUPAPI.DLL
call fcn.007c60a0
mov dword [0x818c48], eax
mov dword [esp], str.CFGMGR32.DLL
call fcn.007c60a0
mov dword [0x818c4c], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c40]
test eax, eax
je 0x7aa5f7
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x7aa5f7
mov ecx, dword [0x818c44]
test ecx, ecx
je 0x7aa5f7
mov ecx, dword [0x818c48]
test ecx, ecx
je 0x7aa5f7
mov dword [esp], eax
mov dword [esp + 4], str.HidD_SetFeature
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c10], eax
test eax, eax
jne 0x7aa455
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x7aa5f7
mov eax, dword [0x818c40]
mov dword [esp], eax
mov dword [esp + 4], str.HidD_GetFeature
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c14], eax
test eax, eax
je 0x7aa5f7
imul eax, eax
and eax, 3
cmp eax, 2
je 0x7aa5f7
mov eax, dword [0x818c40]
mov dword [esp], eax
mov dword [esp + 4], str.HidD_GetHidGuid
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c18], eax
test eax, eax
je 0x7aa5f7
xor eax, eax
test al, al
jne 0x7aa5f7
mov eax, dword [0x818c40]
mov dword [esp], eax
mov dword [esp + 4], str.HidD_GetAttributes
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c1c], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c44]
mov dword [esp], eax
mov dword [esp + 4], 0x7ecd59
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c20], eax
mov eax, dword [0x818c44]
mov dword [esp], eax
mov dword [esp + 4], 0x7ecd76
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c24], eax
mov eax, dword [0x818c48]
mov dword [esp], eax
mov dword [esp + 4], str.SetupDiGetClassDevsA
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c28], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c48]
mov dword [esp], eax
mov dword [esp + 4], str.SetupDiEnumDeviceInterfaces
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c2c], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c48]
mov dword [esp], eax
mov dword [esp + 4], str.SetupDiGetDeviceInterfaceDetailA
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c30], eax
test eax, eax
jne 0x7aa58e
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x7aa5f7
mov eax, dword [0x818c48]
mov dword [esp], eax
mov dword [esp + 4], str.SetupDiDestroyDeviceInfoList
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c34], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c4c]
mov dword [esp], eax
mov dword [esp + 4], str.CM_Get_Device_IDA
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c38], eax
test eax, eax
je 0x7aa5f7
mov eax, dword [0x818c4c]
mov dword [esp], eax
mov dword [esp + 4], str.CM_Get_Parent
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x818c3c], eax
xor esi, esi
test eax, eax
jne 0x7aa6cc
mov esi, dword [0x818c40]
test esi, esi
je 0x7aa62a
mov edi, 0xffffffff
jmp 0x7aa625
mov dword [esp], esi
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
mov dword [0x818c40], 0
add edi, 1
jb 0x7aa610
mov eax, dword [0x818c44]
test eax, eax
je 0x7aa648
mov dword [esp], eax
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
mov dword [0x818c44], 0
mov esi, dword [0x818c48]
test esi, esi
je 0x7aa69c
xor edi, edi
jmp 0x7aa686
mov eax, edi
not eax
and eax, 1
add eax, edi
setne al
movzx eax, al
add edi, eax
mov dword [esp], esi
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
mov dword [0x818c48], 0
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp edi, eax
jb 0x7aa660
mov eax, dword [0x818c4c]
mov esi, 0xffffffff
test eax, eax
jne 0x7aa6b7
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x7aa6cc
mov dword [esp], eax
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
mov dword [0x818c4c], 0
mov eax, esi
add esp, 8
pop esi
pop edi
ret