Function at 0x40b160
Capabilities:
Get number of processors
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5eff85
mov eax, dword fs:[0]
push eax
sub esp, 0x838
mov eax, dword [0x6b7e40]
xor eax, esp
mov dword [esp + 0x830], eax
push ebx
push esi
push edi
mov eax, dword [0x6b7e40]
xor eax, esp
push eax
lea eax, [esp + 0x848]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x30], ebx
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
jl 0x40b1c8
push 0x63e13c
push eax
call fcn.005bda07
mov esi, eax
add esp, 8
test esi, esi
je 0x40b1c8
sub esi, dword [ebx]
sar esi, 1
jns 0x40b1cd
mov eax, dword [ebx]
mov esi, dword [eax - 0xc]
push esi
lea eax, [esp + 0x58]
push eax
mov ecx, ebx
call fcn.00404680
lea ecx, [esp + 0x54]
mov dword [esp + 0x850], 0
call fcn.00403f80
lea ecx, [esp + 0x54]
call fcn.0040f210
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax - 0xc]
sub eax, esi
push eax
lea eax, [esp + 0x64]
push eax
call fcn.00406670
push 0
push ecx
mov byte [esp + 0x858], 1
mov ecx, esp
mov dword [esp + 0x24], esp
push 0x63e140
mov bl, 1
call fcn.004021e0
push ecx
mov ecx, esp
push str.SoftwareSolidWorksIM
mov byte [esp + 0x860], 2
call fcn.004021e0
mov dl, bl
lea ecx, [esp + 0x30]
mov byte [esp + 0x85c], bl
call fcn.0041a740
add esp, 0xc
mov byte [esp + 0x850], 3
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b276
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x44], eax
mov byte [esp + 0x850], 4
mov esi, dword [esp + 0x54]
push esi
lea eax, [esp + 0x48]
push str._s_RECENT
push eax
call fcn.00404520
add esp, 0xc
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b2bf
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x5c], eax
push esi
lea eax, [esp + 0x60]
push str._s_TOTAL
push eax
mov byte [esp + 0x85c], 5
call fcn.00404520
add esp, 0xc
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b304
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x4c], eax
push esi
lea eax, [esp + 0x50]
push str._s_LAST
push eax
mov byte [esp + 0x85c], 6
call fcn.00404520
add esp, 0xc
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b349
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x48], eax
push esi
lea eax, [esp + 0x4c]
push str._s_BUSIEST
push eax
mov byte [esp + 0x85c], 7
call fcn.00404520
add esp, 0xc
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b38e
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x50], eax
push esi
lea eax, [esp + 0x54]
push str._s_QUERY
push eax
mov byte [esp + 0x85c], 8
call fcn.00404520
add esp, 0xc
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push dword [esp + 0x30]
mov dword [esp + 0x24], 0
push SysReAllocStringLen
mov dword [esp + 0x54], 4
mov dword [esp + 0x3c], 0x400
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40b41f
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x48]
push eax
push 0
push dword [esp + 0x54]
push dword [esp + 0x24]
call ebx
push dword [esp + 0x10]
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x40b427
mov dword [esp + 0x14], 0
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push dword [esp + 0x30]
mov dword [esp + 0x3c], 0
push SysReAllocStringLen
mov dword [esp + 0x54], 4
mov dword [esp + 0x3c], 0x400
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40b489
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x48]
push eax
push 0
push dword [esp + 0x58]
push dword [esp + 0x24]
call ebx
push dword [esp + 0x10]
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x40b491
mov dword [esp + 0x2c], 0
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push dword [esp + 0x30]
mov dword [esp + 0x44], 0
push SysReAllocStringLen
mov dword [esp + 0x54], 4
mov dword [esp + 0x3c], 0x400
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ebx, dword [esp + 0x5c]
test eax, eax
jne 0x40b4f8
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x48]
push eax
push 0
push ebx
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [esp + 0x10]
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x40b500
mov dword [esp + 0x34], 0
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b51c
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [esp + 0x28], edi
mov byte [esp + 0x850], 0x15
xor eax, eax
mov word [esp + 0x6c], ax
lea eax, [esp + 0x10]
push eax
push 0x20019
push 0
push dword [esp + 0x30]
mov dword [esp + 0x4c], 0
push SysReAllocStringLen
mov dword [esp + 0x4c], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40b5cc
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0x44]
push eax
push 0
push dword [esp + 0x5c]
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [esp + 0x10]
mov dword [esp + 0x20], eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [esp + 0x1c], 0
jne 0x40b5cc
lea ecx, [esp + 0x6c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40b5a3
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x30]
call fcn.00402090
mov edi, dword [esp + 0x28]
mov byte [esp + 0x1b], 1
jmp 0x40b5d1
mov byte [esp + 0x1b], 0
inc dword [esp + 0x34]
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x14]
push eax
push 0
push 0x2001f
push 0
push 0
push 0
push dword [esp + 0x40]
mov dword [esp + 0x3c], 0
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
push 4
lea eax, [esp + 0x38]
push eax
push 4
push 0
push ebx
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 1
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x58]
push eax
lea edx, [esp + 0x30]
mov ecx, SysReAllocStringLen
call fcn.00417640
add esp, 0xc
cmp byte [esp + 0x1b], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x1c], xmm0
je 0x40b6aa
push ecx
lea eax, [edi - 0x10]
mov dword [esp + 0x20], esp
push eax
call fcn.004046f0
mov ecx, dword [esp + 0x24]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
xor edx, edx
lea ecx, [esp + 0x20]
call fcn.0041d860
add esp, 4
push 0
call fcn.005be4ee
add esp, 4
sub eax, dword [esp + 0x1c]
sbb edx, dword [esp + 0x20]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
test edx, edx
jg 0x40b69d
jl 0x40b6ba
cmp eax, 5
jbe 0x40b6ba
mov dword [esp + 0x14], 1
jmp 0x40b942
mov eax, dword [esp + 0x20]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, 0x3e8
jbe 0x40b7d2
mov eax, 0x10624dd3
mul ecx
shr edx, 6
imul edx, edx, 0x3e8
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x40b7d2
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b708
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov byte [esp + 0x850], 0x1a
mov eax, dword [esp + 0x30]
push dword [eax]
lea eax, [esp + 0x14]
push dword [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x3c]
push dword [esp + 0x28]
push str.INTERNAL_ERROR:_LOOP_LIMIT__FORCING_MSGBOX__recent:_d_busiest:_d_sec:_I64d_tot:_d_:__s
push eax
call fcn.00404520
add esp, 0x1c
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [esp + 0x18]
push eax
push 0x688
push str.C:_amintegration_tools_setupishield_sldim_baseFileDownloader.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
push 0
mov edx, 0x2857
lea ecx, [esp + 0x20]
call fcn.00419a90
mov byte [esp + 0x854], 0x1b
mov ecx, dword [eax]
sub esp, 0x10
mov edx, 0x30
call fcn.0041d330
mov byte [esp + 0x864], 0x1a
mov edx, dword [esp + 0x30]
add edx, 0xfffffff0
add esp, 0x14
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40b90e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40b90e
cmp ecx, 0x64
jbe 0x40b878
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b7f7
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov byte [esp + 0x850], 0x1c
mov eax, dword [esp + 0x30]
push dword [eax]
lea eax, [esp + 0x14]
push dword [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x3c]
push dword [esp + 0x28]
push str.INTERNAL_ERROR:_LOOP_WARNING_FORCING_SLEEP__recent:_d_busiest:_d_sec:_I64d_tot:_d_:__s
push eax
call fcn.00404520
add esp, 0x1c
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [esp + 0x18]
push eax
push 0x690
push str.C:_amintegration_tools_setupishield_sldim_baseFileDownloader.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40b90e
cmp ecx, 2
jbe 0x40b938
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40b89d
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov byte [esp + 0x850], 0x1d
mov eax, dword [esp + 0x30]
push dword [eax]
lea eax, [esp + 0x14]
push dword [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x3c]
push dword [esp + 0x28]
push str.INTERNAL_WARNING:_Multiple_URL_requests__recent:_d_busiest:_d_sec:_I64d_tot:_d_:__s
push eax
call fcn.00404520
add esp, 0x1c
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [esp + 0x18]
push eax
push 0x698
push str.C:_amintegration_tools_setupishield_sldim_baseFileDownloader.cpp
push 0
push 2
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [esp + 0x850], 0x15
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40b934
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x2c]
jbe 0x40b942
mov dword [esp + 0x2c], ecx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x34]
push eax
push 0
push 0x2001f
push 0
push 0
push 0
push dword [esp + 0x40]
mov dword [esp + 0x3c], 0
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
push 4
lea eax, [esp + 0x18]
push eax
push 4
push 0
push dword [esp + 0x54]
push dword [esp + 0x44]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esp + 0x30]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x14]
push eax
push 0
push 0x2001f
push 0
push 0
push 0
push dword [esp + 0x40]
mov dword [esp + 0x3c], 0
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
push 4
lea eax, [esp + 0x30]
push eax
push 4
push 0
push dword [esp + 0x58]
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0
call fcn.005be4ee
mov dword [esp + 0x6c], edx
add esp, 4
lea edx, [esp + 0x64]
lea ecx, [esp + 0x58]
mov dword [esp + 0x64], eax
call fcn.0041d830
push 1
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x54]
push eax
lea edx, [esp + 0x30]
mov ecx, SysReAllocStringLen
mov byte [esp + 0x85c], 0x26
call fcn.00417640
mov eax, dword [esp + 0x20]
mov byte [esp + 0x85c], 0x15
mov edx, dword [esp + 0x64]
add edx, 0xfffffff0
mov dword [esp + 0x3c], eax
add esp, 0xc
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40ba56
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
or edi, 0xffffffff
mov byte [esp + 0x850], 8
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40ba7a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 7
mov edx, dword [esp + 0x50]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40ba9f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 6
mov edx, dword [esp + 0x48]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bac4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 5
mov edx, dword [esp + 0x4c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bae9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [esp + 0x850], 4
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bb0a
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 3
mov edx, dword [esp + 0x44]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bb2f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 1
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bb54
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x850], 0
mov edx, dword [esp + 0x60]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40bb79
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov dword [esp + 0x850], 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x40bb9b
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x848]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x830]
xor ecx, esp
call fcn.005bc16b
mov esp, ebp
pop ebp
ret