Function at 0x401898
Capabilities:
Resolve function by parsing pe exports

Disassembly:
jmp 0x44e4a0
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push ebp
mov ebp, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
push esi
push edi
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x10]
push 0
push eax
push 0
push 0
push edi
push ebx
mov dword [esp + 0x28], 0
call ebp
mov eax, dword [esp + 0x10]
push eax
push 0x40
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x10]
push 0
mov esi, eax
push ecx
push edx
push esi
push edi
push ebx
mov dword [esi], 5
call ebp
test eax, eax
jne 0x44e502
pop edi
pop esi
pop ebp
xor al, al
pop ebx
pop ecx
ret 0xc
push 0
push 0
push 3
push 0
push 3
add esi, 4
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, dword [esp + 0x20]
mov dword [esi], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [esi]
cmp eax, 0xffffffff
jne 0x44e538
pop edi
pop esi
pop ebp
xor al, al
pop ebx
pop ecx
ret 0xc
lea edi, [esi + 4]
push edi
push eax
call sub.HID.DLL_HidD_GetPreparsedData
test al, al
jne 0x44e54e
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0xc
mov ecx, dword [esi]
lea eax, [esi + 0x48]
push eax
push ecx
call sub.HID.DLL_HidD_GetAttributes
test al, al
jne 0x44e570
mov edx, dword [edi]
push edx
call sub.HID.DLL_HidD_FreePreparsedData
pop edi
pop esi
pop ebp
xor al, al
pop ebx
pop ecx
ret 0xc
mov ecx, dword [edi]
lea eax, [esi + 8]
push eax
push ecx
call sub.HID.DLL_HidP_GetCaps
test eax, eax
jne 0x44e592
mov edx, dword [edi]
push edx
call sub.HID.DLL_HidD_FreePreparsedData
pop edi
pop esi
pop ebp
xor al, al
pop ebx
pop ecx
ret 0xc
mov ebx, dword [sym.imp.MSVCRT.dll_calloc]
xor eax, eax
mov ax, word [esi + 0xc]
push 1
push eax
call ebx
xor ecx, ecx
push 0x48
mov cx, word [esi + 0x36]
mov dword [esi + 0x54], eax
push ecx
call ebx
xor edx, edx
mov ebp, eax
mov dx, word [esi + 0x38]
push 0x48
push edx
mov dword [esi + 0x60], ebp
call ebx
mov ecx, dword [esi + 4]
add esp, 0x18
lea edx, [esp + 0x1c]
mov edi, eax
mov ax, word [esi + 0x36]
push ecx
push edx
push ebp
push 0
push 0
push 0
push 0
mov dword [esi + 0x64], edi
mov dword [esp + 0x38], eax
call sub.HID.DLL_HidP_GetSpecificButtonCaps
mov ecx, dword [esi + 4]
mov ax, word [esi + 0x38]
lea edx, [esp + 0x1c]
push ecx
push edx
push edi
push 0
push 0
push 0
push 0
mov dword [esp + 0x38], eax
call sub.HID.DLL_HidP_GetSpecificValueCaps
xor ecx, ecx
xor eax, eax
mov cx, word [esi + 0x38]
test ecx, ecx
jbe 0x44e630
lea edx, [edi + 0x3a]
cmp byte [edx - 0x2e], 0
je 0x44e629
mov di, word [edx]
sub di, word [edx - 2]
lea eax, [eax + edi + 1]
jmp 0x44e62a
inc eax
add edx, 0x48
dec ecx
jne 0x44e616
mov ecx, dword [esi + 0x64]
xor edx, edx
mov dx, word [esi + 0x36]
and eax, 0xffff
add eax, edx
push 0x14
push eax
mov dword [esp + 0x28], ecx
mov dword [esi + 0x5c], eax
call ebx
add esp, 8
cmp word [esi + 0x36], 0
mov edi, eax
mov dword [esp + 0x18], 0
mov dword [esi + 0x58], edi
jbe 0x44e6ac
mov byte [edi], 1
mov dword [edi + 4], 0x110000
mov ax, word [ebp]
mov word [edi + 2], ax
mov ecx, dword [esi + 4]
mov dx, word [ebp]
push ecx
push edx
push 0
call sub.HID.DLL_HidP_MaxUsageListLength
push 2
push eax
mov dword [edi + 8], eax
call ebx
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x20]
xor ecx, ecx
add esp, 8
mov cx, word [esi + 0x36]
inc eax
add edi, 0x14
add ebp, 0x48
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x44e663
xor edx, edx
cmp word [esi + 0x3e], dx
jbe 0x44e718
mov ecx, dword [esp + 0x20]
mov al, byte [ecx + 0xc]
test al, al
je 0x44e6ea
mov ax, word [ecx + 0x38]
cmp ax, word [ecx + 0x3a]
ja 0x44e706
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov bp, word [ecx]
mov word [edi + 8], ax
mov word [edi + 2], bp
add edi, 0x14
inc eax
cmp ax, word [ecx + 0x3a]
jbe 0x44e6c9
jmp 0x44e706
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov ax, word [ecx]
mov word [edi + 2], ax
mov ax, word [ecx + 0x38]
mov word [edi + 8], ax
add edi, 0x14
add ecx, 0x48
inc edx
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov cx, word [esi + 0x3e]
cmp edx, ecx
jb 0x44e6b4
xor edx, edx
push 1
mov dx, word [esi + 0xe]
push edx
call ebx
mov dword [esi + 0x68], eax
xor eax, eax
mov ax, word [esi + 0x3c]
push 0x48
push eax
call ebx
xor ecx, ecx
mov ebp, eax
mov cx, word [esi + 0x3e]
push 0x48
push ecx
mov dword [esi + 0x74], ebp
call ebx
add esp, 0x18
mov edi, eax
mov eax, dword [esi + 4]
mov dx, word [esi + 0x3c]
lea ecx, [esp + 0x1c]
push eax
push ecx
push ebp
push 0
push 0
push 0
push 1
mov dword [esi + 0x78], edi
mov dword [esp + 0x38], edx
call sub.HID.DLL_HidP_GetSpecificButtonCaps
mov eax, dword [esi + 4]
mov dx, word [esi + 0x3e]
lea ecx, [esp + 0x1c]
push eax
push ecx
push edi
push 0
push 0
push 0
push 1
mov dword [esp + 0x38], edx
call sub.HID.DLL_HidP_GetSpecificValueCaps
xor eax, eax
xor ecx, ecx
mov ax, word [esi + 0x3e]
test eax, eax
jbe 0x44e7b0
lea edx, [edi + 0x3a]
cmp byte [edx - 0x2e], 0
je 0x44e7a9
mov di, word [edx]
sub di, word [edx - 2]
lea ecx, [ecx + edi + 1]
jmp 0x44e7aa
inc ecx
add edx, 0x48
dec eax
jne 0x44e796
mov edx, dword [esi + 0x78]
xor eax, eax
mov ax, word [esi + 0x3c]
and ecx, 0xffff
add eax, ecx
push 0x14
push eax
mov dword [esp + 0x28], edx
mov dword [esi + 0x70], eax
call ebx
add esp, 8
cmp word [esi + 0x3c], 0
mov edi, eax
mov dword [esp + 0x18], 0
mov dword [esi + 0x6c], edi
jbe 0x44e82d
mov byte [edi], 1
mov dword [edi + 4], 0x110000
mov cx, word [ebp]
mov word [edi + 2], cx
mov edx, dword [esi + 4]
mov ax, word [ebp]
push edx
push eax
push 1
call sub.HID.DLL_HidP_MaxUsageListLength
push 2
push eax
mov dword [edi + 8], eax
call ebx
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x20]
xor ecx, ecx
add esp, 8
mov cx, word [esi + 0x3c]
inc eax
add edi, 0x14
add ebp, 0x48
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x44e7e4
xor edx, edx
cmp word [esi + 0x3e], dx
jbe 0x44e899
mov ecx, dword [esp + 0x20]
mov al, byte [ecx + 0xc]
test al, al
je 0x44e86b
mov ax, word [ecx + 0x38]
cmp ax, word [ecx + 0x3a]
ja 0x44e887
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov bp, word [ecx]
mov word [edi + 8], ax
mov word [edi + 2], bp
add edi, 0x14
inc eax
cmp ax, word [ecx + 0x3a]
jbe 0x44e84a
jmp 0x44e887
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov ax, word [ecx]
mov word [edi + 2], ax
mov ax, word [ecx + 0x38]
mov word [edi + 8], ax
add edi, 0x14
add ecx, 0x48
inc edx
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov cx, word [esi + 0x3e]
cmp edx, ecx
jb 0x44e835
xor edx, edx
push 1
mov dx, word [esi + 0x10]
push edx
call ebx
mov dword [esi + 0x7c], eax
xor eax, eax
mov ax, word [esi + 0x42]
push 0x48
push eax
call ebx
xor ecx, ecx
mov ebp, eax
mov cx, word [esi + 0x44]
push 0x48
push ecx
mov dword [esi + 0x88], ebp
call ebx
add esp, 0x18
mov edi, eax
mov eax, dword [esi + 4]
mov dx, word [esi + 0x42]
lea ecx, [esp + 0x1c]
push eax
push ecx
push ebp
push 0
push 0
push 0
push 2
mov dword [esi + 0x8c], edi
mov dword [esp + 0x38], edx
call sub.HID.DLL_HidP_GetSpecificButtonCaps
mov eax, dword [esi + 4]
mov dx, word [esi + 0x44]
lea ecx, [esp + 0x1c]
push eax
push ecx
push edi
push 0
push 0
push 0
push 2
mov dword [esp + 0x38], edx
call sub.HID.DLL_HidP_GetSpecificValueCaps
xor eax, eax
xor ecx, ecx
mov ax, word [esi + 0x44]
test eax, eax
jbe 0x44e937
lea edx, [edi + 0x3a]
cmp byte [edx - 0x2e], 0
je 0x44e930
mov di, word [edx]
sub di, word [edx - 2]
lea ecx, [ecx + edi + 1]
jmp 0x44e931
inc ecx
add edx, 0x48
dec eax
jne 0x44e91d
mov edx, dword [esi + 0x8c]
xor eax, eax
mov ax, word [esi + 0x42]
and ecx, 0xffff
add eax, ecx
push 0x14
push eax
mov dword [esp + 0x28], edx
mov dword [esi + 0x84], eax
call ebx
add esp, 8
cmp word [esi + 0x42], 0
mov edi, eax
mov dword [esp + 0x18], 0
mov dword [esi + 0x80], edi
jbe 0x44e9bd
mov byte [edi], 1
mov dword [edi + 4], 0x110000
mov cx, word [ebp]
mov word [edi + 2], cx
mov edx, dword [esi + 4]
mov ax, word [ebp]
push edx
push eax
push 2
call sub.HID.DLL_HidP_MaxUsageListLength
push 2
push eax
mov dword [edi + 8], eax
call ebx
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x20]
xor ecx, ecx
add esp, 8
mov cx, word [esi + 0x42]
inc eax
add edi, 0x14
add ebp, 0x48
cmp eax, ecx
mov dword [esp + 0x18], eax
jb 0x44e974
xor edx, edx
cmp word [esi + 0x3e], dx
jbe 0x44ea29
mov ecx, dword [esp + 0x20]
mov al, byte [ecx + 0xc]
test al, al
je 0x44e9fb
mov ax, word [ecx + 0x38]
cmp ax, word [ecx + 0x3a]
ja 0x44ea17
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov bx, word [ecx]
mov word [edi + 8], ax
mov word [edi + 2], bx
add edi, 0x14
inc eax
cmp ax, word [ecx + 0x3a]
jbe 0x44e9da
jmp 0x44ea17
mov byte [edi], 0
mov dword [edi + 4], 0x110000
mov ax, word [ecx]
mov word [edi + 2], ax
mov ax, word [ecx + 0x38]
mov word [edi + 8], ax
add edi, 0x14
add ecx, 0x48
inc edx
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov cx, word [esi + 0x3e]
cmp edx, ecx
jb 0x44e9c5
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
pop ecx
ret 0xc