Function at 0x1001dbc0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x454
mov eax, dword [0x100e7c94]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
mov dword [ebp - 0x44c], 0xffffffff
push esi
xor esi, esi
mov dword [ebp - 0x440], ebx
push edi
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0x444], 0x100dcb60
mov dword [ebp - 0x438], 4
test edx, edx
je 0x1001dd9e
mov al, byte [edx + 0x100]
lea ecx, [edx + 0x100]
mov byte [ebp - 0x439], al
test al, al
je 0x1001dccf
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001dc26
sub ecx, edi
cmp ecx, 0x26
jne 0x1001dccf
lea eax, [ebp - 0x21]
push eax
lea eax, [ebp - 0x22]
push eax
lea eax, [ebp - 0x23]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x25]
push eax
lea eax, [ebp - 0x26]
push eax
lea eax, [ebp - 0x27]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x2a]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
xor eax, eax
cmp byte [ebp - 0x439], 0x7b
push 0x100dc884
sete al
add eax, 0x100
add eax, edx
push eax
call fcn.1001c540
add esp, 0x34
cmp eax, 0xb
jne 0x1001dccf
movups xmm0, xmmword [ebp - 0x30]
mov ecx, dword [ebx + 0xc]
lea esi, [ebx + 0x10]
mov edx, dword [ebx + 0x40]
add ecx, 0x100
movups xmmword [esi], xmm0
mov dword [ebx + 0x38], 1
add edx, 0x110
mov dword [ebp - 0x444], 0
mov dword [ebp - 0x438], 0x10
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x1001dcc1
cmp dword [ebx + 0x38], 0
jne 0x1001dd9e
mov edi, dword [ebx + 0xc]
mov ah, byte [edi + 0x200]
lea edx, [edi + 0x200]
test ah, ah
je 0x1001dd9e
mov ecx, edx
lea ebx, [ecx + 1]
mov dword [ebp - 0x448], ebx
mov ebx, dword [ebp - 0x440]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001dd01
sub ecx, dword [ebp - 0x448]
cmp ecx, 0x26
jne 0x1001dd9e
cmp ah, 0x7b
jne 0x1001dd22
lea edx, [edi + 0x201]
lea eax, [ebp - 0x21]
push eax
lea eax, [ebp - 0x22]
push eax
lea eax, [ebp - 0x23]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x25]
push eax
lea eax, [ebp - 0x26]
push eax
lea eax, [ebp - 0x27]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x2a]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
push 0x100dc884
push edx
call fcn.1001c540
add esp, 0x34
cmp eax, 0xb
jne 0x1001dd9e
movups xmm0, xmmword [ebp - 0x30]
mov ecx, dword [ebx + 0xc]
lea esi, [ebx + 0x20]
mov edx, dword [ebx + 0x40]
add ecx, 0x200
movups xmmword [esi], xmm0
mov dword [ebx + 0x3c], 1
add edx, 0x310
mov dword [ebp - 0x438], 0
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x1001dd90
mov eax, dword [ebx + 0x80]
or eax, dword [ebp - 0x438]
push eax
push 0
push dword [ebp - 0x444]
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov dword [ebx + 0x44], eax
test eax, eax
je 0x1001e3e7
cmp eax, 0xffffffff
je 0x1001e3e7
lea esi, [ebx + 0x48]
mov dword [ebx + 0x64], 0x1c
lea edi, [ebx + 0x64]
mov dword [esi], 0x1c
mov dword [ebp - 0x450], esi
mov dword [ebp - 0x454], edi
nop dword [eax]
mov edx, dword [ebp - 0x44c]
mov ecx, dword [ebx + 0x44]
inc edx
cmp dword [ebx + 0x38], 0
mov dword [ebp - 0x44c], edx
je 0x1001def3
push edi
push edx
lea eax, [ebx + 0x10]
push eax
push 0
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
mov dword [ebp - 0x444], eax
test eax, eax
je 0x1001e225
mov ecx, dword [ebx + 0x40]
lea eax, [ebp - 0x434]
push esi
push eax
push 0x103
add ecx, 0x80c
push ecx
push edi
mov dword [ecx], 5
push dword [ebx + 0x44]
mov dword [ebp - 0x434], 0x103
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
test eax, eax
je 0x1001ddf0
mov eax, dword [ebx + 0x40]
mov dword [eax + 0x80b], 0
mov byte [eax + 0x80f], 0
mov edx, dword [ebx + 0x40]
lea esi, [edx + 0x810]
mov ecx, esi
lea edi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001de80
sub ecx, edi
lea eax, [edx + 0x710]
push ecx
push esi
push eax
mov dword [ebp - 0x434], ecx
call fcn.1003cc70
mov ecx, dword [ebx + 0x40]
add esp, 0xc
mov eax, dword [ebp - 0x434]
mov byte [ecx + eax + 0x810], 0
mov ecx, dword [ebx + 0x40]
mov eax, dword [ebp - 0x434]
mov byte [ecx + eax + 0x710], 0
mov ecx, dword [ebx + 0x78]
test cl, 4
jne 0x1001dee8
mov eax, dword [ebx + 0x40]
and ecx, 1
mov dword [eax + 0x914], ecx
mov eax, dword [ebx + 0x40]
cmp dword [eax + 0x914], 0
jne 0x1001df0a
test byte [ebx + 8], 2
jne 0x1001df0a
lea esi, [ebx + 0x48]
lea edi, [ebx + 0x64]
jmp 0x1001ddf0
push esi
push edx
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
mov dword [ebp - 0x444], eax
test eax, eax
je 0x1001e225
cmp dword [ebx + 0x3c], 0
jne 0x1001e06e
movzx eax, byte [ebx + 0x5b]
push eax
movzx eax, byte [ebx + 0x5a]
push eax
movzx eax, byte [ebx + 0x59]
push eax
movzx eax, byte [ebx + 0x58]
push eax
movzx eax, byte [ebx + 0x57]
mov ecx, dword [ebx + 0x40]
push eax
movzx eax, byte [ebx + 0x56]
add ecx, 0x310
push eax
movzx eax, byte [ebx + 0x55]
push eax
movzx eax, byte [ebx + 0x54]
push eax
movzx eax, word [ebx + 0x52]
push eax
movzx eax, word [ebx + 0x50]
push eax
push dword [ebx + 0x4c]
push str._08X__04X__04X__02X_02X__02X_02X_02X_02X_02X_02X
push ecx
call fcn.1001c4a0
add esp, 0x34
cmp eax, 0x26
jne 0x1001e3c3
mov esi, dword [ebx + 0xc]
mov dword [ebp - 0x448], esi
test esi, esi
je 0x1001e068
cmp byte [esi + 0x200], 0
lea eax, [esi + 0x200]
je 0x1001e068
mov edi, dword [ebx + 0x40]
mov edx, 0
mov ecx, edx
add edi, 0x310
je 0x1001e053
test eax, eax
je 0x1001e053
add esi, 0x202
mov bl, byte [edx + eax]
cmp bl, 0x2a
je 0x1001dff3
mov ah, byte [ecx + edi]
test ah, ah
je 0x1001e3c3
cmp bl, 0x3f
je 0x1001dfef
cmp ah, bl
jne 0x1001dfd1
inc edx
inc esi
jmp 0x1001e02d
mov al, ah
sub al, 0x61
cmp al, 0x19
ja 0x1001dfdc
add ah, 0xe0
mov al, bl
sub al, 0x61
cmp al, 0x19
ja 0x1001dfe7
add bl, 0xe0
cmp bl, ah
jne 0x1001e3c3
inc edx
inc esi
jmp 0x1001e02d
cmp byte [edx + eax + 1], 0x3f
jne 0x1001e068
cmp byte [edx + eax + 2], 0
je 0x1001e068
mov al, byte [ecx + edi]
test al, al
je 0x1001e01d
mov bl, byte [esi]
nop word [eax + eax]
cmp al, bl
je 0x1001e01d
mov al, byte [ecx + edi + 1]
inc ecx
test al, al
jne 0x1001e010
cmp byte [ecx + edi], 0
je 0x1001e3c3
add edx, 3
add esi, 3
mov ebx, dword [ebp - 0x448]
inc ecx
cmp byte [edx + ebx + 0x200], 0
lea eax, [ebx + 0x200]
jne 0x1001dfb1
xor eax, eax
cmp byte [edx + ebx + 0x200], al
jmp 0x1001e05d
lea ecx, [esi + 0x200]
xor eax, eax
cmp edi, ecx
sete al
test eax, eax
je 0x1001e3c3
mov ebx, dword [ebp - 0x440]
mov eax, dword [ebx + 0x40]
push 0
push 0x100
add eax, 0x210
push eax
lea eax, [ebx + 0x48]
push eax
push dword [ebx + 0x44]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdA]
test eax, eax
je 0x1001e3c3
mov eax, dword [ebx + 0x40]
push 8
add eax, 0x210
push str.USBVID_
push eax
call fcn.1006a9c4
add esp, 0xc
test eax, eax
jne 0x1001e3c3
mov edx, dword [ebx + 0xc]
mov dword [ebp - 0x438], edx
test edx, edx
je 0x1001e129
cmp byte [edx], al
je 0x1001e129
mov esi, dword [ebx + 0x40]
mov edi, eax
mov ecx, edi
add esi, 0x210
je 0x1001e3c3
mov bl, byte [edi + edx]
mov al, bl
cmp al, 0x2a
je 0x1001e1a8
mov dl, byte [ecx + esi]
test dl, dl
je 0x1001e3c3
cmp al, 0x3f
je 0x1001e115
cmp dl, bl
je 0x1001e115
mov al, dl
sub al, 0x61
cmp al, 0x19
ja 0x1001e102
add dl, 0xe0
mov al, bl
sub al, 0x61
cmp al, 0x19
ja 0x1001e10d
add bl, 0xe0
cmp bl, dl
jne 0x1001e3c3
mov edx, dword [ebp - 0x438]
inc edi
inc ecx
cmp byte [edx + edi], 0
jne 0x1001e0d7
mov ebx, dword [ebp - 0x440]
mov eax, dword [ebx + 0x40]
push 0
push 0xff
add eax, 0x610
push eax
push 0
push 4
lea eax, [ebx + 0x48]
push eax
push dword [ebx + 0x44]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
je 0x1001e3c3
mov eax, dword [ebx + 0x40]
mov edi, 0x100dc830
mov dword [eax + 0x10c], 0xffffffff
mov eax, dword [ebx + 0x40]
cmp dword [eax + 0x10c], 0xffffffff
jne 0x1001e210
cmp dword [edi], 0xffffffff
je 0x1001e210
mov esi, dword [edi + 4]
mov eax, dword [esi]
test eax, eax
je 0x1001e1fd
push eax
mov eax, dword [ebx + 0x40]
add eax, 0x610
push eax
call fcn.1006abe7
add esp, 8
test eax, eax
je 0x1001e1f2
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x1001e186
jmp 0x1001e1fd
cmp byte [edi + edx + 1], 0x3f
jne 0x1001e123
cmp byte [edi + edx + 2], 0
je 0x1001e123
mov al, byte [ecx + esi]
add edi, 2
test al, al
je 0x1001e1e3
mov dl, byte [edi + edx]
nop dword [eax + eax]
cmp al, dl
je 0x1001e1dd
mov al, byte [ecx + esi + 1]
inc ecx
test al, al
jne 0x1001e1d0
mov edx, dword [ebp - 0x438]
cmp byte [ecx + esi], 0
je 0x1001e3c3
jmp 0x1001e11b
mov ecx, dword [ebx + 0x40]
mov eax, dword [edi]
mov dword [ecx + 0x10c], eax
mov eax, dword [ebx + 0x40]
add edi, 8
cmp dword [eax + 0x10c], 0xffffffff
je 0x1001e174
cmp dword [ebx + 0x38], 0
je 0x1001e247
mov ecx, ebx
call fcn.1001d3e0
test eax, eax
jne 0x1001e3c3
push dword [ebx + 0x44]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
xor eax, eax
cmp dword [ebx + 0x34], eax
pop edi
pop esi
sete al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003acef
mov esp, ebp
pop ebp
ret
cmp dword [eax + 0x10c], 0xffffffff
jne 0x1001e29a
movups xmm0, xmmword [0x100dc850]
mov ecx, 0x100dc970
sub eax, ecx
movups xmmword [ebx + 0x10], xmm0
lea edx, [eax + 0x110]
nop dword [eax + eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x1001e270
mov eax, dword [ebx + 0x40]
mov ecx, ebx
mov dword [eax + 0x10c], 3
call fcn.1001d3e0
test eax, eax
je 0x1001e225
jmp 0x1001e3c3
push 1
push 1
push 0
push 1
lea eax, [ebx + 0x48]
push eax
push dword [ebx + 0x44]
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
test esi, esi
je 0x1001e3c3
cmp esi, 0xffffffff
je 0x1001e3c3
lea eax, [ebp - 0x434]
mov dword [ebp - 0x434], 0x400
push eax
lea eax, [ebp - 0x430]
push eax
push 0
push 0
push str.DeviceInterfaceGUIDs
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push esi
test eax, eax
je 0x1001e2fa
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x1001e3c3
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edi, edi
cmp byte [ebp - 0x430], 0
je 0x1001e3c3
lea edx, [ebp - 0x430]
mov ecx, edx
lea esi, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001e320
mov eax, dword [ebx + 0x40]
sub ecx, esi
mov dword [ebp - 0x434], ecx
add eax, 0x110
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [eax], cl
lea eax, [eax + 1]
test cl, cl
jne 0x1001e337
mov eax, dword [ebx + 0x40]
add eax, 0x110
cmp byte [eax], 0x7b
jne 0x1001e353
inc eax
lea ecx, [ebp - 0x21]
push ecx
lea ecx, [ebp - 0x22]
push ecx
lea ecx, [ebp - 0x23]
push ecx
lea ecx, [ebp - 0x24]
push ecx
lea ecx, [ebp - 0x25]
push ecx
lea ecx, [ebp - 0x26]
push ecx
lea ecx, [ebp - 0x27]
push ecx
lea ecx, [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x2a]
push ecx
lea ecx, [ebp - 0x2c]
push ecx
lea ecx, [ebp - 0x30]
push ecx
push 0x100dc884
push eax
call fcn.1001c540
add esp, 0x34
cmp eax, 0xb
jne 0x1001e3a9
movups xmm0, xmmword [ebp - 0x30]
mov ecx, ebx
movups xmmword [ebx + 0x10], xmm0
call fcn.1001d3e0
test eax, eax
je 0x1001e225
mov eax, dword [ebp - 0x434]
lea edx, [ebp - 0x430]
inc eax
add edi, eax
add edx, edi
cmp byte [edx], 0
jne 0x1001e315
cmp dword [ebp - 0x444], 0
mov ebx, dword [ebp - 0x440]
je 0x1001e225
mov esi, dword [ebp - 0x450]
mov edi, dword [ebp - 0x454]
jmp 0x1001ddf0
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1003acef
mov esp, ebp
pop ebp
ret