Function at 0x14010b6d0
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xa0]
sub rsp, 0x1a0
mov rax, qword [0x1405921c0]
xor rax, rsp
mov qword [rbp + 0x90], rax
mov rbx, rcx
xor r13d, r13d
call fcn.140109700
mov esi, eax
xor r12b, r12b
test eax, eax
jne 0x14010c0d5
lea edi, [rax + 1]
cmp dword [rbx + 0x108], r13d
jne 0x14010bb26
cmp dword [rbx + 0xd0], 4
jne 0x14010b7d7
movzx edx, byte [rbx + 0x139]
mov word [rbp + 0x50], 0x305
mov byte [rbp + 0x52], reloc.WS2_32.dll_setsockopt
mov word [rbp + 0x54], r13w
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], r13
sub rdx, 5
mov byte [rsp + 0x40], r12b
je 0x14010b779
lea r8, [rsp + 0x40]
lea rcx, [rbp + 0x58]
call fcn.14000cbf0
nop
lea rdx, [rbp + 0x50]
mov rcx, rbx
call fcn.140109e50
mov esi, eax
test eax, eax
jne 0x14010b795
mov dword [rbx + 0xd0], 5
mov rcx, qword [rbp + 0x58]
test rcx, rcx
je 0x14010b7cf
mov rdx, qword [rbp + 0x68]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010b7ca
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c125
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
cmp dword [rbx + 0xd0], 5
jne 0x14010b7f2
mov rcx, rbx
call fcn.140109b10
mov esi, eax
test eax, eax
jne 0x14010c0d5
cmp dword [rbx + 0xd0], 7
jne 0x14010b96d
mov edi, 0xea60
lea rcx, str.HID_VALIDATION_TIME_MS
call fcn.1400de564
test rax, rax
je 0x14010b829
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.1400dbbdc
test eax, eax
cmove eax, edi
mov edi, eax
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call fcn.1400c9d40
mov r14, rax
mov qword [rsp + 0x48], rax
xor eax, eax
mov qword [r14], rax
mov qword [r14 + 8], rax
mov qword [rsp + 0x58], r14
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [r14 + 8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
nop
mov rcx, rbx
call fcn.1401085b0
mov esi, eax
test eax, eax
jne 0x14010b955
nop
cmp dword [rbx + 0xd0], 8
jne 0x14010b8d9
lea rcx, [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rcx, qword [rsp + 0x48]
sub rcx, qword [r14]
mov rax, r13
cmovns rax, rcx
imul rax, rax, 0x3e8
cqo
idiv qword [r14 + 8]
cmp eax, edi
jae 0x14010b8d5
cmp qword [rbx + 0x18], 0
je 0x14010b8b5
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], 0
je 0x14010b8d5
movzx ecx, byte [rbx + 0x128]
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, rbx
call fcn.1401085b0
mov esi, eax
test eax, eax
je 0x14010b870
jmp 0x14010b955
test esi, esi
jne 0x14010b955
cmp dword [rbx + 0xd0], 9
je 0x14010b955
xorps xmm0, xmm0
movups xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x60], r13
mov qword [rbp + 0x68], r13
mov ecx, 0x20
call fcn.1400c9d40
mov rdx, rax
mov qword [rbp + 0x50], rax
mov qword [rbp + 0x60], 0x1e
mov qword [rbp + 0x68], 0x1f
movups xmm0, xmmword [str.Device_failed_to_validate_data]
movups xmmword [rax], xmm0
movsd xmm0, qword [0x14029cd28]
movsd qword [rax + 0x10], xmm0
mov ecx, dword [0x14029cd30]
mov dword [rax + 0x18], ecx
movzx eax, word [0x14029cd34]
mov word [rdx + 0x1c], ax
mov byte [rdx + 0x1e], 0
lea r8, [rbp + 0x50]
mov edx, 0xfffffff8
lea rcx, [rbx + 0x50]
call fcn.140103fd0
mov esi, eax
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
mov rcx, r14
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
lea edi, [rsi + 1]
cmp dword [rbx + 0xd0], 9
jne 0x14010ba21
movzx edx, byte [rbx + 0x139]
mov word [rbp + 0x50], 0x405
mov byte [rbp + 0x52], reloc.WS2_32.dll_inet_ntoa
mov word [rbp + 0x54], di
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], r13
sub rdx, 5
mov byte [rsp + 0x40], 0
je 0x14010b9b5
lea r8, [rsp + 0x40]
lea rcx, [rbp + 0x58]
call fcn.14000cbf0
nop
mov rcx, qword [rbp + 0x58]
cmp qword [rbp + 0x60], rcx
je 0x14010c12b
mov byte [rcx], 0
lea rdx, [rbp + 0x50]
mov rcx, rbx
call fcn.140109e50
mov esi, eax
test eax, eax
jne 0x14010b9df
mov dword [rbx + 0xd0], r13d
mov rcx, qword [rbp + 0x58]
test rcx, rcx
je 0x14010ba19
mov rdx, qword [rbp + 0x68]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010ba14
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c125
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
cmp dword [rbx + 0xd0], 0
jne 0x14010bb1e
mov rcx, rbx
call fcn.14010e2a0
mov esi, eax
mov edi, 0x3c
lea rcx, str.HID_RESTART_DELAY_SEC
call fcn.1400de564
test rax, rax
je 0x14010ba62
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.1400dbbdc
test eax, eax
cmove eax, edi
mov edi, eax
imul r15d, edi, 0x3e8
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call fcn.1400c9d40
mov rdi, rax
mov qword [rsp + 0x48], rax
xor eax, eax
mov qword [rdi], rax
mov qword [rdi + 8], rax
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea rcx, [rdi + 8]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
nop word [rax + rax]
lea rcx, [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rcx, qword [rsp + 0x48]
sub rcx, qword [rdi]
mov rax, r13
cmovns rax, rcx
imul rax, rax, 0x3e8
cqo
idiv qword [rdi + 8]
cmp eax, r15d
jae 0x14010baea
cmp qword [rbx + 0x18], 0
je 0x14010badd
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], 0
je 0x14010baea
mov ecx, 0x3e8
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x14010baa0
mov r15d, 1
cmp qword [rbx + 0x18], 0
je 0x14010bb07
mov rax, qword [rbx + 8]
movzx r12d, r12b
cmp byte [rax + 0x32], 0
cmove r12d, r15d
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
mov rcx, rdi
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
jmp 0x14010bb29
mov r15d, 1
jmp 0x14010bb29
mov r15d, edi
xor r8d, r8d
mov edx, dword [rbx + 0xa0]
mov rcx, rbx
call fcn.14010b310
mov esi, eax
mov dword [rsp + 0x50], r13d
test eax, eax
jne 0x14010bbf4
xor r8d, r8d
mov edx, dword [rbx + 0xa0]
lea rcx, [rsp + 0x50]
call qword [sym.imp.SETUPAPI.dll_CM_Get_Child]
mov edi, eax
test eax, eax
jne 0x14010bb76
xor r8d, r8d
mov edx, dword [rsp + 0x50]
mov rcx, rbx
call fcn.14010b310
mov esi, eax
jmp 0x14010bbf4
lea rcx, [rsp + 0x60]
call fcn.140006e00
nop
lea rdx, str.Failed_to_get_Child_Device_Instance_for
lea rcx, [rsp + 0x60]
call fcn.14000a250
mov edx, dword [rbx + 0xa0]
mov rcx, rax
call fcn.140006f20
mov rcx, rax
lea rdx, [0x14029cc80]
call fcn.14000a250
mov edx, edi
mov rcx, rax
call fcn.140006f20
mov rcx, rax
lea rdx, [0x14029cc78]
call fcn.14000a250
lea rdx, [rbp + 0x50]
lea rcx, [rsp + 0x68]
call fcn.140008e10
lea r8, [rbp + 0x50]
mov edx, 0xfffffff8
lea rcx, [rbx + 0x50]
call fcn.140103fd0
mov esi, eax
lea rcx, [rsp + 0x60]
call fcn.140004d60
lea rdi, [rbx + 0xb0]
mov rdx, rdi
lea rcx, [rbp + 0x70]
call fcn.1400078d0
nop
mov qword [rdi + 0x10], r13
cmp qword [rdi + 0x18], 0xf
jbe 0x14010bc16
mov rdi, qword [rdi]
mov byte [rdi], 0
test esi, esi
jne 0x14010bd42
mov r14d, dword [rsp + 0x50]
mov esi, r13d
mov r8b, 1
mov edx, r14d
mov rcx, rbx
call fcn.14010b310
test eax, eax
jne 0x14010bc50
mov edx, r14d
mov rcx, rbx
call fcn.14010adc0
mov esi, eax
test eax, eax
jne 0x14010bcc6
nop dword [rax]
xor r8d, r8d
mov edx, r14d
lea rcx, [rsp + 0x48]
call qword [sym.imp.SETUPAPI.dll_CM_Get_Child]
mov edi, eax
xor r8d, r8d
mov edx, dword [rsp + 0x48]
mov rcx, rbx
call fcn.14010b310
test edi, edi
jne 0x14010bc82
mov edx, dword [rsp + 0x48]
mov rcx, rbx
call fcn.14010ab20
xor r8d, r8d
mov edx, r14d
lea rcx, [rsp + 0x58]
call qword [sym.imp.SETUPAPI.dll_CM_Get_Sibling]
mov edi, eax
xor r8d, r8d
mov edx, dword [rsp + 0x58]
mov rcx, rbx
call fcn.14010b310
test edi, edi
je 0x14010bcb2
mov r14d, r13d
mov dword [rsp + 0x58], r13d
jmp 0x14010bcb7
mov r14d, dword [rsp + 0x58]
test r14d, r14d
je 0x14010bcc6
cmp qword [rbx + 0xc0], 0
je 0x14010bc50
test esi, esi
jne 0x14010bd42
cmp qword [rbx + 0xc0], 0
jne 0x14010bd42
xorps xmm0, xmm0
movups xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x60], r13
mov qword [rbp + 0x68], r13
lea ecx, [rsi + 0x30]
call fcn.1400c9d40
mov rdx, rax
mov qword [rbp + 0x50], rax
mov qword [rbp + 0x60], 0x23
mov qword [rbp + 0x68], 0x2f
movups xmm0, xmmword [str.Failed_to_find_device_after_restart]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x14029cda8]
movups xmmword [rax + 0x10], xmm1
movzx ecx, word [0x14029cdb8]
mov word [rax + 0x20], cx
movzx eax, byte [0x14029cdba]
mov byte [rdx + 0x22], al
mov byte [rdx + 0x23], sil
lea r8, [rbp + 0x50]
lea edx, [rsi - 0x14]
lea rcx, [rbx + 0x50]
call fcn.140103fd0
mov esi, eax
mov rdx, qword [rbp + 0x88]
cmp rdx, 0xf
jbe 0x14010bd80
inc rdx
mov rcx, qword [rbp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010bd7b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c131
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
cmp qword [rbx + 0x18], 0
je 0x14010bda0
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], sil
je 0x14010bec8
nop dword [rax]
mov edi, r13d
lea rcx, [rbx + 0xb0]
cmp qword [rbx + 0xc8], 0xf
jbe 0x14010bdbb
mov rcx, qword [rbx + 0xb0]
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0xc0000000
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.dll_CreateFileA]
cmp rax, 0xffffffffffffffff
jne 0x14010bea4
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
xorps xmm0, xmm0
movups xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x60], r13
mov qword [rbp + 0x68], r13
mov ecx, 0x30
call fcn.1400c9d40
mov qword [rbp + 0x50], rax
mov qword [rbp + 0x60], 0x24
mov qword [rbp + 0x68], 0x2f
movups xmm0, xmmword [str.Unable_to_establish_a_HID_connection]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x14029cf40]
movups xmmword [rax + 0x10], xmm1
mov ecx, dword [0x14029cf50]
mov dword [rax + 0x20], ecx
mov byte [rax + 0x24], 0
mov r9d, edi
lea r8, [rbp + 0x50]
mov edx, 0xfffffffe
mov rcx, rbx
call fcn.14010df70
mov esi, eax
mov rdx, qword [rbp + 0x68]
cmp rdx, 0xf
jbe 0x14010be91
inc rdx
mov rcx, qword [rbp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010be8c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c137
call fcn.1400c9d7c
mov edi, esi
test esi, esi
je 0x14010beab
mov ecx, 0x7d0
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x14010beab
mov qword [rbx + 0x28], rax
mov esi, r13d
inc r15w
cmp r15w, 0xa
ja 0x14010bec0
test edi, edi
jne 0x14010bda0
jmp 0x14010bec8
test edi, edi
jne 0x14010c0d5
cmp qword [rbx + 0x18], 0
je 0x14010bed9
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], 0
je 0x14010bee3
mov rcx, rbx
call fcn.140109700
mov esi, eax
test esi, esi
jne 0x14010c0d5
cmp dword [rbx + 0x108], 3
jne 0x14010c0d5
cmp qword [rbx + 0x18], 0
je 0x14010bf0d
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], sil
je 0x14010c0d5
mov r14d, 1
cmp dword [rbx + 0xd0], 0xa
jne 0x14010bfed
movzx edx, byte [rbx + 0x139]
mov word [rbp + 0x50], 0x405
mov byte [rbp + 0x52], SafeArrayGetDim
mov word [rbp + 0x54], r14w
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], r13
sub rdx, 5
mov byte [rsp + 0x40], 0
je 0x14010bf5c
lea r8, [rsp + 0x40]
lea rcx, [rbp + 0x58]
call fcn.14000cbf0
nop
mov rcx, qword [rbp + 0x58]
cmp qword [rbp + 0x60], rcx
je 0x14010c13d
mov byte [rcx], 0
lea rdx, [rbp + 0x50]
mov rcx, rbx
call fcn.140109e50
mov esi, eax
test eax, eax
jne 0x14010bfab
movzx ecx, byte [rbx + 0x138]
call fcn.1400ca4ec
mov rdi, rax
lea r9d, [rsi + 0xb]
mov r8b, SafeArrayGetDim
mov rdx, rax
mov rcx, rbx
call fcn.140109a90
mov esi, eax
mov rcx, rdi
call fcn.1400c9d7c
nop
mov rcx, qword [rbp + 0x58]
test rcx, rcx
je 0x14010bfe5
mov rdx, qword [rbp + 0x68]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010bfe0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c125
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
cmp dword [rbx + 0xd0], 0xb
jne 0x14010c0cd
movzx edx, byte [rbx + 0x139]
mov word [rbp + 0x50], 0x405
mov byte [rbp + 0x52], reloc.OLEAUT32.dll_SafeArrayGetDim
mov word [rbp + 0x54], r14w
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x58], xmm0
mov qword [rbp + 0x68], r13
sub rdx, 5
mov byte [rsp + 0x40], 0
je 0x14010c036
lea r8, [rsp + 0x40]
lea rcx, [rbp + 0x58]
call fcn.14000cbf0
nop
mov rcx, qword [rbp + 0x58]
cmp qword [rbp + 0x60], rcx
je 0x14010c143
mov byte [rcx], 0
lea rdx, [rbp + 0x50]
mov rcx, rbx
call fcn.140109e50
mov esi, eax
test eax, eax
jne 0x14010c093
movzx ecx, byte [rbx + 0x139]
call fcn.1400ca4ec
mov rdi, rax
lea r9d, [rsi + 0xc]
mov r8b, reloc.WS2_32.dll_select
mov rdx, rax
mov rcx, rbx
call fcn.140109a90
mov esi, eax
test eax, eax
jne 0x14010c08a
mov dword [rbx + 0x108], 4
mov rcx, rdi
call fcn.1400c9d7c
nop
mov rcx, qword [rbp + 0x58]
test rcx, rcx
je 0x14010c0c9
mov rdx, qword [rbp + 0x68]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x14010c0c4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14010c125
call fcn.1400c9d7c
test esi, esi
jne 0x14010c0d5
mov rcx, rbx
call fcn.140109040
cmp qword [rbx + 0x18], 0
je 0x14010c0f3
mov rax, qword [rbx + 8]
cmp byte [rax + 0x32], 0
jne 0x14010c0f3
test r12b, r12b
jne 0x14010c0f3
mov rcx, rbx
call fcn.140109040
mov eax, esi
mov rcx, qword [rbp + 0x90]
xor rcx, rsp
call fcn.1400c9d20
lea r11, [rsp + 0x1a0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1400d4b64
nop
call fcn.140008df0
nop
call fcn.1400d4b64
int3
call fcn.1400d4b64
nop
call fcn.140008df0
nop
call fcn.140008df0
int3