Function at 0x40b250
Capabilities:
Create thread
Print debug messages

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2420
call fcn.0040e930
mov eax, dword [0x42e430]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x240c], eax
mov eax, dword [0x430844]
mov dword [ebp - 0x2408], ebx
push esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x2418], esi
sub eax, 2
je 0x40b2d1
push str.open___must_be_called_first
lea ecx, [ebp - 0x2408]
call fcn.004082e0
mov eax, dword [eax]
test eax, eax
je 0x40b2a8
mov eax, dword [eax]
jmp 0x40b2aa
xor eax, eax
lea ecx, [ebp - 0x2408]
mov dword [esi], eax
call fcn.00408410
pop esi
mov dword [ebx], 1
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040ca69
mov esp, ebp
pop ebp
ret 0xc
mov ebx, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push edi
push str.start___:_gCAN_DEVICE_vector
call ebx
mov edi, dword [0x434c54]
mov esi, dword [0x434c50]
cmp esi, edi
je 0x40b339
nop
push dword [esi + 0x24]
lea eax, [ebp - 0x804]
push dword [esi + 0x20]
push dword [esi + 0x28]
push dword [esi + 0x1c]
push dword [esi + 0x14]
push dword [esi + 0x10]
push dword [esi + 0x18]
push dword [esi + 0xc]
push dword [esi + 8]
push dword [esi + 4]
push dword [esi]
push str._HW_TYPE_02d_HW_INDEX_02d_HW_CHANNEL_02d_ABR_d:_d:_d:_d_DBR_d:_d:_d:_d
push 0x400
push eax
call fcn.0040ca4d
add esp, 0x38
lea eax, [ebp - 0x804]
push eax
call ebx
add esi, 0x2c
cmp esi, edi
jne 0x40b2f0
mov eax, dword [0x431098]
push 0x43084c
push 0
push 0x430848
push 0x40afe0
mov dword [0x43109c], eax
mov eax, dword [0x4310a4]
push 0
mov dword [0x4310a8], eax
mov eax, dword [0x430840]
push 0
mov dword [0x430850], eax
mov dword [0x430854], 0x4312c0
mov dword [0x43085c], 0x431070
mov dword [0x430864], 0x430870
mov dword [0x430868], 0x400
mov dword [0x430858], 0x43086c
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [0x430848], eax
test eax, eax
jne 0x40b442
push eax
push 0x400
lea eax, [ebp - 0x1804]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0
push 0x1000
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
lea eax, [ebp - 0x1804]
push eax
push str.ERROR___s__CreateThread_0_NULL_srv_RCV_THREAD_dw_CTL000_st_..._
lea eax, [ebp - 0x1004]
push 0x400
push eax
call fcn.0040ca4d
add esp, 0x10
push 0xc
call fcn.0040ee7e
mov esi, eax
add esp, 4
test esi, esi
je 0x40ba8f
xorps xmm0, xmm0
lea eax, [ebp - 0x1004]
movq qword [esi], xmm0
lea edi, [esi + 8]
mov dword [esi + 8], 0
push eax
mov dword [esi + 4], 0
mov dword [edi], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
jne 0x40ba1f
jmp 0x40ba85
push 0xfc
lea eax, [ebp - 0x1b00]
mov dword [ebp - 0x1b04], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x1a00]
mov dword [ebp - 0x1a04], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x1900]
mov dword [ebp - 0x1904], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x1c00]
mov dword [ebp - 0x1c04], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x2300]
mov dword [ebp - 0x2304], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x1f00]
mov dword [ebp - 0x1f04], 0
push 0
push eax
call fcn.0040cae0
add esp, 0x48
mov dword [ebp - 0x1e04], 0
lea eax, [ebp - 0x1e00]
push 0xfc
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x2100]
mov dword [ebp - 0x2104], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x2200]
mov dword [ebp - 0x2204], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x2000]
mov dword [ebp - 0x2004], 0
push 0
push eax
call fcn.0040cae0
push 0xfc
lea eax, [ebp - 0x1d00]
mov dword [ebp - 0x1d04], 0
push 0
push eax
call fcn.0040cae0
mov eax, dword [0x4312d4]
xor ebx, ebx
add esp, 0x3c
mov dword [ebp - 0x241c], ebx
mov dword [ebp - 0x2410], eax
test eax, eax
je 0x40b610
mov ecx, dword [0x434c54]
mov esi, 0x431320
lea esp, [esp]
mov eax, dword [0x434c50]
cmp eax, ecx
je 0x40b602
movzx ebx, byte [esi]
lea esp, [esp]
cmp ebx, dword [eax]
jne 0x40b5f5
test dword [esi + 0x16], 0x10000
je 0x40b5f5
mov edi, dword [eax + 4]
cmp edi, 0xffffffff
je 0x40b5dd
movzx edx, byte [esi + 1]
cmp edx, edi
jne 0x40b5f5
mov edi, dword [eax + 8]
cmp edi, 0xffffffff
je 0x40b6bd
movzx edx, byte [esi + 2]
cmp edx, edi
je 0x40b6bd
add eax, 0x2c
cmp eax, ecx
jne 0x40b5c0
mov ebx, dword [ebp - 0x241c]
add esi, 0xe3
dec dword [ebp - 0x2410]
jne 0x40b5b0
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push str.start___:_CONFIGURATION
call edi
xor esi, esi
test ebx, ebx
je 0x40b69f
push dword [ebp + esi*4 - 0x1d04]
lea eax, [ebp - 0x804]
push dword [ebp + esi*4 - 0x2004]
push dword [ebp + esi*4 - 0x2204]
push dword [ebp + esi*4 - 0x2104]
push dword [ebp + esi*4 - 0x1e04]
push dword [ebp + esi*4 - 0x1f04]
push dword [ebp + esi*4 - 0x2304]
push dword [ebp + esi*4 - 0x1c04]
push dword [ebp + esi*4 - 0x1a04]
push dword [ebp + esi*4 - 0x1904]
push dword [ebp + esi*4 - 0x1b04]
push str._HW_TYPE_02d_HW_INDEX_02d_HW_CHANNEL_02d_ABR_d:_d:_d:_d_DBR_d:_d:_d:_d
push 0x400
push eax
call fcn.0040ca4d
add esp, 0x38
lea eax, [ebp - 0x804]
push eax
call edi
inc esi
cmp esi, ebx
jb 0x40b623
test ebx, ebx
jne 0x40b73f
push str.NO_CAN_CAPABLE_CHANNELS_FOUND
lea eax, [ebp - 0x1004]
push 0x400
push eax
call fcn.0040ca4d
add esp, 0xc
jmp 0x40b3f4
mov ebx, dword [ebp - 0x241c]
movzx edx, byte [esi]
mov dword [ebp + ebx*4 - 0x1b04], edx
movzx edx, byte [esi + 1]
mov dword [ebp + ebx*4 - 0x1904], edx
movzx edx, byte [esi + 2]
mov dword [ebp + ebx*4 - 0x1a04], edx
mov edx, dword [eax + 0xc]
mov dword [ebp + ebx*4 - 0x1c04], edx
mov edx, dword [eax + 0x10]
mov dword [ebp + ebx*4 - 0x2304], edx
mov edx, dword [eax + 0x14]
mov dword [ebp + ebx*4 - 0x1f04], edx
mov edx, dword [eax + 0x18]
mov dword [ebp + ebx*4 - 0x1e04], edx
mov edx, dword [eax + 0x1c]
mov dword [ebp + ebx*4 - 0x2104], edx
mov edx, dword [eax + 0x20]
mov dword [ebp + ebx*4 - 0x2204], edx
mov edx, dword [eax + 0x24]
mov dword [ebp + ebx*4 - 0x2004], edx
mov eax, dword [eax + 0x28]
mov dword [ebp + ebx*4 - 0x1d04], eax
inc ebx
mov dword [ebp - 0x241c], ebx
jmp 0x40b602
mov eax, dword [0x430840]
mov ecx, 0x4312c0
dec eax
push 0x400
lea eax, [ebp - 0x1004]
push eax
je 0x40b783
lea eax, [ebp - 0x1c04]
push eax
lea eax, [ebp - 0x1a04]
push eax
lea eax, [ebp - 0x1904]
push eax
lea eax, [ebp - 0x1b04]
push eax
push ebx
call fcn.00401fc0
test eax, eax
je 0x40b7de
jmp 0x40b3f4
lea eax, [ebp - 0x1d04]
push eax
lea eax, [ebp - 0x2004]
push eax
lea eax, [ebp - 0x2204]
push eax
lea eax, [ebp - 0x2104]
push eax
lea eax, [ebp - 0x1e04]
push eax
lea eax, [ebp - 0x1f04]
push eax
lea eax, [ebp - 0x2304]
push eax
lea eax, [ebp - 0x1c04]
push eax
lea eax, [ebp - 0x1a04]
push eax
lea eax, [ebp - 0x1904]
push eax
lea eax, [ebp - 0x1b04]
push eax
push ebx
call fcn.00401c60
test eax, eax
jne 0x40b3f4
mov eax, dword [0x431090]
mov edi, dword [eax + 4]
mov esi, edi
cmp byte [edi + 0xd], 0
jne 0x40b815
mov edi, edi
push dword [esi + 8]
mov ecx, 0x431090
call fcn.004095d0
mov esi, dword [esi]
push edi
call fcn.0040c8d6
add esp, 4
mov edi, esi
cmp byte [esi + 0xd], 0
je 0x40b7f0
mov eax, dword [0x431090]
mov dword [eax + 4], eax
xor esi, esi
mov eax, dword [0x431090]
mov dword [eax], eax
mov eax, dword [0x431090]
mov dword [eax + 8], eax
mov dword [0x431094], 0
test ebx, ebx
je 0x40b881
jmp 0x40b840
mov eax, dword [esi*4 + 0x434c20]
mov ecx, 0x431090
mov dword [ebp - 0x2414], eax
inc esi
lea eax, [ebp - 0x2414]
mov dword [ebp - 0x2410], esi
push eax
call fcn.00407df0
push eax
add eax, 0x10
mov ecx, 0x431090
push eax
push 0
lea eax, [ebp - 0x2420]
push eax
call fcn.00408030
cmp esi, ebx
jb 0x40b840
mov ebx, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push str._CHANNEL_INDEX_map_n
call ebx
mov eax, dword [0x431090]
mov esi, dword [eax]
cmp esi, eax
je 0x40b910
lea esp, [esp]
push dword [esi + 0x14]
lea eax, [ebp - 0x804]
push dword [esi + 0x10]
push str.___u_____u_n
push 0x400
push eax
call fcn.0040ca4d
add esp, 0x14
lea eax, [ebp - 0x804]
push eax
call ebx
cmp byte [esi + 0xd], 0
jne 0x40b908
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
jne 0x40b8ed
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
jne 0x40b908
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0xd], 0
je 0x40b8e1
jmp 0x40b908
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x40b906
cmp esi, dword [eax + 8]
jne 0x40b906
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x40b8f6
mov esi, eax
cmp esi, dword [0x431090]
jne 0x40b8a0
push 0x431070
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x400
lea eax, [ebp - 0x1804]
mov ecx, 0x4312c0
push eax
call fcn.00402260
test eax, eax
jne 0x40b3f4
push 0x431070
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0xcc
push dword [0x430778]
call dword [sym.imp.USER32.dll_LoadIconW]
mov ebx, dword [ebp - 0x240c]
push str.CANSRV__START_
mov dword [ebx + 0x1c], eax
lea eax, [ebx + 0x20]
push eax
call fcn.00408220
add esp, 8
lea eax, [ebx + 8]
push eax
push 1
call dword [sym.imp.SHELL32.dll_Shell_NotifyIconW]
push 0xc
mov dword [0x430844], 3
call fcn.0040ee7e
mov esi, eax
add esp, 4
test esi, esi
je 0x40ba8f
xorps xmm0, xmm0
lea edi, [esi + 8]
movq qword [esi], xmm0
mov dword [esi + 8], 0
push str.start
mov dword [esi + 4], 0
mov dword [edi], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
je 0x40ba8f
mov ecx, dword [ebp - 0x2418]
mov dword [ecx], eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
jne 0x40ba11
mov eax, dword [esi]
test eax, eax
je 0x40b9f1
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40ba08
push eax
call fcn.0040cc32
add esp, 4
mov dword [esi + 4], 0
push esi
call fcn.0040c8d6
add esp, 4
mov eax, dword [ebp - 0x2408]
mov dword [eax], 0
jmp 0x40ba70
mov ecx, dword [ebp - 0x2418]
mov dword [ecx], eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
jne 0x40ba64
mov eax, dword [esi]
test eax, eax
je 0x40ba44
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40ba5b
push eax
call fcn.0040cc32
add esp, 4
mov dword [esi + 4], 0
push esi
call fcn.0040c8d6
add esp, 4
mov eax, dword [ebp - 0x2408]
mov dword [eax], 1
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040ca69
mov esp, ebp
pop ebp
ret 0xc
push 0x8007000e
call fcn.0040c0d0
push 0x8007000e
call fcn.0040c0d0
int3