Function at 0x10001be0
Capabilities:
Print debug messages

Disassembly:
sub esp, 0x20
mov eax, dword [0x1001100c]
xor eax, esp
mov dword [esp + 0x1c], eax
push ebx
push esi
push edi
call fcn.100043d0
mov bl, byte [esp + 0x30]
cmp bl, 2
mov dword [0x1001402c], eax
je 0x10001c09
cmp bl, 0x20
jne 0x10001c0d
mov bl, 0x20
jmp 0x10001c19
cmp bl, 1
je 0x10001c17
cmp bl, 0x10
jne 0x10001c19
mov bl, 0x10
call sym.ssdevm.dll_int___stdcall_Is64BitSupport_void_
test eax, eax
jne 0x10001c30
call fcn.100044f0
cmp eax, 7
jne 0x10001de0
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push ebp
push str.SSPORT
call esi
push 0
push 0x80
push 2
push 0
push 0
push 0xc0000000
push str..SSPORTC
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov cl, byte [0x1000d41e]
mov ebp, eax
mov ax, word [0x1000d41c]
mov word [esp + 0x14], ax
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov word [esp + 0x28], ax
lea eax, [esp + 0x14]
mov byte [esp + 0x16], cl
lea ecx, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x10001c88
push 0
lea edx, [esp + 0x14]
push edx
push 0xa
sub eax, ecx
lea ecx, [esp + 0x2c]
push ecx
add eax, 1
push eax
lea edx, [esp + 0x28]
push edx
push 0x9c402408
push ebp
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x10001dd8
lea eax, [esp + 0x20]
push eax
call esi
mov edi, str.SCAN
lea esi, [esp + 0x20]
mov ecx, 5
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001ce5
mov byte [0x10014004], 0x20
jmp 0x10001dd8
mov edi, 0x1000d410
lea esi, [esp + 0x20]
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d05
mov byte [0x10014004], 0x21
jmp 0x10001dd8
mov edi, 0x1000d40c
lea esi, [esp + 0x20]
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d25
mov byte [0x10014004], 0x80
jmp 0x10001dd8
mov edi, str.PRINT
lea esi, [esp + 0x20]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d45
mov byte [0x10014004], 0x10
jmp 0x10001dd8
mov edi, str.SMART
lea esi, [esp + 0x20]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d62
mov byte [0x10014004], 0x77
jmp 0x10001dd8
mov edi, str.INST
lea esi, [esp + 0x20]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d7f
mov byte [0x10014004], 0x99
jmp 0x10001dd8
mov edi, str.FAXTO
lea esi, [esp + 0x20]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001d9c
mov byte [0x10014004], 0x50
jmp 0x10001dd8
mov edi, str.USEPT
lea esi, [esp + 0x20]
mov ecx, 6
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x10001db9
mov byte [0x10014004], 5
jmp 0x10001dd8
xor edx, edx
mov edi, str.FAXSM
lea esi, [esp + 0x20]
mov ecx, 6
repe cmpsb byte [esi], byte es:[edi]
setne al
sub al, 1
and eax, 0x51
mov byte [0x10014004], al
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop ebp
mov al, byte [0x10014004]
cmp al, 0xaa
jne 0x10001df0
xor al, al
mov byte [0x10014004], al
cmp bl, 1
je 0x10001e1b
cmp bl, 0x10
je 0x10001e1b
cmp dword [0x10014034], 0
jg 0x10001e07
cmp al, 5
jne 0x10001e22
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x1c]
xor ecx, esp
call fcn.10004b28
add esp, 0x20
ret
add dword [0x10014034], 1
mov edx, dword [0x10014034]
movzx ecx, al
push ecx
push edx
push str._Device_Monitor___PortAcquire:__m_acquirecount___d_m_portex___d_n
push 0x10012008
call dword [sym.imp.USER32.dll_wsprintfA]
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
add esp, 0x10
push 0x10012008
call edi
mov al, byte [0x10014004]
test al, al
je 0x10001e7f
cmp al, bl
je 0x10001e7f
push str._Device_Monitor___PortAcquire____False_n
call edi
pop edi
pop esi
mov dword [0x10014034], 0
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x1c]
xor ecx, esp
call fcn.10004b28
add esp, 0x20
ret
call sym.ssdevm.dll_int___stdcall_Is64BitSupport_void_
test eax, eax
jne 0x10001e96
call fcn.100044f0
cmp eax, 7
jne 0x1000200b
push 0
push 0x80
push 2
push 0
push 0
push 0xc0000000
push str..SSPORTC
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
xor eax, eax
cmp bl, 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov word [esp + 0x18], ax
je 0x10001fab
cmp bl, 1
je 0x10001fab
cmp bl, 0x20
je 0x10001f95
cmp bl, 2
je 0x10001f95
cmp bl, 0x21
jne 0x10001efa
mov dword [esp + 0x10], 0x414957
jmp 0x10001fc0
cmp bl, 0x80
jne 0x10001f0c
mov dword [esp + 0x10], 0x504352
jmp 0x10001fc0
cmp bl, 0x77
jne 0x10001f22
mov eax, dword [str.SMART]
mov cx, word [0x1000d400]
jmp 0x10001fb7
cmp bl, 0x99
jne 0x10001f3f
mov edx, dword [str.INST]
mov al, byte [0x1000d3f8]
mov dword [esp + 0x10], edx
mov byte [esp + 0x14], al
jmp 0x10001fc0
cmp bl, 0x50
jne 0x10001f5c
mov ecx, dword [str.FAXTO]
mov dx, word [0x1000d3f0]
mov dword [esp + 0x10], ecx
mov word [esp + 0x14], dx
jmp 0x10001fc0
cmp bl, 0x51
jne 0x10001f6f
mov eax, dword [str.FAXSM]
mov cx, word [0x1000d3e0]
jmp 0x10001fb7
cmp bl, 5
jne 0x10001f8b
mov edx, dword [str.USEPT]
mov ax, word [0x1000d3e8]
mov dword [esp + 0x10], edx
mov word [esp + 0x14], ax
jmp 0x10001fc0
mov dword [esp + 0x10], 0x544f4e
jmp 0x10001fc0
mov ecx, dword [str.SCAN]
mov dl, byte [0x1000d418]
mov dword [esp + 0x10], ecx
mov byte [esp + 0x14], dl
jmp 0x10001fc0
mov eax, dword [str.PRINT]
mov cx, word [0x1000d408]
mov dword [esp + 0x10], eax
mov word [esp + 0x14], cx
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov word [esp + 0x24], ax
lea eax, [esp + 0x10]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x10001fd6
push 0
sub eax, edx
lea edx, [esp + 0x10]
push edx
push 0xa
lea ecx, [esp + 0x28]
push ecx
add eax, 1
push eax
lea edx, [esp + 0x24]
push edx
push 0x9c402408
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp bl, 0x20
mov byte [0x10014004], bl
mov dword [0x1001401c], 0
je 0x10002025
cmp bl, 0x21
jne 0x1000203c
cmp dword [0x10014038], 0
jg 0x10001e07
mov dword [0x10014038], 1
push str._Device_Monitor___PortAcquire____True_n
call edi
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebx
xor ecx, esp
mov eax, 1
call fcn.10004b28
add esp, 0x20
ret