Function at 0x43e3f0
Capabilities:
Create thread
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x466659
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x21c
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
push ebp
lea edi, [esi + 0x1ac]
push ebp
push ebp
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], edi
mov dword [edi + 8], vtable.CBaldorMutex.0
call ebx
mov dword [edi + 0xc], eax
push ebp
push ebp
push ebp
mov dword [esp + 0x240], ebp
mov dword [edi + 0x10], vtable.CBaldorMutex.0
call ebx
mov dword [edi + 0x14], eax
mov ebx, dword [sym.imp.KERNEL32.dll_CreateEventA]
push ebp
push 1
push 1
push ebp
mov dword [edi + 0x18], vtable.CBaldorEvent.0
call ebx
mov dword [edi + 0x1c], eax
push ebp
push ebp
push 1
push ebp
mov dword [edi + 0x20], vtable.CBaldorEvent.0
call ebx
mov dword [edi + 0x24], eax
mov byte [esp + 0x234], 3
mov dword [edi], vtable.CCircularBuffer_unsigned_char_.0
mov byte [edi + 4], 1
mov dword [edi + 0x38], ebp
mov dword [edi + 0x34], ebp
xor ecx, ecx
mov eax, 1
mov dword [esp + 0x10], 0x20
mov edx, eax
add eax, eax
shr edx, 9
and edx, 1
add ecx, edx
mov edx, dword [esp + 0x10]
dec edx
mov dword [esp + 0x10], edx
jne 0x43e49c
cmp ecx, 1
je 0x43e4bd
mov dword [edi + 0x2c], ebp
jmp 0x43e4d4
push 0x200
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [edi + 0x2c], eax
mov dword [edi + 0x30], 0x1ff
lea eax, [esi + 0x144]
mov dword [esp + 0x234], 4
push eax
mov dword [esi], vtable.CVirtualController.0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov dword [esi + 0x10], ebp
mov dword [esi + 0x14], ebp
push ebp
push ebp
push 1
push ebp
call ebx
push ebp
push ebp
push ebp
push ebp
mov dword [esi + 0x50], eax
call ebx
push ebp
push ebp
push ebp
push ebp
mov dword [esi + 0x54], eax
call ebx
push ebp
push ebp
push ebp
push ebp
mov dword [esi + 0x58], eax
call ebx
push ebp
push ebp
push 1
push ebp
mov dword [esi + 0x5c], eax
call ebx
push ebp
push ebp
push 1
push ebp
mov dword [esi + 0x60], eax
call ebx
push ebp
push ebp
push 1
push ebp
mov dword [esi + 0x64], eax
call ebx
push ebp
push ebp
push 1
push ebp
mov dword [esi + 0x68], eax
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push ebp
push ebp
push ebp
mov dword [esi + 0x6c], eax
call edi
push ebp
push ebp
push ebp
mov dword [esi + 0x70], eax
call edi
push ebp
push ebp
push ebp
mov dword [esi + 0x74], eax
call edi
push ebp
push ebp
push ebp
mov dword [esi + 0x78], eax
call edi
push 0x100000
mov dword [esi + 0x7c], eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov dword [esi + 0x80], eax
lea edi, [esi + 0x84]
mov ecx, 0x10
xor eax, eax
rep stosd dword es:[edi], eax
lea edi, [esi + 0xc4]
mov ecx, 0x10
rep stosd dword es:[edi], eax
lea edi, [esi + 0x104]
mov ecx, 0x10
rep stosd dword es:[edi], eax
push esi
call fcn.0043dc50
push 0x43dc80
call fcn.0043bda0
call fcn.0043bd10
call fcn.0041f5e0
call fcn.00421f40
call fcn.0042eff0
call fcn.00418470
call fcn.00421c20
push ebp
push ebp
call fcn.00421c50
call fcn.0041e020
call fcn.0042fb10
call fcn.0041d800
call fcn.004144c0
call fcn.004140e0
call fcn.0041e8b0
call fcn.0043a600
call fcn.0043a710
call fcn.004306a0
call fcn.004311e0
call fcn.004310e0
call fcn.004311c0
call fcn.00423c10
call fcn.0041f630
call fcn.0041ffe0
call fcn.00417880
call fcn.00417980
call fcn.00417740
call fcn.00417080
push 0x415920
call fcn.004170e0
add esp, 0x18
call fcn.00422dd0
call fcn.00424ca0
call fcn.0043dfe0
test ax, ax
je 0x43e668
push 0x7532
call fcn.0041f940
add esp, 4
jmp 0x43e66d
call fcn.00424c50
lea ecx, [esp + 0x10]
mov dword [esp + 0x24], ebp
push ecx
push 0x20019
push ebp
push str.SoftwareBaldorVirtualController
push SysReAllocString
mov dword [esp + 0x24], ebp
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x43e69c
mov edx, dword [esp + 0x10]
mov dword [esp + 0x24], edx
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x28]
lea ecx, [esp + 0x2c]
push eax
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x18]
push ecx
push edx
push ebp
push str.CountDigitalInputBanks
push eax
mov dword [esp + 0x28], 1
mov dword [esp + 0x40], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e6e8
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov dx, word [esp + 0x10]
xor ebx, ebx
cmp eax, ebp
mov word [0x49a012], dx
jle 0x43e773
push ebx
lea eax, [esp + 0x130]
push str.InputsBank_d
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea ecx, [esp + 0x14]
lea edx, [esp + 0x2c]
lea eax, [esp + 0x28]
push ecx
push edx
mov edx, dword [esp + 0x2c]
push eax
lea ecx, [esp + 0x138]
push ebp
push ecx
push edx
mov dword [esp + 0x30], 0x14
mov dword [esp + 0x2c], 0xff
mov dword [esp + 0x40], ebp
call edi
test eax, eax
jne 0x43e75c
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
jmp 0x43e760
mov eax, dword [esp + 0x18]
push eax
push ebx
call fcn.0041d830
mov eax, dword [esp + 0x18]
add esp, 8
inc ebx
cmp ebx, eax
jl 0x43e6fe
lea ecx, [esp + 0x18]
lea edx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x18]
push edx
push eax
push ebp
push str.CountDigitalOutputBanks
push ecx
mov dword [esp + 0x28], 1
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e7b9
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x10], eax
mov ax, word [esp + 0x10]
xor ebx, ebx
mov word [0x49a010], ax
mov eax, dword [esp + 0x10]
cmp eax, ebp
jle 0x43e843
push ebx
lea ecx, [esp + 0x130]
push str.OutputsBank_d
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea edx, [esp + 0x18]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x14]
push edx
push eax
mov eax, dword [esp + 0x2c]
push ecx
lea edx, [esp + 0x138]
push ebp
push edx
push eax
mov dword [esp + 0x40], 0xd
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e82c
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
jmp 0x43e830
mov eax, dword [esp + 0x28]
push eax
push ebx
call fcn.0041e050
mov eax, dword [esp + 0x18]
add esp, 8
inc ebx
cmp ebx, eax
jl 0x43e7ce
lea edx, [esp + 0x18]
lea eax, [esp + 0x2c]
push edx
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x18]
push eax
push ecx
push ebp
push str.CountAnalogInputs
push edx
mov dword [esp + 0x28], 2
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e889
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov cx, word [esp + 0x10]
xor ebx, ebx
cmp eax, ebp
mov word [0x49a00a], cx
jle 0x43e905
push ebx
lea edx, [esp + 0x130]
push str.AnalogInput_dResolution
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea eax, [esp + 0x18]
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x14]
push eax
push ecx
mov ecx, dword [esp + 0x2c]
push edx
lea eax, [esp + 0x138]
push ebp
push eax
push ecx
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e8f3
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
push ebx
call fcn.00414110
mov eax, dword [esp + 0x14]
add esp, 4
inc ebx
cmp ebx, eax
jl 0x43e89f
lea eax, [esp + 0x18]
lea ecx, [esp + 0x2c]
push eax
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x18]
push ecx
push edx
push ebp
push str.CountAnalogOutputs
push eax
mov dword [esp + 0x28], 4
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e94b
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov dx, word [esp + 0x10]
xor ebx, ebx
cmp eax, ebp
mov word [0x49a008], dx
jle 0x43e9d6
push ebx
lea eax, [esp + 0x130]
push str.AnalogOutput_dResolution
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea ecx, [esp + 0x18]
lea edx, [esp + 0x2c]
lea eax, [esp + 0x14]
push ecx
push edx
mov edx, dword [esp + 0x2c]
push eax
lea ecx, [esp + 0x138]
push ebp
push ecx
push edx
mov dword [esp + 0x40], 0xc
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43e9bf
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
jmp 0x43e9c3
mov eax, dword [esp + 0x28]
push eax
push ebx
call fcn.004144f0
mov eax, dword [esp + 0x18]
add esp, 8
inc ebx
cmp ebx, eax
jl 0x43e961
lea ecx, [esp + 0x18]
lea edx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x18]
push edx
push eax
push ebp
push str.CountEncoders
push ecx
mov dword [esp + 0x28], 3
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43ea1c
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x10], eax
mov ax, word [esp + 0x10]
xor ebx, ebx
mov word [0x49a00c], ax
mov eax, dword [esp + 0x10]
cmp eax, ebp
jle 0x43ea45
push 0x18
push ebx
call fcn.0041e8e0
mov eax, dword [esp + 0x18]
add esp, 8
inc ebx
cmp ebx, eax
jl 0x43ea31
lea ecx, [esp + 0x18]
lea edx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x18]
push edx
push eax
push ebp
push str.CountPulseDirectionOutputs
push ecx
mov ebx, 4
mov dword [esp + 0x30], 0xff
mov dword [esp + 0x2c], ebp
call edi
test eax, eax
jne 0x43ea86
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov ebx, eax
xor edi, edi
cmp ebx, ebp
mov word [0x49a00e], bx
jle 0x43eaa7
push edi
call fcn.0043a620
push edi
call fcn.0043a740
add esp, 8
inc edi
cmp edi, ebx
jl 0x43ea93
mov dword [esi + 0xc], ebp
mov ebx, dword [sym.imp.KERNEL32.dll_CreateThread]
lea eax, [esp + 0x1c]
push eax
push ebp
push esi
push 0x43ecf0
push ebp
push ebp
call ebx
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0xc]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
cmp eax, ebp
jne 0x43eadb
push 0xa
call edi
mov eax, dword [esi + 0xc]
cmp eax, ebp
je 0x43ead0
mov dword [esi + 0x10], ebp
lea ecx, [esp + 0x1c]
push ecx
push ebp
push esi
push 0x43ed00
push ebp
push ebp
call ebx
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x10]
cmp eax, ebp
jne 0x43eb03
push 0xa
call edi
mov eax, dword [esi + 0x10]
cmp eax, ebp
je 0x43eaf8
mov dword [esi + 0x14], ebp
lea edx, [esp + 0x1c]
push edx
push ebp
push esi
push 0x43ed10
push ebp
push ebp
call ebx
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x14]
cmp eax, ebp
jne 0x43eb2a
push ebp
call edi
mov eax, dword [esi + 0x14]
cmp eax, ebp
je 0x43eb20
mov dword [esi + 0x18], ebp
lea eax, [esp + 0x1c]
push eax
push ebp
push esi
push 0x43ecb0
push ebp
push ebp
call ebx
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x18]
cmp eax, ebp
jne 0x43eb52
push 0xa
call edi
mov eax, dword [esi + 0x18]
cmp eax, ebp
je 0x43eb47
mov dword [esi + 0x1c], ebp
lea ecx, [esp + 0x1c]
push ecx
push ebp
push esi
push 0x43ecc0
push ebp
push ebp
call ebx
mov dword [esi + 0x40], eax
mov eax, dword [esi + 0x1c]
cmp eax, ebp
jne 0x43eb7a
push 0xa
call edi
mov eax, dword [esi + 0x1c]
cmp eax, ebp
je 0x43eb6f
mov dword [esi + 0x20], ebp
lea edx, [esp + 0x1c]
push edx
push ebp
push esi
push 0x43ecd0
push ebp
push ebp
call ebx
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x20]
cmp eax, ebp
jne 0x43eba2
push 0xa
call edi
mov eax, dword [esi + 0x20]
cmp eax, ebp
je 0x43eb97
mov dword [esi + 0x24], ebp
lea eax, [esp + 0x1c]
push eax
push ebp
push esi
push 0x43ece0
push ebp
push ebp
call ebx
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x24]
cmp eax, ebp
jne 0x43ebca
push 0xa
call edi
mov eax, dword [esi + 0x24]
cmp eax, ebp
je 0x43ebbf
mov dword [esi + 4], ebp
lea ecx, [esp + 0x1c]
push ecx
push ebp
push esi
push 0x43ed50
push ebp
push ebp
call ebx
mov dword [esi + 0x28], eax
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x43ebf2
push 0xa
call edi
mov eax, dword [esi + 4]
cmp eax, ebp
je 0x43ebe7
mov dword [esi + 8], ebp
lea edx, [esp + 0x1c]
push edx
push ebp
push esi
push 0x43ede0
push ebp
push ebp
call ebx
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 8]
cmp eax, ebp
jne 0x43ec1a
push 0xa
call edi
mov eax, dword [esi + 8]
cmp eax, ebp
je 0x43ec0f
push ebp
call fcn.0043dc20
push 0x64
call fcn.0043dc30
push 0x64
call fcn.0043dc40
add esp, 0xc
or byte [0x49be64], 1
lea eax, [esp + 0x1c]
push eax
push ebp
push esi
push 0x43ed20
push ebp
push ebp
call ebx
push 0xfffffffffffffffe
push eax
mov dword [esi + 0x4c], eax
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov eax, dword [esp + 0x24]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp eax, ebp
mov dword [esp + 0x20], vtable.CHardwareSettings.0
je 0x43ec71
push eax
call ebx
mov dword [esp + 0x24], ebp
lea edi, [esp + 0x20]
lea ecx, [esp + 0x24]
neg edi
sbb edi, edi
and edi, ecx
mov eax, dword [edi]
cmp eax, ebp
je 0x43ec8a
push eax
call ebx
mov dword [edi], ebp
mov ecx, dword [esp + 0x22c]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x228
ret