Function at 0x448580
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x567d40
mov eax, dword fs:[0]
push eax
sub esp, 0x67c
mov eax, dword [0x640040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x660], ecx
mov dword [ebp - 0x66c], ecx
mov dword [ebp - 0x67c], ecx
mov dword [ebp - 4], 0
cmp byte [ebp + 8], 0
jne 0x4485f2
cmp byte [0x641cd0], 0
je 0x448ec3
mov eax, dword [0x641a88]
mov eax, dword [eax + 0x5cc]
cmp dword [eax - 0xc], 0
jne 0x448ec3
xorps xmm0, xmm0
movups xmmword [ebp - 0x654], xmm0
movq qword [ebp - 0x644], xmm0
mov dword [ebp - 0x63c], 0
push 0xa
lea ecx, [ebp - 0x654]
call dword [0x586bdc]
mov byte [ebp - 4], 1
mov dword [ebp - 0x658], 0
lea eax, [ebp - 0x658]
push eax
push 0x20019
push 0
push str.HARDWAREDEVICEMAPSERIALCOMM
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x448661
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x654]
call dword [sym.imp.mfc140u.dll_CStringList::CStringList]
jmp 0x448ec3
mov dword [ebp - 0x630], 0x100
mov dword [ebp - 0x634], 0x100
xor esi, esi
mov dword [ebp - 0x678], esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
lea eax, [ebp - 0x630]
push eax
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x638]
push eax
push 0
lea eax, [ebp - 0x634]
push eax
lea eax, [ebp - 0x614]
push eax
push esi
push dword [ebp - 0x658]
call edi
test eax, eax
jne 0x4487ce
lea ecx, [ebp - 0x628]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x638]
sub eax, 1
jne 0x44878b
mov dword [ebp - 0x668], eax
xor edx, edx
mov dword [ebp - 0x668], edx
cmp edx, 0x80
jge 0x448714
movzx ecx, byte [ebp + edx*2 - 0x113]
mov eax, 0x100
imul ecx, eax
movzx eax, byte [ebp + edx*2 - 0x114]
add cx, ax
mov word [ebp + edx*2 - 0x414], cx
inc edx
jmp 0x4486e0
xor eax, eax
mov dword [ebp - 0x668], eax
cmp eax, 0x100
jge 0x448734
jae 0x448f09
mov byte [ebp + eax - 0x214], 0
inc eax
jmp 0x448716
push 0
push 0
push 0x100
lea eax, [ebp - 0x214]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x414]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea eax, [ebp - 0x214]
push eax
lea ecx, [ebp - 0x65c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__20]
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp - 0x628]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__27]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x65c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea eax, [ebp - 0x628]
push eax
lea ecx, [ebp - 0x654]
call dword [sym.imp.mfc140u.dll_CStringList::AddTail_1]
mov dword [ebp - 0x630], 0x100
mov dword [ebp - 0x634], 0x100
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x628]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
inc esi
mov dword [ebp - 0x678], esi
jmp 0x448683
push dword [ebp - 0x658]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [ebp - 0x660]
lea esi, [edi + 0x5b4]
mov dword [ebp - 0x65c], esi
mov eax, dword [esi]
mov dword [ebp - 0x664], eax
test eax, eax
je 0x448aa5
lea eax, [ebp - 0x664]
push eax
call fcn.004044d0
push eax
lea ecx, [ebp - 0x61c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x650]
mov dword [ebp - 0x674], eax
test eax, eax
je 0x448889
lea eax, [ebp - 0x674]
push eax
call fcn.004044d0
push eax
lea ecx, [ebp - 0x62c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 5
push dword [ebp - 0x61c]
lea ecx, [ebp - 0x62c]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__29]
test eax, eax
jne 0x448871
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x62c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
jmp 0x448a8a
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x62c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, dword [ebp - 0x674]
jmp 0x448825
push ecx
mov ecx, esp
mov dword [ebp - 0x624], esp
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 6
mov byte [ebp - 4], 4
call fcn.00440c20
mov esi, eax
test esi, esi
je 0x448a8a
mov ecx, esi
cmp byte [esi + 0x79], 0
je 0x4489f5
call fcn.0049e990
test eax, eax
jne 0x448a8a
cmp dword [esi + 0x54], 1
jge 0x448a8a
push 1
mov ecx, 0x641e60
call fcn.004f6c10
test al, al
je 0x448a8a
push 0
mov ecx, esi
call fcn.0049ad20
test al, al
je 0x4489e9
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x80]
call eax
push eax
lea ecx, [ebp - 0x620]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__26]
mov byte [ebp - 4], 7
push dword [ebp - 0x620]
push str.Serial_Comms_Port__s_disconnected___removing
push 0x3ec
mov eax, dword [0x641a88]
add eax, 0x32c
push eax
call fcn.004ec2c0
add esp, 0x10
mov dword [ebp - 0x680], esi
mov eax, dword [edi + 0x104]
push dword [eax + 8]
mov ecx, edi
call fcn.00446cc0
mov ecx, edi
call fcn.00446c90
cmp eax, esi
jne 0x44896f
mov eax, dword [edi + 0x108]
push dword [eax + 8]
mov ecx, edi
call fcn.00446cc0
mov ecx, edi
call fcn.00446c90
cmp eax, esi
jne 0x448984
mov dword [edi + 0x584], 0
mov byte [ebp - 4], 8
lea ecx, [edi + 0xd8]
mov eax, dword [ecx]
push esi
call dword [eax + 0x28]
mov dword [ebp - 4], 7
jmp 0x4489b6
push dword [ebp - 0x620]
push str.Deleted_port__s
push 0x3ec
mov eax, dword [0x641a88]
add eax, 0x32c
push eax
call fcn.004ec2c0
add esp, 0x10
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x620]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov ecx, 0x641e60
call fcn.004f6f50
jmp 0x448a65
call fcn.0049e990
test eax, eax
jne 0x448a32
cmp dword [esi + 0x54], 1
jge 0x448a32
push dword [ebp - 0x61c]
push str.Serial_Comms_Port__s_disconnected___disabling
push 0x3ec
mov eax, dword [0x641a88]
add eax, 0x32c
push eax
call fcn.004ec2c0
add esp, 0x10
push 0
mov ecx, esi
call fcn.0049ad20
jmp 0x448a65
push 0
mov ecx, esi
call fcn.004a7a80
mov ecx, esi
call fcn.004a7710
push dword [ebp - 0x61c]
push str.Serial_Comms_Port__s_disconnected_but_has_devices_using_it
push 0x3ec
mov eax, dword [0x641a88]
add eax, 0x32c
push eax
call fcn.004ec2c0
add esp, 0x10
mov eax, dword [0x641b70]
test eax, eax
je 0x448a8a
mov eax, dword [eax + 0xfc]
test eax, eax
je 0x448a8a
push 0
push 0
push 0x43c
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageW]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x61c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, dword [ebp - 0x664]
jmp 0x4487f4
mov eax, dword [ebp - 0x650]
mov dword [ebp - 0x664], eax
mov esi, dword [ebp - 0x65c]
test eax, eax
je 0x448e6f
lea eax, [ebp - 0x664]
push eax
call fcn.004044d0
push eax
lea ecx, [ebp - 0x618]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 0xa
mov eax, dword [esi]
mov dword [ebp - 0x66c], eax
test eax, eax
je 0x448b48
lea eax, [ebp - 0x66c]
push eax
call fcn.004044d0
push eax
lea ecx, [ebp - 0x624]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 0xb
push dword [ebp - 0x618]
lea ecx, [ebp - 0x624]
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__29]
test eax, eax
jne 0x448b30
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x624]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
jmp 0x448d65
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x624]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, dword [ebp - 0x66c]
jmp 0x448ae4
push ecx
mov ecx, esp
mov dword [ebp - 0x674], esp
lea eax, [ebp - 0x618]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 0xc
mov byte [ebp - 4], 0xa
call fcn.00440c20
mov esi, eax
mov dword [ebp - 0x670], esi
test esi, esi
jne 0x448d80
push 0x26c
call dword [sym.imp.mfc140u.dll_operator]
add esp, 4
mov esi, eax
mov dword [ebp - 0x620], esi
mov byte [ebp - 4], 0xd
test esi, esi
je 0x448bdf
push 0x26c
push 0
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push 0
push 0
push 0
add edi, 0xd8
push edi
push ecx
mov ecx, esp
mov dword [ebp - 0x684], esp
lea eax, [ebp - 0x618]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 0xe
mov byte [ebp - 4], 0xd
mov ecx, esi
call fcn.0049a610
mov esi, eax
jmp 0x448bed
xor esi, esi
mov edi, dword [ebp - 0x67c]
add edi, 0xd8
mov byte [ebp - 4], 0xa
mov dword [ebp - 0x670], esi
test esi, esi
je 0x448d59
push 3
mov ecx, esi
call fcn.0049ec50
mov ecx, esi
call fcn.0049d530
test al, al
jne 0x448ce4
mov ecx, esi
call fcn.004a7290
mov edi, eax
test edi, edi
je 0x448ccc
mov edx, dword [edi]
push 3
mov ecx, edi
mov edx, dword [edx + 4]
call edx
test al, al
je 0x448ccc
sub esp, 8
push 1
push 0x7d
push 0x190
push 0x493e0
push 1
push 0
push 0
push 2
push 0
push 8
push 0x2580
push ecx
mov ecx, esp
mov dword [ebp - 0x688], esp
lea eax, [ebp - 0x618]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__30]
mov byte [ebp - 4], 0xf
mov byte [ebp - 4], 0xa
mov ecx, edi
call fcn.00411400
mov eax, dword [edi]
push 1
push 1
push 0
push 0
push 0
push 0
mov ecx, edi
mov eax, dword [eax + 0x2c]
call eax
cmp al, 1
jne 0x448cb4
mov ecx, dword [ebp - 0x660]
add ecx, 0xd8
mov eax, dword [ecx]
push esi
call dword [eax + 0x20]
mov ecx, str.Serial_Comms_Port__s_connected___adding
jmp 0x448cf1
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 4]
xor esi, esi
mov dword [ebp - 0x670], esi
mov ecx, str.Serial_Comms_Port__s_connected__but_failed_to_connect___ignoring
jmp 0x448cf1
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 4]
xor esi, esi
mov dword [ebp - 0x670], esi
mov ecx, str.Serial_Comms_Port__s_connected__but_wrong_type__internal_error____ignoring
jmp 0x448cf1
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x20]
mov ecx, str.Serial_Comms_Port__s_connected___re_adding
mov eax, dword [0x641a88]
add eax, 0x32c
push dword [ebp - 0x618]
push ecx
push 0x3ec
push eax
call fcn.004ec2c0
add esp, 0x10
test esi, esi
je 0x448d59
push 1
mov ecx, esi
call fcn.0049ad20
mov ecx, esi
call fcn.004a7830
mov ecx, esi
call fcn.004a7710
push 0
mov ecx, esi
call fcn.004a7a80
mov eax, dword [0x641b70]
test eax, eax
je 0x448d59
mov eax, dword [eax + 0xfc]
test eax, eax
je 0x448d59
push 0
push 0
push 0x43c
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageW]
mov edi, dword [ebp - 0x660]
mov esi, dword [ebp - 0x65c]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x618]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, dword [ebp - 0x664]
jmp 0x448ab7
mov ecx, esi
cmp byte [esi + 0x78], 0
jne 0x448e29
call fcn.0049d530
cmp al, 1
jne 0x448dd7
cmp byte [esi + 0x78], 0
je 0x448df7
mov ecx, esi
call fcn.004a7830
mov ecx, esi
call fcn.004a7710
push 0
mov ecx, esi
call fcn.004a7a80
push dword [ebp - 0x618]
push str.Serial_Comms_Port__s_reconnected___re_enabling
push 0x3ec
mov eax, dword [0x641a88]
add eax, 0x32c
push eax
call fcn.004ec2c0
add esp, 0x10
jmp 0x448df7
push 1
mov ecx, esi
call fcn.0049ad20
mov ecx, esi
call fcn.004a7830
mov ecx, esi
call fcn.004a7710
push 0
mov ecx, esi
call fcn.004a7a80
mov eax, dword [0x641b70]
test eax, eax
je 0x448d5f
mov eax, dword [eax + 0xfc]
test eax, eax
je 0x448d5f
push 0
push 0
push 0x43c
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x448d5f
call fcn.004a7830
mov ecx, esi
call fcn.004a7710
push 0
mov ecx, esi
call fcn.004a7a80
mov eax, dword [0x641b70]
test eax, eax
je 0x448d5f
mov eax, dword [eax + 0xfc]
test eax, eax
je 0x448d5f
push esi
push 1
push 0x43c
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x448d5f
lea ecx, [edi + 0x5b0]
call dword [sym.imp.mfc140u.dll_CStringList::RemoveAll]
mov eax, dword [ebp - 0x650]
mov dword [ebp - 0x660], eax
test eax, eax
je 0x448eac
lea eax, [ebp - 0x660]
push eax
call fcn.004044d0
push eax
lea ecx, [edi + 0x5b0]
call dword [sym.imp.mfc140u.dll_CStringList::AddTail_1]
mov eax, dword [ebp - 0x660]
jmp 0x448e87
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x654]
call dword [sym.imp.mfc140u.dll_CStringList::CStringList]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0055c86d
mov esp, ebp
pop ebp
ret 4
call fcn.0055c99e
int3