Function at 0x1a9a7c1
Capabilities:
Get number of processors

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
push ebx
push esi
push edi
xor edi, edi
mov ebx, ecx
mov edx, edi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edx
mov al, byte [ebx + edx*4 + 0x1bf]
xor ecx, ecx
inc ecx
test cl, al
jne 0x1a9a7fb
mov dword [esp + 0x24], ecx
mov ecx, edi
mov dword [esp + 0x10], ecx
jmp 0x1a9a81a
test byte [ebx + 0x1b8], cl
jne 0x1a9a7ef
mov eax, dword [0x1ac6100]
mov ecx, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], ecx
test eax, eax
je 0x1a9a9ba
test ecx, ecx
jne 0x1a9a827
mov esi, dword [ebx + edx*4 + 0x3c0]
jmp 0x1a9a838
imul esi, ecx, 0x68
mov ecx, dword [esp + 0x10]
add esi, 0xffffff98
add esi, dword [ebx + edx*4 + 0x5c4]
test esi, esi
je 0x1a9a9ab
mov eax, dword [esi + 0x54]
cmp eax, 1
jne 0x1a9a9ab
mov edx, ecx
mov ecx, esi
call fcn.01a9a0f5
mov ebx, eax
test ebx, ebx
je 0x1a9a99f
mov ecx, dword [esi]
mov dword [ecx + 0x14], edi
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0xc]
mov ecx, ebx
shr ecx, 3
xor ecx, dword [0x1ac8774]
xor ecx, edx
xor ecx, dword [ebx]
test cx, cx
jne 0x1a9a8d6
shr ecx, 0xd
sub eax, ecx
mov edi, dword [eax]
mov dword [esp + 0x20], edi
test edi, edi
je 0x1a9a8d4
mov eax, dword [ebx + 4]
xor edx, edx
mov ecx, dword [edi + 4]
shr eax, 8
mov dword [esp + 0x1c], edx
movzx edx, ax
mov eax, dword [edi]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov eax, dword [ecx + 0x10]
xor eax, esi
xor eax, dword [0x1ac8774]
xor eax, ecx
mov ecx, eax
movzx eax, ax
shr ecx, 0x10
imul ecx, edx
add ecx, dword [esp + 0x14]
add eax, ecx
cmp eax, ebx
je 0x1a9a8e7
mov edx, dword [esi + 0xc]
xor edi, edi
push edi
push edi
push edi
push ebx
push 3
pop ecx
call fcn.01a36033
jmp 0x1a9a99f
call fcn.019f1a00
test eax, eax
je 0x1a9a900
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0x50]
add eax, 0x226
jmp 0x1a9a905
mov eax, 0x7ffe0380
cmp byte [eax], 0
je 0x1a9a928
mov eax, dword fs:[0x30]
xor ecx, ecx
inc ecx
test byte [eax + 0x240], cl
je 0x1a9a928
mov ecx, dword [esi + 0xc]
lea edx, [ebx + 8]
push 2
call fcn.01a92fe7
xor eax, eax
inc eax
cmp ax, word [0x7ffe036a]
sbb eax, eax
and eax, 0x64
mov dword [esp + 0x38], eax
xor eax, eax
mov edx, eax
lea eax, [edi + 0x10]
mov dword [esp + 0x34], eax
jmp 0x1a9a94b
lea eax, [edi + 0x10]
mov esi, dword [eax]
mov eax, esi
shr eax, 0x10
mov dword [esp + 0x30], esi
test eax, 0x8000
jne 0x1a9a977
mov edi, dword [esp + 0x34]
mov ecx, esi
or ecx, 0x80000000
mov eax, esi
lock cmpxchg dword [edi], ecx
mov edi, dword [esp + 0x20]
cmp eax, esi
je 0x1a9a985
inc edx
cmp edx, dword [esp + 0x38]
jbe 0x1a9a948
or esi, 0xffffffff
mov dword [esp + 0x30], esi
mov byte [ebx + 7], 0x80
cmp esi, 0xffffffff
jne 0x1a9aa42
lea edx, [ebx + 8]
lea ecx, [edi + 8]
call fcn.019f7900
xor edi, edi
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, dword [esp + 0x24]
jb 0x1a9a81a
inc edx
mov dword [esp + 0x28], edx
cmp edx, 0x81
jb 0x1a9a7e1
lea eax, [ebx + 0x38]
mov dword [esp + 0x24], 0xc
mov dword [esp + 0x28], eax
mov ecx, eax
mov esi, edi
call fcn.019d8098
mov edi, eax
test edi, edi
je 0x1a9ae28
mov ebx, edi
xor eax, eax
mov edi, dword [edi]
inc eax
mov cl, byte [ebx + 8]
shl eax, cl
mov ecx, 0x78000
cmp eax, ecx
jbe 0x1a9aa04
mov eax, ecx
movzx ecx, word [ebx + 0xa]
mov edx, ebx
add ecx, eax
add dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
push ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0xc]
call fcn.019ece5e
inc esi
call fcn.019f1a00
test eax, eax
je 0x1a9adc4
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0x50]
add eax, 0x226
jmp 0x1a9adc9
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov eax, dword [eax + 0x18]
btr dword [eax], ebx
xor eax, eax
cmp word [edi + 0xc], ax
je 0x1a9aa93
lea ecx, [edi + 8]
call fcn.019d8098
mov edx, eax
test edx, edx
je 0x1a9aa93
mov esi, dword [esp + 0x14]
mov ecx, dword [edx - 4]
mov eax, dword [esi + 0x18]
mov edx, dword [edx]
shr ecx, 8
movzx edi, cx
btr dword [eax], edi
inc dword [esp + 0x1c]
mov dword [esp + 0x18], edi
test edx, edx
jne 0x1a9aa6a
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
movzx eax, si
inc ecx
mov esi, dword [edi]
add eax, ecx
shl ebx, 0x10
or eax, ebx
cmp ax, word [edi + 0x18]
jne 0x1a9acd7
mov ecx, dword [esi]
mov ebx, dword [esi + 0x58]
mov edx, dword [ecx + 0x10]
mov ecx, dword [esi + 0x54]
cmp ecx, 1
jne 0x1a9aacf
cmp edx, ebx
jb 0x1a9aacf
mov ecx, dword [esi]
sub edx, ebx
cmp edx, dword [ecx + 0x14]
jb 0x1a9acd7
mov eax, dword [edi]
xor esi, esi
mov dword [esp + 0x18], eax
add eax, 4
xchg dword [eax], esi
test esi, esi
je 0x1a9abe1
push 0xfffffffffffffff9
lea ebx, [esi + 0x1c]
pop edx
mov eax, dword [ebx]
mov ecx, eax
and ecx, edx
lock cmpxchg dword [ebx], ecx
jne 0x1a9aaec
cmp eax, 6
jne 0x1a9ab08
mov eax, dword [esi]
mov ecx, dword [eax]
xor eax, eax
mov dword [esi], eax
jmp 0x1a9abd9
mov ecx, dword [esp + 0x18]
mov edx, esi
call fcn.019f2c60
test al, al
je 0x1a9abe1
mov edx, dword [ebx]
test edx, edx
je 0x1a9abe1
test dl, 2
jne 0x1a9abe1
mov ecx, edx
mov eax, edx
or ecx, 2
lock cmpxchg dword [ebx], ecx
cmp eax, edx
jne 0x1a9ab1b
mov edx, dword [esi]
xor eax, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], eax
movzx ecx, word [edx + 0x5e]
add ecx, eax
and ecx, 0xf
lea edx, [edx + ecx*4]
add edx, 8
mov ebx, dword [edx]
test ebx, ebx
jne 0x1a9ab6c
mov ecx, esi
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x1a9abe1
jmp 0x1a9ab8c
mov eax, dword [ebx + 0x1c]
xor edx, edx
inc edx
test dl, al
jne 0x1a9ab8c
mov eax, dword [esp + 0x1c]
mov edx, esi
add eax, 8
lea ecx, [eax + ecx*4]
mov eax, ebx
lock cmpxchg dword [ecx], edx
cmp eax, ebx
je 0x1a9aba0
mov eax, dword [esp + 0x30]
inc eax
mov dword [esp + 0x30], eax
cmp eax, 0x10
jae 0x1a9abc4
mov edx, dword [esp + 0x1c]
jmp 0x1a9ab49
push 0xfffffffffffffffd
lea edx, [ebx + 0x1c]
pop esi
mov eax, dword [edx]
mov ecx, eax
and ecx, esi
lock cmpxchg dword [edx], ecx
jne 0x1a9aba8
cmp eax, 2
jne 0x1a9abe1
mov eax, dword [ebx]
lea edx, [ebx + 0x20]
mov ecx, dword [eax]
xor eax, eax
mov dword [ebx], eax
jmp 0x1a9abdc
mov eax, dword [esi]
movzx ecx, word [eax + 0x5c]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + ecx*4 + 0x3c0]
add ecx, 0x48
lea edx, [esi + 0x20]
call fcn.019f7900
test byte [edi + 0x16], 3
mov eax, dword [esp + 0x18]
mov esi, dword [edi]
mov eax, dword [eax]
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x34], ebx
je 0x1a9ac43
mov eax, dword [edi + 4]
mov ecx, edi
add eax, 0x101f
and eax, 0xfffff000
mov dword [esp + 0x40], eax
call fcn.019d4837
movzx ecx, word [edi + 0x18]
movzx eax, ax
imul ecx, eax
lea eax, [esp + 0x44]
push eax
xor eax, eax
shl ecx, 3
mov dword [esp + 0x40], ecx
lea edx, [eax + 1]
mov ecx, dword [ebx + 0xc]
call fcn.019df147
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x4c]
push eax
push 0xffffffffffffffff
call fcn.01a22e60
mov eax, dword [edi + 4]
xor edx, edx
push ecx
mov ecx, ebx
mov dword [eax + 0xc], edx
mov edx, dword [edi + 4]
call fcn.019eff00
movzx eax, word [edi + 0x18]
mov edi, eax
mov dword [esp + 0x1c], eax
neg edi
lea eax, [esi + 0x50]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov edx, dword [eax + 4]
mov eax, esi
mov dword [esp + 0x38], edx
lea ebx, [esi + edi]
lea ecx, [edx - 1]
mov edi, dword [esp + 0x18]
lock cmpxchg8b qword [edi]
mov edi, dword [esp + 0x1c]
cmp eax, esi
mov eax, dword [esp + 0x18]
jne 0x1a9ac6d
cmp edx, dword [esp + 0x38]
jne 0x1a9ac6d
mov edi, dword [esp + 0x20]
xor ebx, ebx
mov eax, dword [esp + 0x34]
mov dword [edi + 4], ebx
lock inc dword [eax + 0x20]
push 0xfffffffffffffffe
mov dword [edi + 0x10], ebx
lea edx, [edi + 0x1c]
pop esi
mov eax, dword [edx]
mov ecx, eax
and ecx, esi
lock cmpxchg dword [edx], ecx
jne 0x1a9acb4
xor ecx, ecx
inc ecx
cmp eax, ecx
jne 0x1a9a99d
mov eax, dword [edi]
lea edx, [edi + 0x20]
mov ecx, dword [eax]
mov dword [edi], ebx
jmp 0x1a9a998
lea ebx, [edi + 0x1c]
mov dword [edi + 0x10], eax
mov eax, dword [ebx]
test al, 2
jne 0x1a9a99d
mov edx, edi
mov ecx, esi
call fcn.019f2c60
test al, al
je 0x1a9a99d
mov edx, dword [ebx]
test edx, edx
je 0x1a9a99d
test dl, 2
jne 0x1a9a99d
mov ecx, edx
mov eax, edx
or ecx, 2
lock cmpxchg dword [ebx], ecx
cmp eax, edx
jne 0x1a9acf8
mov eax, dword [edi]
xor edx, edx
mov dword [esp + 0x30], eax
mov ebx, edx
movzx ecx, word [eax + 0x5e]
add ecx, ebx
and ecx, 0xf
lea edx, [ecx + 2]
lea edx, [eax + edx*4]
mov esi, dword [edx]
test esi, esi
jne 0x1a9ad4b
mov ecx, edi
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x1a9a99d
jmp 0x1a9ad6b
mov eax, dword [esi + 0x1c]
xor edx, edx
inc edx
test dl, al
jne 0x1a9ad6b
mov eax, dword [esp + 0x30]
mov edx, edi
add eax, 8
lea ecx, [eax + ecx*4]
mov eax, esi
lock cmpxchg dword [ecx], edx
cmp eax, esi
je 0x1a9ad77
inc ebx
cmp ebx, 0x10
jae 0x1a9ada7
mov eax, dword [esp + 0x30]
jmp 0x1a9ad24
push 0xfffffffffffffffd
lea edx, [esi + 0x1c]
pop ebx
mov eax, dword [edx]
mov ecx, eax
and ecx, ebx
lock cmpxchg dword [edx], ecx
jne 0x1a9ad7f
xor edi, edi
cmp eax, 2
jne 0x1a9a99f
mov eax, dword [esi]
lea edx, [esi + 0x20]
mov ecx, dword [eax]
mov dword [esi], edi
call fcn.019f7900
jmp 0x1a9a99f
mov eax, dword [edi]
lea edx, [edi + 0x20]
movzx ecx, word [eax + 0x5c]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + ecx*4 + 0x3c0]
add ecx, 0x48
jmp 0x1a9a998
mov eax, 0x7ffe0380
cmp byte [eax], 0
je 0x1a9ae0b
mov eax, dword fs:[0x30]
xor ecx, ecx
inc ecx
test byte [eax + 0x240], cl
je 0x1a9ae0b
xor eax, eax
mov edx, ebx
push eax
mov eax, dword [esp + 0x10]
push dword [esp + 0x34]
mov ecx, dword [eax + 0xc]
call fcn.01a931c9
mov edx, ebx
xor eax, eax
mov ebx, dword [esp + 0xc]
push eax
push dword [esp + 0x34]
mov ecx, dword [ebx + 0xc]
call fcn.01a93250
jmp 0x1a9ae0f
mov ebx, dword [esp + 0xc]
test edi, edi
jne 0x1a9a9ed
test esi, esi
je 0x1a9ae28
mov eax, dword [esp + 0x28]
neg esi
add eax, 8
lock xadd dword [eax], esi
mov eax, dword [esp + 0x28]
add eax, 0x20
sub dword [esp + 0x24], 1
push 0
mov dword [esp + 0x2c], eax
pop edi
jne 0x1a9a9da
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x1a9ae52
neg ecx
lea eax, [ebx + 0x2c]
lock xadd dword [eax], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret