Function at 0x1002c840
Capabilities:
Query or enumerate registry value

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10062213
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x408
mov eax, dword [0x10079040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov byte [ebp - 0x399], dl
mov byte [ebp - 0x391], cl
push 0xef
push str.detectSerialDevices
push str._s:_d_n
call fcn.10006b50
mov ax, word [0x100723cc]
add esp, 0xc
movq xmm0, qword [str.CCVIRTPORT]
mov esi, dword [sym.imp.SETUPAPI.dll_SetupDiClassGuidsFromNameA]
mov word [ebp - 0x18], ax
mov al, byte [0x100723ce]
mov byte [ebp - 0x16], al
lea eax, [ebp - 0x33c]
push eax
push 0
push 0
push str.Ports
movq qword [ebp - 0x20], xmm0
mov dword [ebp - 0x398], 9
call esi
push ecx
push dword [ebp - 0x33c]
xorps xmm0, xmm0
mov dword [ebp - 0x35c], 0
lea ecx, [ebp - 0x364]
movq qword [ebp - 0x364], xmm0
call fcn.1001f170
lea eax, [ebp - 0x33c]
mov dword [ebp - 4], 0
push eax
push dword [ebp - 0x33c]
push dword [ebp - 0x364]
push str.Ports
call esi
push 2
push 0
push 0
push dword [ebp - 0x364]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov esi, eax
xor ecx, ecx
mov dword [ebp - 0x3a0], esi
jmp 0x1002c956
mov esi, dword [ebp - 0x3a0]
mov eax, ecx
mov dword [ebp - 0x388], 0x1c
inc ecx
mov dword [ebp - 0x3a4], ecx
lea ecx, [ebp - 0x388]
push ecx
push eax
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x1002d3a9
push 1
push 1
push 0
push 1
lea eax, [ebp - 0x388]
push eax
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov ecx, dword [ebp - 0x3a4]
mov dword [ebp - 0x3a8], eax
cmp eax, 0xffffffff
je 0x1002c956
lea ecx, [ebp - 0x38c]
mov dword [ebp - 0x38c], 0x100
push ecx
lea ecx, [ebp - 0x320]
mov dword [ebp - 0x340], 0
push ecx
lea ecx, [ebp - 0x340]
push ecx
push 0
push str.PortName
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp - 0x320]
push eax
push str.queried_port_____s
lea eax, [ebp - 0x220]
push 0x200
push eax
call fcn.10018d40
lea eax, [ebp - 0x220]
push eax
push 0x116
push str.detectSerialDevices
push str._s:_d___s__n
call fcn.10006b50
mov eax, dword [ebp - 0x38c]
lea ecx, [ebp - 0x338]
add esp, 0x20
mov dword [ebp - 0x328], 0
dec eax
mov dword [ebp - 0x324], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x338], xmm0
push eax
lea eax, [ebp - 0x320]
push eax
call fcn.10006da0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x338]
mov esi, dword [ebp - 0x324]
cmp esi, 0xf
mov edi, dword [ebp - 0x338]
mov eax, dword [ebp - 0x328]
cmova ecx, edi
mov dword [ebp - 0x390], ecx
cmp eax, 3
jb 0x1002d351
add eax, 0xfffffffe
add eax, ecx
sub eax, ecx
push eax
push 0x43
push ecx
call fcn.100380f0
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x1002d351
nop
movzx eax, byte [ecx]
cmp al, 0x43
jne 0x1002cabb
movzx eax, byte [ecx + 1]
cmp al, 0x4f
jne 0x1002cabb
movzx eax, byte [ecx + 2]
cmp al, 0x4d
jne 0x1002cabb
xor eax, eax
jmp 0x1002cac0
sbb eax, eax
or eax, 1
test eax, eax
je 0x1002caf3
mov edx, dword [ebp - 0x328]
inc ecx
lea eax, [edx - 2]
add eax, dword [ebp - 0x390]
sub eax, ecx
push eax
push 0x43
push ecx
call fcn.100380f0
mov esi, dword [ebp - 0x324]
mov ecx, eax
add esp, 0xc
test ecx, ecx
jne 0x1002caa0
jmp 0x1002d351
sub ecx, dword [ebp - 0x390]
cmp ecx, 0xffffffff
je 0x1002d351
push 0
push 0x100
push 0x1007db28
lea eax, [ebp - 0x36c]
push eax
push 1
lea eax, [ebp - 0x388]
push eax
push dword [ebp - 0x3a0]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
mov esi, eax
lea eax, [ebp - 0x320]
push 0x1007db28
push eax
push str.portName__s___hardwareId__s_
lea eax, [ebp - 0x220]
push 0x200
push eax
call fcn.10018d40
add esp, 0x14
lea eax, [ebp - 0x220]
push eax
push 0x11e
push str.detectSerialDevices
push str._s:_d___s__n
call fcn.10006b50
add esp, 0x10
cmp esi, 1
jne 0x1002cd94
lea eax, [ebp - 0x20]
push eax
push 0x1007db28
call fcn.10037380
add esp, 8
test eax, eax
je 0x1002cd94
cmp byte [ebp - 0x391], 0
mov edi, dword [ebp - 0x338]
je 0x1002cc73
mov eax, dword [0x1007b93c]
xor dl, dl
mov dword [ebp - 0x390], edx
mov esi, dword [eax]
cmp esi, eax
je 0x1002cc73
nop dword [eax + eax]
mov ecx, dword [esi + 8]
cmp dword [ecx], 3
jne 0x1002cc0e
mov edx, dword [ecx + 0x14]
lea eax, [ebp - 0x338]
add ecx, 4
cmp dword [ebp - 0x324], 0xf
cmova eax, edi
cmp dword [ecx + 0x14], 0xf
jbe 0x1002cbe6
mov ecx, dword [ecx]
push dword [ebp - 0x328]
push eax
call fcn.10015bc0
mov edx, dword [ebp - 0x390]
add esp, 8
test al, al
movzx edx, dl
mov eax, 1
cmovne edx, eax
mov dword [ebp - 0x390], edx
mov eax, dword [esi]
mov esi, eax
cmp eax, dword [0x1007b93c]
jne 0x1002cbc0
test dl, dl
je 0x1002cc73
mov esi, dword [ebp - 0x3a0]
mov ecx, dword [ebp - 0x3a4]
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x324]
cmp eax, 0xf
jbe 0x1002c956
lea ecx, [eax + 1]
mov eax, edi
cmp ecx, 0x1000
jb 0x1002cc5e
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1002d433
push ecx
push edi
call fcn.100337ea
mov ecx, dword [ebp - 0x3a4]
add esp, 8
jmp 0x1002c956
cmp byte [ebp - 0x399], 0
jne 0x1002d34b
cmp dword [ebp - 0x324], 0xf
lea edx, [ebp - 0x338]
push 3
cmova edx, edi
xor ecx, ecx
push 0x1007029e
call fcn.1000d950
mov esi, eax
add esp, 8
test esi, esi
je 0x1002d345
mov eax, dword [esi + 0x800018]
mov dword [esi + 0x800040], 0x8210
cmp dword [0x1007b940], 0x15555555
mov edi, dword [0x1007b93c]
mov dword [ebp - 0x390], eax
je 0x1002d424
mov dword [ebp - 0x3b0], 0x1007b93c
mov byte [ebp - 4], 2
push 0xc
mov dword [ebp - 0x3ac], 0
call fcn.100334a0
mov ecx, eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x390]
add esp, 4
mov dword [ebp - 0x3ac], 0
mov dword [ecx + 8], eax
inc dword [0x1007b940]
mov eax, dword [edi + 4]
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov dword [edi + 4], ecx
mov dword [eax], ecx
cmp dword [0x1007b95c], 0x15555555
mov edi, dword [esi + 0x800018]
mov esi, dword [0x1007b958]
je 0x1002d424
mov dword [ebp - 0x3b8], 0x1007b958
mov byte [ebp - 4], 3
push 0xc
mov dword [ebp - 0x3b4], 0
call fcn.100334a0
mov ecx, eax
mov dword [ebp - 0x3b4], 0
add esp, 4
mov dword [ebp - 0x398], 0
mov dword [ecx + 8], edi
inc dword [0x1007b95c]
mov eax, dword [esi + 4]
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov dword [esi + 4], ecx
mov dword [eax], ecx
jmp 0x1002d345
cmp byte [ebp - 0x391], 0
jne 0x1002d345
push str.VID_11FAPID_8211
push 0x1007db28
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1002cfac
push 0x2c4
call fcn.100334a0
mov esi, eax
add esp, 4
mov dword [ebp - 0x3dc], esi
push 0x2c4
push 0
push esi
mov byte [ebp - 4], 4
call fcn.10037990
add esp, 0xc
lea eax, [ebp - 0x338]
cmp dword [ebp - 0x324], 0xf
mov ecx, esi
cmova eax, dword [ebp - 0x338]
push 0
push 0x1007029e
push eax
push 0
call fcn.100071b0
mov edi, eax
mov byte [ebp - 4], 1
test edi, edi
je 0x1002d345
push 0x800094
call fcn.100334a0
mov esi, eax
add esp, 4
mov dword [ebp - 0x3e0], esi
push 0x800094
push 0
push esi
mov byte [ebp - 4], 5
call fcn.10037990
add esp, 0xc
lea eax, [ebp - 0x338]
cmp dword [ebp - 0x324], 0xf
mov ecx, esi
cmova eax, dword [ebp - 0x338]
push 0
push eax
call fcn.10006ef0
mov byte [ebp - 4], 6
lea ecx, [esi + 0x800078]
push 0x1007b5f0
mov dword [esi], vtable.CodeDeviceSerial.0
mov dword [esi + 0x800074], 0
call fcn.10013570
mov dword [esi + 0x800090], 0
lea eax, [ebp - 0x338]
mov byte [ebp - 4], 1
mov dword [edi + 0x34], esi
cmp dword [ebp - 0x324], 0xf
cmova eax, dword [ebp - 0x338]
push eax
push str._s_is_added_as_inactive_PHYSICAL_Port
lea eax, [ebp - 0x220]
push 0x200
push eax
call fcn.10018d40
lea eax, [ebp - 0x220]
push eax
push 0x147
push str.detectSerialDevices
push str._s:_d___s__n
call fcn.10006b50
mov eax, dword [edi + 0x34]
add esp, 0x20
mov dword [eax + 0x800018], edi
cmp dword [0x1007b95c], 0x15555555
mov esi, dword [0x1007b958]
je 0x1002d424
mov dword [ebp - 0x3c0], 0x1007b958
mov byte [ebp - 4], 7
push 0xc
mov dword [ebp - 0x3bc], 0
call fcn.100334a0
mov ecx, eax
mov byte [ebp - 4], 1
add esp, 4
mov dword [ebp - 0x3bc], 0
mov dword [ecx + 8], edi
inc dword [0x1007b95c]
mov eax, dword [esi + 4]
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov dword [esi + 4], ecx
mov dword [eax], ecx
cmp dword [0x1007b940], 0x15555555
mov esi, dword [0x1007b93c]
je 0x1002d424
mov dword [ebp - 0x3c8], 0x1007b93c
mov byte [ebp - 4], 8
push 0xc
mov dword [ebp - 0x3c4], 0
call fcn.100334a0
mov ecx, eax
mov dword [ebp - 0x3c4], 0
add esp, 4
mov dword [ebp - 0x398], 0
mov dword [ecx + 8], edi
inc dword [0x1007b940]
mov eax, dword [esi + 4]
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov dword [esi + 4], ecx
mov dword [eax], ecx
jmp 0x1002d345
cmp dword [ebp - 0x324], 0xf
lea edx, [ebp - 0x338]
push 4
cmova edx, dword [ebp - 0x338]
xor ecx, ecx
push 0x1007029e
call fcn.1000d950
mov esi, eax
add esp, 8
test esi, esi
je 0x1002d0b9
mov eax, dword [esi + 0x800018]
mov dword [esi + 0x800040], 0x8211
cmp dword [0x1007b940], 0x15555555
mov edi, dword [0x1007b93c]
mov dword [ebp - 0x390], eax
je 0x1002d424
mov dword [ebp - 0x3d0], 0x1007b93c
mov byte [ebp - 4], 9
push 0xc
mov dword [ebp - 0x3cc], 0
call fcn.100334a0
mov ecx, eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x390]
add esp, 4
mov dword [ebp - 0x3cc], 0
mov dword [ecx + 8], eax
inc dword [0x1007b940]
mov eax, dword [edi + 4]
mov dword [ecx], edi
mov dword [ecx + 4], eax
mov dword [edi + 4], ecx
mov dword [eax], ecx
cmp dword [0x1007b95c], 0x15555555
mov edi, dword [esi + 0x800018]
mov esi, dword [0x1007b958]
je 0x1002d424
mov dword [ebp - 0x3d8], 0x1007b958
mov byte [ebp - 4], 0xa
push 0xc
mov dword [ebp - 0x3d4], 0
call fcn.100334a0
mov ecx, eax
mov byte [ebp - 4], 1
add esp, 4
mov dword [ebp - 0x3d4], 0
mov dword [ecx + 8], edi
inc dword [0x1007b95c]
mov eax, dword [esi + 4]
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov dword [esi + 4], ecx
mov dword [eax], ecx
lea eax, [ebp - 0x368]
mov dword [ebp - 0x368], 0x100
push eax
lea eax, [ebp - 0x120]
push eax
lea eax, [ebp - 0x340]
push eax
push 0
push str.SymbolicName
push dword [ebp - 0x3a8]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
xorps xmm0, xmm0
mov dword [ebp - 0x348], 0
lea ecx, [ebp - 0x120]
mov dword [ebp - 0x344], 0
movups xmmword [ebp - 0x358], xmm0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1002d112
sub ecx, edx
lea eax, [ebp - 0x120]
push ecx
push eax
lea ecx, [ebp - 0x358]
call fcn.10006da0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x358]
cmp dword [ebp - 0x344], 0xf
mov edx, dword [ebp - 0x348]
cmova ecx, dword [ebp - 0x358]
seta byte [ebp - 0x39a]
mov dword [ebp - 0x390], ecx
mov dword [ebp - 0x398], edx
cmp edx, 0x11
jb 0x1002d201
lea eax, [edx - 0x10]
add eax, ecx
sub eax, ecx
push eax
push 0x56
push ecx
call fcn.100380f0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x1002d1fb
mov edx, edi
mov eax, str.VID_11FAPID_8211
mov esi, 0xd
nop dword [eax]
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x1002d1a1
add edx, 4
add eax, 4
sub esi, 4
jae 0x1002d190
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x1002d1c8
cmp esi, 0xfffffffd
je 0x1002d1c4
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x1002d1c8
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x1002d1c8
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
jne 0x1002d1c8
xor eax, eax
jmp 0x1002d1cd
sbb eax, eax
or eax, 1
test eax, eax
je 0x1002d398
mov ecx, dword [ebp - 0x390]
inc edi
mov eax, dword [ebp - 0x398]
add ecx, 0xfffffff0
add eax, ecx
sub eax, edi
push eax
push 0x56
push edi
call fcn.100380f0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x1002d181
mov edx, dword [ebp - 0x398]
or edi, 0xffffffff
mov dword [ebp - 0x3e8], 0
xorps xmm0, xmm0
mov dword [ebp - 0x3e4], 0
movups xmmword [ebp - 0x3f8], xmm0
cmp edx, edi
jb 0x1002d42e
mov eax, edx
lea ecx, [ebp - 0x3f8]
sub eax, edi
cmp eax, edx
cmovb edx, eax
cmp byte [ebp - 0x39a], 0
lea eax, [ebp - 0x358]
cmovne eax, dword [ebp - 0x358]
add eax, edi
push edx
push eax
call fcn.10006da0
mov ecx, dword [ebp - 0x344]
cmp ecx, 0xf
jbe 0x1002d290
mov edx, dword [ebp - 0x358]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1002d286
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1002d433
push ecx
push edx
call fcn.100337ea
add esp, 8
movups xmm0, xmmword [ebp - 0x3f8]
lea eax, [ebp - 0x358]
push eax
movups xmmword [ebp - 0x358], xmm0
lea ecx, [ebp - 0x410]
movq xmm0, qword [ebp - 0x3e8]
movq qword [ebp - 0x348], xmm0
call fcn.10013570
lea eax, [ebp - 0x338]
mov byte [ebp - 4], 0xc
push eax
lea ecx, [ebp - 0x3f8]
call fcn.10013570
lea eax, [ebp - 0x410]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x418]
mov ecx, 0x1007b85c
push eax
call fcn.100312b0
lea ecx, [ebp - 0x410]
call fcn.1002d440
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x344]
mov dword [ebp - 0x398], 0
cmp ecx, 0xf
jbe 0x1002d345
mov edx, dword [ebp - 0x358]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1002d33b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1002d433
push ecx
push edx
call fcn.100337ea
add esp, 8
mov edi, dword [ebp - 0x338]
mov esi, dword [ebp - 0x324]
mov ecx, dword [ebp - 0x3a4]
mov byte [ebp - 4], 0
cmp esi, 0xf
jbe 0x1002c950
inc esi
mov eax, edi
cmp esi, 0x1000
jb 0x1002d383
mov edi, dword [eax - 4]
add esi, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1002d433
push esi
push edi
call fcn.100337ea
mov ecx, dword [ebp - 0x3a4]
add esp, 8
jmp 0x1002c950
sub edi, dword [ebp - 0x390]
mov edx, dword [ebp - 0x398]
jmp 0x1002d204
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
push 0x168
push str.detectSerialDevices
push str._s:_d_n
call fcn.10006b50
mov edx, dword [ebp - 0x364]
add esp, 0xc
test edx, edx
je 0x1002d400
mov ecx, dword [ebp - 0x35c]
mov eax, edx
sub ecx, edx
and ecx, 0xfffffff0
cmp ecx, 0x1000
jb 0x1002d3f6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1002d433
push ecx
push edx
call fcn.100337ea
add esp, 8
mov eax, dword [ebp - 0x398]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.10033290
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push str.list_too_long
call fcn.10034182
call fcn.10006d90
call fcn.1004280a
int3