Function at 0x46f5a0
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x48
mov eax, dword [0x62d040]
xor eax, esp
mov dword [esp + 0x44], eax
push esi
push edi
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0x1a
push eax
mov dword [esp + 0x20], str.IconTrayGuids
call sym.SystemInformer.exe_Ordinal_1889
mov ecx, eax
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x46f689
cmp dword [ecx], 0
je 0x46f689
mov eax, dword [ecx]
mov esi, 0x636a60
mov ecx, dword [ecx + 4]
mov edi, 0xa
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
nop
cmp dword [esp + 0x24], 0
je 0x46f66c
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x1c]
push eax
push 0x7c
lea eax, [esp + 0x30]
push eax
call sym.SystemInformer.exe_Ordinal_1446
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x46f66c
mov word ds:[esp + 0x10], cx
lea eax, [ecx + 2]
mov word [esp + 0x12], ax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
cmp ecx, 0xfffe
ja 0x46f666
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.ntdll.dll_RtlGUIDFromString]
test eax, eax
js 0x46f666
movups xmm0, xmmword [esp + 0x30]
movups xmmword [esi], xmm0
jmp 0x46f66c
push esi
call sym.SystemInformer.exe_Ordinal_1631
add esi, 0x10
sub edi, 1
jne 0x46f600
mov ecx, dword [esp + 0x20]
or eax, 0xffffffff
add ecx, 0xfffffff8
lock xadd dword [ecx + 4], eax
dec eax
jmp 0x46f7fc
push 0
push 0
lea eax, [esp + 0x18]
mov dword [esp + 0x20], 0x64
push eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0x64
call sym.SystemInformer.exe_Ordinal_1331
mov dword [esp + 0x1c], eax
xor ecx, ecx
mov esi, 0x636a60
mov dword [esp + 0x2c], 0xa
or edi, 0xffffffff
mov dword [eax], 0
mov eax, dword [eax + 4]
mov word [eax], cx
push esi
call sym.SystemInformer.exe_Ordinal_1631
lea eax, ds:[esp + 0x10]
push eax
push esi
call dword [sym.imp.ntdll.dll_RtlStringFromGUID]
test eax, eax
js 0x46f777
mov ax, word [esp + 0x10]
test ax, ax
jne 0x46f6ff
call sym.SystemInformer.exe_Ordinal_1430
jmp 0x46f71c
movzx ecx, ax
mov eax, dword [esp + 0x14]
push 0
mov dword [esp + 0x38], eax
lea eax, [esp + 0x34]
push 0
push eax
mov dword [esp + 0x3c], ecx
call sym.SystemInformer.exe_Ordinal_1331
mov edi, eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x46f744
push eax
mov eax, dword fs:[0x18]
push 0
mov eax, dword [eax + 0x30]
push dword [eax + 0x18]
call dword [sym.imp.ntdll.dll_RtlFreeHeap]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edi, edi
je 0x46f774
push dword [edi + 4]
lea eax, [esp + 0x1c]
push 0x60d578
push eax
call sym.SystemInformer.exe_Ordinal_1288
lea ecx, [edi - 8]
add esp, 0xc
or edi, 0xffffffff
mov eax, edi
lock xadd dword [ecx + 4], eax
dec eax
jne 0x46f777
call fcn.004fe0c0
jmp 0x46f777
or edi, 0xffffffff
add esi, 0x10
sub dword [esp + 0x2c], 1
jne 0x46f6d1
mov esi, dword [esp + 0x1c]
mov edx, dword [esi]
test edx, edx
je 0x46f7be
mov ecx, dword [esi + 4]
and edx, 0xfffffffe
mov eax, dword [esi]
sub edx, 2
add ecx, edx
sub eax, edx
sub eax, 2
push eax
lea eax, [ecx + 2]
push eax
push ecx
call fcn.00586310
add dword [esi], 0xfffffffe
add esp, 0xc
mov ecx, dword [esi]
xor edx, edx
mov eax, dword [esi + 4]
mov word [ecx + eax], dx
mov eax, dword [esp + 0x20]
test eax, eax
je 0x46f7d8
lea ecx, [eax - 8]
mov eax, edi
lock xadd dword [ecx + 4], eax
dec eax
jne 0x46f7d8
call fcn.004fe0c0
push esi
lea eax, [esp + 0x34]
mov dword [esp + 0x34], 0x1a
push eax
mov dword [esp + 0x3c], str.IconTrayGuids
call sym.SystemInformer.exe_Ordinal_1908
lea ecx, [esi - 8]
lock xadd dword [ecx + 4], edi
dec edi
jne 0x46f805
nop
call fcn.004fe0c0
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
xor ecx, esp
call fcn.00583f7f
mov esp, ebp
pop ebp
ret