Function at 0x4f8670
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffa8
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x44], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4f8ff5
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x30], 2
jne 0x4f86c6
mov eax, dword [ebp - 4]
cmp word [eax + 0x34], 4
je 0x4f86c6
mov eax, dword [ebp - 4]
cmp byte [eax + 0x10], 0
je 0x4f86c6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x74]
cmp byte [eax + 0x2c], 0
jne 0x4f86ca
xor eax, eax
jmp 0x4f86cc
mov al, 1
mov byte [ebp - 0x36], al
cmp byte [ebp - 0x36], 0
je 0x4f870a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x4f870a
inc esi
xor edi, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, edi
call fcn.004be0ac
mov ax, word [eax + 8]
add eax, 0xffffff9a
sub ax, 2
jae 0x4f8706
mov byte [ebp - 0x36], 0
jmp 0x4f870a
inc edi
dec esi
jne 0x4f86e6
mov eax, dword [ebp - 4]
cmp word [eax + 0x34], 4
jne 0x4f873b
mov eax, dword [ebp - 4]
cmp dword [eax + 0x2c], 0
je 0x4f873b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x2c]
cmp byte [eax + 0x1e], 0
je 0x4f873b
mov edx, 8
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
jmp 0x4f8760
cmp byte [ebp - 0x36], 0
je 0x4f8753
mov edx, 0x20
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
jmp 0x4f8760
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 0x4a], 0
je 0x4f8784
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 4]
call fcn.004fc0b4
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 4]
add eax, 0x4c
call fcn.0040449c
jmp 0x4f878f
mov eax, dword [ebp - 4]
add eax, 0x4c
call fcn.00404448
mov edx, 0x65
mov eax, dword [0x4aa854]
call fcn.004aac04
mov dword [ebp - 0x34], eax
xor edx, edx
push ebp
push 0x4f8df4
push dword fs:[edx]
mov dword fs:[edx], esp
cmp dword [ebp - 0xc], 0
je 0x4f8dd9
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x30]
cmp al, 2
jne 0x4f89fc
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x4f880f
inc esi
xor edi, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, edi
call fcn.004be0ac
mov eax, dword [eax + 0x40]
cmp eax, dword [ebp - 0x30]
je 0x4f880f
inc edi
dec esi
jne 0x4f87f6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
cmp edi, dword [eax + 8]
jl 0x4f882e
mov ecx, 0x124f
mov edx, 0x4f900c
mov eax, 0x4f904c
call fcn.004043a4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, edi
call fcn.004be0ac
call fcn.004f61b8
mov ebx, eax
cmp byte [ebp - 0x35], 1
jne 0x4f893f
mov eax, ebx
call fcn.004b7904
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4f88ee
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 8]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax + 0x10], 0
jne 0x4f8876
mov byte [ebp - 0xd], 3
mov al, byte [ebp - 0xd]
push eax
mov eax, dword [ebp - 0x14]
add eax, 0x16
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0xc], 0
je 0x4f89ed
cmp byte [ebp - 0xd], 1
je 0x4f89ed
cmp byte [ebp - 0xd], 0
jne 0x4f8860
jmp 0x4f89ed
xor eax, eax
mov dword [ebp - 0x1c], eax
push 3
mov eax, dword [ebp - 0x34]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
jmp 0x4f89ed
cmp byte [ebp - 0x35], 2
jne 0x4f89ed
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x2c]
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x1c], eax
lea edx, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov eax, ebx
call fcn.004b76c8
mov al, byte [ebp - 0xd]
push eax
mov eax, dword [ebp - 0x14]
add eax, 0x16
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov dword [eax + 8], edx
mov eax, dword [ebx + 0x1c]
cmp eax, dword [ebp - 0x1c]
jbe 0x4f89af
lea edx, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov eax, ebx
call fcn.004b7774
mov edx, dword [ebp - 0x14]
mov eax, ebx
call fcn.004b7808
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
cmp dword [ebp - 0xc], 0
je 0x4f89ed
cmp byte [ebp - 0xd], 1
je 0x4f89ed
cmp byte [ebp - 0xd], 0
jne 0x4f8950
cmp dword [ebp - 0xc], 0
jne 0x4f87e5
jmp 0x4f8dd9
cmp al, 1
jne 0x4f8dd1
mov dword [ebp - 0x28], 0xfffff3c7
mov dword [ebp - 0x2c], 0xfffff3c6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x4f8b8b
inc esi
xor edi, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, edi
call fcn.004be0ac
mov ebx, eax
mov ax, word [ebx + 8]
add eax, 0xfffffff3
sub ax, 2
jae 0x4f8b83
mov al, byte [ebx + 0xa]
sub al, 1
je 0x4f8a56
sub al, 2
jne 0x4f8b83
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x18]
test al, al
jne 0x4f8b83
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x28]
je 0x4f8a87
lea edx, [ebp - 0x48]
mov eax, dword [0x5595c0]
call fcn.00406820
mov eax, dword [ebp - 0x48]
call fcn.004f8614
jmp 0x4f8b8b
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
mov eax, ebx
call fcn.004f61b8
mov ebx, eax
test ebx, ebx
jne 0x4f8ac6
mov ecx, 0x1295
mov edx, 0x4f900c
mov eax, 0x4f904c
call fcn.004043a4
mov eax, ebx
call fcn.004b7904
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x4f8b55
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 8]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x14]
cmp dword [eax + 0x10], 0
jne 0x4f8aec
mov byte [ebp - 0xd], 3
mov al, byte [ebp - 0xd]
push eax
mov eax, dword [ebp - 0x14]
add eax, 0x16
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0xc], 0
je 0x4f8b83
cmp byte [ebp - 0xd], 1
je 0x4f8b83
cmp byte [ebp - 0xd], 0
jne 0x4f8ad6
jmp 0x4f8b83
xor eax, eax
mov dword [ebp - 0x1c], eax
push 3
mov eax, dword [ebp - 0x34]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
inc edi
dec esi
jne 0x4f8a27
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x28]
jne 0x4f8be6
lea edx, [ebp - 0x4c]
mov eax, dword [0x558c4c]
call fcn.00406820
mov eax, dword [ebp - 0x4c]
call fcn.004f8614
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x28]
jne 0x4f8be6
xor eax, eax
mov dword [ebp - 0x1c], eax
push 3
mov eax, dword [ebp - 0x34]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x28]
je 0x4f8bb0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 8]
dec esi
test esi, esi
jl 0x4f8d35
inc esi
xor edi, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, edi
call fcn.004be0ac
mov ebx, eax
mov ax, word [ebx + 8]
add eax, 0xfffffff3
sub ax, 2
jae 0x4f8d2d
mov al, byte [ebx + 0xa]
add al, 0xfe
sub al, 2
jae 0x4f8d2d
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x2c]
je 0x4f8c4a
lea edx, [ebp - 0x50]
mov eax, dword [0x5593c8]
call fcn.00406820
mov eax, dword [ebp - 0x50]
call fcn.004f8614
jmp 0x4f8d35
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
mov eax, ebx
call fcn.004f61b8
mov ebx, eax
test ebx, ebx
jne 0x4f8c89
mov ecx, 0x12c5
mov edx, 0x4f900c
mov eax, 0x4f904c
call fcn.004043a4
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x2c]
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x1c], eax
lea edx, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov eax, ebx
call fcn.004b76c8
mov al, byte [ebp - 0xd]
push eax
mov eax, dword [ebp - 0x14]
add eax, 0x16
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov dword [eax + 8], edx
mov eax, dword [ebx + 0x1c]
cmp eax, dword [ebp - 0x1c]
jbe 0x4f8cef
lea edx, [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov eax, ebx
call fcn.004b7774
mov edx, dword [ebp - 0x14]
mov eax, ebx
call fcn.004b7808
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
cmp dword [ebp - 0xc], 0
je 0x4f8d2d
cmp byte [ebp - 0xd], 1
je 0x4f8d2d
cmp byte [ebp - 0xd], 0
jne 0x4f8c90
inc edi
dec esi
jne 0x4f8bfb
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x2c]
jne 0x4f8db0
lea edx, [ebp - 0x54]
mov eax, dword [0x5595e4]
call fcn.00406820
mov eax, dword [ebp - 0x54]
call fcn.004f8614
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x2c]
jne 0x4f8db0
mov dword [ebp - 0x1c], 0x64
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x35]
push eax
lea ecx, [ebp - 0xd]
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb750
push 3
mov eax, dword [ebp - 0x34]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004f8284
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x2c]
je 0x4f8d5a
xor eax, eax
mov dword [ebp - 0x1c], eax
push 3
push 0
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, 5
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.004fb8f0
jmp 0x4f8dd9
mov eax, dword [ebp - 4]
call fcn.004f652c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4f8dfb
mov edx, dword [ebp - 0x34]
mov eax, dword [0x4aa854]
call fcn.004aac20
ret