Function at 0x4524f0
Capabilities:
Reference wmi statements

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5658a6
mov eax, dword fs:[0]
push eax
sub esp, 0x460
mov eax, dword [0x639ac0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x450], eax
mov dword [ebp - 0x444], edi
call fcn.00455b90
test al, al
je 0x452545
push str.WMI:_Get_SerialPortDetails
call fcn.00455a00
add esp, 4
call fcn.00456860
test al, al
jne 0x4529fb
push 0x5c4610
lea ecx, [ebp - 0x448]
mov dword [ebp - 0x43c], 0
call fcn.004380b0
push str.SELECT__FROM_Win32_SerialPort
lea ecx, [ebp - 0x46c]
mov dword [ebp - 4], 0
call fcn.004380b0
lea eax, [ebp - 0x468]
mov dword [ebp - 0x44c], 0
push eax
mov dword [ebp - 0x454], 0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov edi, dword [ebp - 0x46c]
mov byte [ebp - 4], 2
test edi, edi
je 0x4525b6
mov ecx, dword [edi]
jmp 0x4525b8
xor ecx, ecx
mov esi, dword [ebp - 0x448]
test esi, esi
je 0x4525c6
mov edx, dword [esi]
jmp 0x4525c8
xor edx, edx
mov eax, dword [ebp - 0x450]
lea esi, [ebp - 0x43c]
push esi
push 0
push 0x20
mov eax, dword [eax]
push ecx
push edx
push dword [ebp - 0x450]
call dword [eax + 0x50]
mov esi, dword [ebp - 0x448]
test eax, eax
jns 0x4526aa
call fcn.00455b90
test al, al
je 0x45260a
push str.WMI:_Get_WMI_info_failed__1_
call fcn.00455a00
add esp, 4
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ecx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
or eax, 0xffffffff
test edi, edi
je 0x452666
lock xadd dword [edi + 8], eax
dec eax
jne 0x452663
mov eax, dword [edi]
test eax, eax
je 0x45263b
push eax
call ecx
mov dword [edi], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x452652
push eax
call fcn.004f69ed
add esp, 4
mov dword [edi + 4], 0
push 0xc
push edi
call fcn.004f6a22
mov ecx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
add esp, 8
or eax, 0xffffffff
test esi, esi
je 0x4526a3
lock xadd dword [esi + 8], eax
dec eax
jne 0x4526a3
mov eax, dword [esi]
test eax, eax
je 0x452681
push eax
call ecx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x452698
push eax
call fcn.004f69ed
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.004f6a22
add esp, 8
xor eax, eax
jmp 0x452dcb
mov eax, dword [ebp - 0x43c]
lea edx, [ebp - 0x454]
push edx
lea edx, [ebp - 0x44c]
mov dword [ebp - 0x450], 0
push edx
mov ecx, dword [eax]
push 1
push 0x2710
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x452949
mov ecx, dword [ebp - 0x444]
lea eax, [ecx + 0x3f978]
mov dword [ebp - 0x458], eax
lea eax, [ecx + 0x41278]
mov dword [ebp - 0x444], eax
nop dword [eax + eax]
cmp dword [ebp - 0x454], 0
je 0x452949
cmp dword [ebp - 0x450], 0x40
jge 0x452949
mov eax, dword [ebp - 0x44c]
lea edx, [ebp - 0x468]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.DeviceID
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x452794
cmp word [ebp - 0x468], 8
jne 0x452794
sub esp, 0x10
mov eax, esp
mov dword [ebp - 0x438], eax
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x468]
push eax
push dword [ebp - 0x438]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
test eax, eax
js 0x452de8
mov eax, dword [ebp - 0x458]
add eax, 0xfffff380
push eax
call fcn.00453c30
add esp, 0x14
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x44c]
lea edx, [ebp - 0x468]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.Description
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x452808
cmp word [ebp - 0x468], 8
jne 0x452808
sub esp, 0x10
mov eax, esp
mov dword [ebp - 0x438], eax
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x468]
push eax
push dword [ebp - 0x438]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
test eax, eax
js 0x452de8
push dword [ebp - 0x458]
call fcn.00453c30
add esp, 0x14
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x44c]
lea edx, [ebp - 0x468]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.ProviderType
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x452882
cmp word [ebp - 0x468], 8
jne 0x452882
sub esp, 0x10
mov eax, esp
mov dword [ebp - 0x438], eax
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x468]
push eax
push dword [ebp - 0x438]
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
test eax, eax
js 0x452de8
mov eax, dword [ebp - 0x458]
add eax, 0xc80
push eax
call fcn.00453c30
add esp, 0x14
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x44c]
lea edx, [ebp - 0x468]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.MaxBaudRate
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x4528c9
cmp word [ebp - 0x468], 3
jne 0x4528c9
mov ecx, dword [ebp - 0x444]
mov eax, dword [ebp - 0x460]
mov dword [ecx], eax
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x444]
push dword [eax]
mov eax, dword [ebp - 0x458]
push eax
add eax, 0xfffff380
push eax
push dword [ebp - 0x450]
push str.Index:__d_Dev_ID:__s_Desc:__s_baud:__d
push 0x6411e0
call fcn.00432fe0
push 0x6411e0
call fcn.00455a00
mov eax, dword [ebp - 0x44c]
add esp, 0x1c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x43c]
lea edx, [ebp - 0x454]
inc dword [ebp - 0x450]
add dword [ebp - 0x444], 4
add dword [ebp - 0x458], 0x32
mov ecx, dword [eax]
push edx
lea edx, [ebp - 0x44c]
push edx
push 1
push 0x2710
push eax
call dword [ecx + 0x10]
test eax, eax
jns 0x452700
mov eax, dword [ebp - 0x43c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ecx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
or eax, 0xffffffff
test edi, edi
je 0x4529b1
lock xadd dword [edi + 8], eax
dec eax
jne 0x4529ae
mov eax, dword [edi]
test eax, eax
je 0x452986
push eax
call ecx
mov dword [edi], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x45299d
push eax
call fcn.004f69ed
add esp, 4
mov dword [edi + 4], 0
push 0xc
push edi
call fcn.004f6a22
mov ecx, dword [sym.imp.OLEAUT32.dll_SysStringLen]
add esp, 8
or eax, 0xffffffff
test esi, esi
je 0x452dc6
lock xadd dword [esi + 8], eax
dec eax
jne 0x452dc6
mov eax, dword [esi]
test eax, eax
je 0x4529d4
push eax
call ecx
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4529eb
push eax
call fcn.004f69ed
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.004f6a22
add esp, 8
jmp 0x452dc6
push 0x200
lea eax, [ebp - 0x430]
push 0
push eax
call fcn.004ff750
push 0x200
lea eax, [ebp - 0x230]
push 0
push eax
call fcn.004ff750
lea eax, [edi + 0x3f978]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x448], eax
xor edx, edx
lea eax, [ebp - 0x230]
mov word [ebp - 0x14], 0
xorps xmm0, xmm0
mov dword [ebp - 0x43c], edx
sub edi, eax
movq qword [ebp - 0x20], xmm0
add esp, 0x18
mov byte [ebp - 0x431], dl
xor esi, esi
add edi, 0x3ecf8
movups xmmword [ebp - 0x30], xmm0
nop word [eax + eax]
push esi
lea eax, [ebp - 0x430]
push str._ACPIPNP0501_d4D36E978_E325_11CE_BFC1_08002BE10318
push eax
call fcn.00424a70
add esp, 0xc
test esi, esi
je 0x452a9f
cmp byte [ebp - 0x431], 1
je 0x452a9f
lea ecx, [esi + 1]
mov eax, esi
mov dword [ebp - 0x454], ecx
jmp 0x452aa8
lea eax, [esi + 1]
mov dword [ebp - 0x454], eax
push eax
lea eax, [ebp - 0x230]
push str.COM_d
push eax
call fcn.00424a70
add esp, 0xc
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x230]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
je 0x452bdf
test esi, esi
je 0x452aea
cmp byte [ebp - 0x431], 1
mov eax, esi
jne 0x452af0
mov eax, dword [ebp - 0x454]
push eax
lea eax, [ebp - 0x30]
push str..COM_d
push eax
call fcn.00424a70
add esp, 0xc
lea eax, [ebp - 0x30]
push 0
push 0
push 3
push 0
push 0
push closesocket
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x438], eax
cmp eax, 0xffffffff
je 0x452bdf
movups xmm0, xmmword [str.Serial_port]
mov edx, dword [ebp - 0x448]
lea ecx, [ebp - 0x230]
movups xmmword [edx], xmm0
movq xmm0, qword [0x574d18]
movq qword [edx + 0x10], xmm0
nop dword [eax]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [ecx + edi - 2], ax
test ax, ax
jne 0x452b50
inc dword [ebp - 0x43c]
add edx, 0x32
mov dword [ebp - 0x448], edx
add edi, 0x32
call fcn.00455b90
test al, al
je 0x452ba5
lea eax, [ebp - 0x430]
push eax
lea eax, [ebp - 0x230]
push eax
push str.GetSerialPortDetails_:_found__s____s
push 0x6411e0
call fcn.00432fe0
push 0x6411e0
call fcn.00455a00
add esp, 0x14
push dword [ebp - 0x438]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
jne 0x452bdf
mov eax, dword [ebp - 0x444]
mov byte [ebp - 0x431], 1
mov byte [eax + 0x41378], 1
call fcn.00455b90
test al, al
je 0x452bdf
push str.GetSerialPortDetails:_setting_SerialPortInfo.WinPEstartAtZero_to_true
call fcn.00455a00
add esp, 4
mov esi, dword [ebp - 0x454]
cmp esi, 0x40
jl 0x452a70
mov edx, dword [ebp - 0x43c]
mov cl, 0x41
invalid
invalid