Function at 0x42f090
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
mov eax, 0x8820
call fcn.0043da10
mov eax, dword [esp + 0x8824]
push ebx
push ebp
push esi
xor ebp, ebp
push edi
cmp eax, 0x3ea
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], 0x800
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], ebp
mov edi, str.EnumFTDIBUS
jle 0x42f0cc
mov edi, str.SYSTEMCurrentControlSetEnumFTDIBUS
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x1030]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1030]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push ecx
push 0x20019
push ebp
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x42f5ac
push ebp
push ebp
mov ecx, dword [esp + 0x18]
push ebp
push ebp
push ebp
push ebp
lea eax, [esp + 0x30]
push ebp
push eax
push ebp
push ebp
push ebp
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x42f5ac
mov edx, dword [esp + 0x10]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push edx
xor edi, edi
call ebx
mov eax, dword [esp + 0x18]
cmp eax, ebp
jbe 0x42f206
lea eax, [esp + 0x10]
lea ecx, [esp + 0x1030]
push eax
push 0x20019
push ebp
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x42f1eb
lea edx, [esp + 0x28]
lea eax, [esp + 0x1c]
push edx
mov edx, dword [esp + 0x14]
push ebp
push ebp
push ebp
lea ecx, [esp + 0x40]
push eax
push ecx
push edi
push edx
mov dword [esp + 0x3c], 0x800
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x42f1eb
push 0x12
lea eax, [esp + 0x34]
push str.VID_0403PID_6001
push eax
mov dword [esp + edi*4 + 0x483c], 1
call fcn.0043e210
mov esi, eax
push 0x19
neg esi
lea ecx, [esp + 0x40]
push str.VID_0403PID_B260NHdev:A
sbb esi, esi
push ecx
inc esi
call fcn.0043e210
add esp, 0x18
neg eax
sbb eax, eax
inc eax
cmp esi, ebp
jne 0x42f270
cmp eax, ebp
jne 0x42f2a2
mov dword [esp + edi*4 + 0x2830], ebp
mov eax, dword [esp + 0x10]
inc edi
push eax
call ebx
mov eax, dword [esp + 0x18]
cmp edi, eax
jb 0x42f153
xor edi, edi
cmp eax, ebp
jbe 0x42f253
lea ebx, [esp + 0x2830]
mov esi, dword [ebx]
cmp esi, ebp
je 0x42f24b
lea ecx, [esp + 0x6830]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.0042efd0
xor ecx, ecx
cmp eax, ebp
jle 0x42f247
lea edx, [esp + 0x6830]
cmp esi, dword [edx]
je 0x42f587
inc ecx
add edx, 4
cmp ecx, eax
jl 0x42f237
mov eax, dword [esp + 0x18]
inc edi
add ebx, 4
cmp edi, eax
jb 0x42f213
mov ecx, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov dword [ecx + 0x224], 1
xor eax, eax
pop ebx
add esp, 0x8820
ret 4
mov cl, byte [esp + 0x42]
cmp cl, 0x30
jl 0x42f289
cmp cl, 0x39
jg 0x42f289
mov dword [esp + edi*4 + 0x4830], 2
cmp cl, 0x41
jl 0x42f29e
cmp cl, 0x5a
jg 0x42f29e
mov dword [esp + edi*4 + 0x4830], 3
cmp eax, ebp
je 0x42f2b4
cmp byte [esp + 0x49], 0x31
jne 0x42f2b4
mov dword [esp + edi*4 + 0x4830], 4
mov edx, dword [esp + 0x10]
push edx
call ebx
lea eax, [esp + 0x30]
lea ecx, [esp + 0x1030]
push eax
push ecx
lea edx, [esp + 0x1838]
push str._s_s
push edx
call fcn.0043da3f
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
add esp, 0x10
lea eax, [esp + 0x10]
lea ecx, [esp + 0x1830]
push eax
push 0x20019
push ebp
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x42f1eb
push ebp
push ebp
mov eax, dword [esp + 0x18]
push ebp
push ebp
push ebp
push ebp
lea edx, [esp + 0x3c]
push ebp
push edx
push ebp
push ebp
push ebp
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x42f1eb
lea ecx, [esp + 0x28]
lea edx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x28]
push ebp
push ebp
push ebp
lea eax, [esp + 0x2040]
push edx
mov edx, dword [esp + 0x24]
dec ecx
push eax
push ecx
push edx
mov dword [esp + 0x3c], 0x800
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x42f1eb
mov eax, dword [esp + 0x10]
push eax
call ebx
lea ecx, [esp + 0x2030]
lea edx, [esp + 0x30]
push ecx
lea eax, [esp + 0x1034]
push edx
push eax
lea ecx, [esp + 0x183c]
push str._s_s_s
push ecx
call fcn.0043da3f
add esp, 0x14
lea edx, [esp + 0x10]
lea eax, [esp + 0x1830]
push edx
push 0x20019
push ebp
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x42f1eb
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x830]
push ecx
push edx
push ebp
push ebp
push 0x4ae89c
push eax
mov dword [esp + 0x2c], 0x800
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x42f1eb
cmp dword [esp + 0x14], 0x800
ja 0x42f1eb
lea ecx, [esp + 0x830]
push str.FTDI
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edx, [esp + 0x834]
sub edx, 4
add eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x42f1eb
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x830]
push eax
push ecx
push ebp
push ebp
push str.ClassGUID
push edx
mov dword [esp + 0x2c], 0x800
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x42f1eb
cmp dword [esp + 0x14], 0x800
ja 0x42f1eb
lea eax, [esp + 0x830]
push str.4D36E978_E325_11CE_BFC1_08002BE10318
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x42f1eb
cmp dword [esp + 0x8834], 0x3ea
jle 0x42f4d3
mov ecx, dword [esp + 0x10]
push ecx
call ebx
lea edx, [esp + 0x2030]
lea eax, [esp + 0x30]
push edx
lea ecx, [esp + 0x1034]
push eax
push ecx
lea edx, [esp + 0x183c]
push str._s_s_sDevice_Parameters
push edx
call fcn.0043da3f
add esp, 0x14
lea eax, [esp + 0x10]
lea ecx, [esp + 0x1830]
push eax
push 0x20019
push ebp
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call esi
test eax, eax
jne 0x42f1eb
mov ecx, dword [esp + 0x10]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea edx, [esp + 0x14]
lea eax, [esp + 0x830]
push edx
push eax
push ebp
push ebp
push str.PortName
push ecx
mov dword [esp + 0x2c], 0x800
call esi
test eax, eax
jne 0x42f1eb
mov ecx, dword [esp + 0x14]
mov eax, 0x800
cmp ecx, eax
ja 0x42f1eb
cmp dword [esp + 0x8834], 0x3ea
jg 0x42f54e
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
lea edx, [esp + 0x14]
lea eax, [esp + 0x830]
push edx
push eax
push ebp
push ebp
push str.PortName
push ecx
call esi
test eax, eax
jne 0x42f1eb
mov eax, 0x800
cmp dword [esp + 0x14], eax
ja 0x42f1eb
lea edx, [esp + 0x833]
push edx
call fcn.0043e3bc
add esp, 4
cmp eax, ebp
jle 0x42f1eb
cmp eax, 0x100
jg 0x42f1eb
mov dword [esp + edi*4 + 0x2830], eax
jmp 0x42f1f2
mov eax, dword [esp + 0x20]
mov edx, dword [esp + edi*4 + 0x4830]
mov dword [eax + 0x224], edx
mov eax, dword [esp + edi*4 + 0x2830]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8820
ret 4
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8820
ret 4