Function at 0x77477d29
Capabilities:
Get number of processors

Disassembly:
mov edi, edi
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x44
push esi
mov esi, ecx
mov dword [ebp - 0x10], edx
xor ecx, ecx
mov dword [ebp - 8], esi
push edi
mov edi, ecx
cmp dword [esi + 8], 0xddeeddee
jne 0x77477ea9
test byte [0x775358c8], 2
jne 0x774be6a8
mov ecx, dword [ebx + 8]
mov eax, ecx
and eax, 1
test cl, 8
jne 0x774be6db
test cl, 4
jne 0x774be6e3
mov edi, 0x100
test edi, ecx
jne 0x774be6ed
mov edi, ecx
and edi, 0xe00
jne 0x774be6f4
test cl, 0x10
jne 0x774be6fb
test cl, 2
jne 0x774be705
push dword [ebx + 0x10]
and eax, 0x11000001
mov ecx, esi
push dword [ebx + 0xc]
push eax
call fcn.77504275
mov edi, eax
test edi, edi
jne 0x77477e99
mov eax, dword fs:[0x18]
mov ecx, 0xc000000d
mov esi, dword fs:[0x18]
push ecx
mov dword [eax + 0xbf4], ecx
call fcn.774762b0
mov dword [esi + 0x34], eax
jmp 0x77477e2f
push eax
push eax
push edx
push edi
push 3
mov edx, esi
pop ecx
call fcn.774a6033
cmp byte [ebp - 1], 0
jne 0x774be88e
mov eax, dword fs:[0x18]
mov ecx, 0xc000000d
mov esi, dword fs:[0x18]
push ecx
mov dword [eax + 0xbf4], ecx
call fcn.774762b0
mov dword [esi + 0x34], eax
xor eax, eax
mov edi, eax
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc
mov ecx, dword [edi - 8]
movzx eax, ax
sub ecx, eax
add ecx, dword [ebp - 0x28]
lea eax, [ecx + edi]
cmp eax, edx
sbb al, al
not al
and byte [ebp - 1], al
je 0x774be887
jmp 0x774be891
mov esi, dword [ebp - 8]
xor edi, edi
inc edi
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x77477e70
xor ecx, ecx
mov word [eax], cx
mov eax, dword [ebx + 0xc]
xor ecx, ecx
test eax, eax
je 0x774bed7a
mov dword [eax], ecx
jmp 0x774bed7a
test dword [ebx + 8], 0x10000000
jne 0x77477e2f
mov edx, dword [ebp - 0x10]
mov ecx, esi
call 0x77502687
jmp 0x77477e2f
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x774be71f
jmp 0x774be70f
test dword [esi + 0x44], 0x1000000
je 0x774be756
push edx
mov edx, dword [ebx + 8]
mov ecx, esi
push edi
or edx, 2
call fcn.77461a20
movzx edi, al
test al, al
jne 0x77477e64
jmp 0x77477e2f
test edi, edi
je 0x77477e0a
mov edx, dword [ebp - 0x10]
cmp byte [edx - 1], 5
je 0x774be7b7
cmp byte [edi + 7], 0
jge 0x77477eb6
mov ecx, edi
shr ecx, 3
xor ecx, dword [edi]
xor ecx, dword [0x77538774]
xor ecx, esi
test cx, cx
jne 0x774bed65
jmp 0x774be8c7
push ecx
push 3
push edx
mov edx, esi
mov ecx, eax
call fcn.774effd9
test eax, eax
js 0x77477e0a
mov edx, dword [ebp - 0x10]
jmp 0x77477ee6
test edx, edx
je 0x77477d6b
test dx, dx
jne 0x774be6c6
mov eax, edx
shr eax, 0x10
push ecx
push eax
call fcn.7748c525
mov edx, dword [ebp - 0x10]
jmp 0x774be6c8
mov eax, ecx
test eax, eax
jne 0x77477d6b
sub edx, 8
mov dword [ebp - 0x10], edx
jmp 0x77477d6b
or eax, 2
jmp 0x77477d7c
or eax, 0x80000000
jmp 0x77477d85
or eax, edi
jmp 0x77477d92
or eax, edi
jmp 0x77477da0
or eax, 0x2000000
jmp 0x77477da9
or eax, 0x1000000
jmp 0x77477db2
test byte [0x775358c8], 2
mov ecx, dword [eax]
je 0x774be71d
add ecx, 0xfffffff8
mov dword [eax], ecx
mov eax, dword [0x77538684]
test al, 1
je 0x77477e2f
test al, 2
je 0x77477e2f
cmp esi, dword [0x77538770]
je 0x77477e2f
mov eax, dword fs:[0x30]
xor ecx, ecx
cmp dword [eax + 0x18], ecx
je 0x77477e2f
jmp 0x77477e8d
test byte [esi + 0x48], 1
jne 0x774be7a9
test dl, 7
jne 0x774be794
lea edi, [edx - 8]
cmp byte [edi + 7], 5
jne 0x774be773
movzx eax, byte [edi + 6]
shl eax, 3
sub edi, eax
test byte [edi + 7], 0x3f
jne 0x77477ed1
push ecx
push ecx
push ecx
push edi
push 8
mov edx, esi
pop ecx
call fcn.774a6033
xor ecx, ecx
mov edi, ecx
jmp 0x77477ed1
push ecx
push ecx
push ecx
push edx
push 9
mov edx, esi
pop ecx
call fcn.774a6033
xor ecx, ecx
jmp 0x77477ed1
mov ecx, esi
call fcn.77480f38
mov edi, eax
jmp 0x77477ed1
cmp byte [edi + 7], 0
jge 0x774be7cb
mov edx, edi
mov ecx, esi
call 0x7750ae59
mov edx, dword [ebp - 0x10]
jmp 0x774be7fa
xor eax, eax
cmp dword [esi + 0x4c], eax
je 0x774be7f8
mov eax, dword [edi]
mov ecx, eax
xor ecx, dword [esi + 0x50]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x40], ecx
mov al, byte [ebp - 0x3e]
xor al, byte [ebp - 0x3f]
xor al, cl
shr ecx, 0x18
cmp cl, al
je 0x774be7f8
xor eax, eax
mov byte [ebp - 1], al
jmp 0x77477df2
mov al, 1
mov byte [ebp - 1], al
test al, al
je 0x774be887
cmp byte [edi + 7], 0
jge 0x774be836
mov ecx, edi
shr ecx, 3
xor ecx, dword [edi]
xor ecx, dword [0x77538774]
xor ecx, esi
test cx, cx
je 0x774be825
xor ecx, ecx
mov eax, ecx
jmp 0x774be830
shr ecx, 0xd
mov eax, edi
sub eax, ecx
xor ecx, ecx
mov eax, dword [eax]
mov ax, word [eax + 0x14]
jmp 0x774be84f
xor ecx, ecx
cmp dword [esi + 0x4c], ecx
je 0x774be84c
mov eax, dword [edi]
test dword [esi + 0x4c], eax
je 0x774be847
xor eax, dword [esi + 0x50]
movzx eax, ax
jmp 0x774be84f
movzx eax, word [edi]
cmp byte [edi + 7], 4
movzx eax, ax
movzx eax, ax
mov dword [ebp - 0x28], eax
jne 0x774be87d
cmp dword [esi + 0x4c], ecx
je 0x774be875
mov eax, dword [edi]
test dword [esi + 0x4c], eax
je 0x774be86d
xor eax, dword [esi + 0x50]
movzx eax, ax
jmp 0x77477e3c
movzx eax, word [edi]
jmp 0x77477e3c
mov ecx, eax
shl ecx, 3
jmp 0x77477e47
xor eax, eax
jmp 0x77477df2
mov edx, dword [ebp - 0x10]
test dword [ebx + 8], 0x3c000102
lea ecx, [edx - 8]
mov eax, dword [ecx]
mov dword [ebp - 0x28], eax
jne 0x77477ee6
cmp byte [ecx + 7], 5
jne 0x774be8c0
movzx eax, byte [ecx + 6]
shl eax, 3
sub ecx, eax
mov eax, dword [ebp - 0x28]
add ecx, 8
jmp 0x77477f09
xor ecx, ecx
jmp 0x77477f09
shr ecx, 0xd
mov eax, edi
sub eax, ecx
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x774bed65
mov esi, dword [ecx + 4]
xor eax, eax
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 4]
shr eax, 8
movzx edx, ax
mov eax, dword [ecx]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x20], edx
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov eax, dword [esi + 0x10]
xor eax, ecx
mov dword [ebp - 0x28], ecx
xor eax, esi
xor eax, dword [0x77538774]
mov esi, eax
movzx eax, ax
shr esi, 0x10
imul esi, edx
add esi, dword [ebp - 0x14]
add eax, esi
cmp eax, edi
je 0x774be933
mov edx, dword [ecx + 0xc]
xor eax, eax
push eax
push eax
push eax
push edi
push 3
pop ecx
call fcn.774a6033
jmp 0x77477e5e
call fcn.77461a00
test eax, eax
je 0x774be94c
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0x50]
add eax, 0x226
jmp 0x774be951
mov eax, 0x7ffe0380
xor edx, edx
inc edx
cmp byte [eax], 0
je 0x774be97a
mov eax, dword fs:[0x30]
test byte [eax + 0x240], dl
je 0x774be97a
mov ecx, dword [ebp - 0x28]
lea edx, [edi + 8]
push 2
mov ecx, dword [ecx + 0xc]
call fcn.77502fe7
xor edx, edx
inc edx
cmp dx, word [0x7ffe036a]
sbb eax, eax
and eax, 0x64
mov dword [ebp - 0x2c], eax
xor eax, eax
mov ecx, eax
mov eax, dword [ebp - 0xc]
add eax, 0x10
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x24], eax
jmp 0x774be99e
mov eax, dword [ebp - 0x24]
mov esi, dword [eax]
mov eax, esi
shr eax, 0x10
mov dword [ebp - 0x18], esi
test eax, 0x8000
jne 0x774be9ca
mov ecx, esi
mov eax, esi
mov esi, dword [ebp - 0x24]
or ecx, 0x80000000
lock cmpxchg dword [esi], ecx
mov esi, dword [ebp - 0x18]
cmp eax, esi
je 0x774be9d9
mov ecx, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, dword [ebp - 0x2c]
jbe 0x774be99b
or esi, 0xffffffff
mov dword [ebp - 0x18], esi
mov byte [edi + 7], 0x80
cmp esi, 0xffffffff
jne 0x774bea0f
mov ecx, dword [ebp - 0xc]
lea edx, [edi + 8]
lea ecx, [ecx + 8]
jmp 0x774bea05
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
call fcn.77467900
jmp 0x77477e5e
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + 0x18]
btr dword [eax], ecx
xor eax, eax
cmp word [edi + 0xc], ax
je 0x774bea5b
lea ecx, [edi + 8]
call fcn.77448098
mov edx, eax
test edx, edx
je 0x774bea58
mov esi, dword [ebp - 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 [ebp - 0x1c]
mov dword [ebp - 0x20], edi
test edx, edx
jne 0x774bea37
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0xc]
xor edx, edx
inc edx
mov ecx, dword [ebp - 0x1c]
movzx eax, si
inc ecx
mov esi, dword [ebp - 0x20]
add eax, ecx
shl esi, 0x10
or eax, esi
mov esi, dword [edi]
cmp ax, word [edi + 0x18]
jne 0x774becb6
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi + 0x58]
mov dword [ebp - 0x28], ecx
mov ecx, dword [esi + 0x54]
cmp ecx, edx
jne 0x774beaac
mov ecx, dword [ebp - 0x20]
cmp ecx, dword [ebp - 0x28]
jb 0x774beaac
sub ecx, dword [ebp - 0x28]
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi]
mov edi, dword [ebp - 0x20]
cmp edi, dword [ecx + 0x14]
mov edi, dword [ebp - 0xc]
jb 0x774becb6
mov eax, dword [edi]
xor esi, esi
mov dword [ebp - 0x1c], eax
add eax, 4
xchg dword [eax], esi
test esi, esi
je 0x774bebbb
push 0xfffffffffffffff9
lea edx, [esi + 0x1c]
pop edi
mov eax, dword [edx]
mov ecx, eax
and ecx, edi
lock cmpxchg dword [edx], ecx
jne 0x774beac8
mov edi, dword [ebp - 0xc]
cmp eax, 6
je 0x774beb91
mov ecx, dword [ebp - 0x1c]
mov edx, esi
call fcn.77462c60
test al, al
je 0x774bebb8
mov edx, dword [esi + 0x1c]
test edx, edx
je 0x774bebb8
test dl, 2
jne 0x774bebb8
mov ecx, edx
lea edi, [esi + 0x1c]
or ecx, 2
mov eax, edx
lock cmpxchg dword [edi], ecx
mov edi, dword [ebp - 0xc]
cmp eax, edx
jne 0x774beaf0
mov edx, dword [esi]
xor eax, eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], eax
movzx ecx, word [edx + 0x5e]
add ecx, eax
and ecx, 0xf
lea edx, [edx + ecx*4]
add edx, 8
mov eax, dword [edx]
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x774beb56
mov ecx, esi
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x774bebb8
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x28], eax
cmp eax, 0x10
jae 0x774beb9b
mov edx, dword [ebp - 0x24]
jmp 0x774beb23
mov eax, dword [eax + 0x1c]
test al, 1
jne 0x774beb45
mov eax, dword [ebp - 0x24]
mov edx, esi
add eax, 8
lea ecx, [eax + ecx*4]
mov eax, dword [ebp - 0x20]
lock cmpxchg dword [ecx], edx
cmp eax, dword [ebp - 0x20]
jne 0x774beb45
mov esi, dword [ebp - 0x20]
push 0xfffffffffffffffd
pop edi
lea edx, [esi + 0x1c]
mov eax, dword [edx]
mov ecx, eax
and ecx, edi
lock cmpxchg dword [edx], ecx
jne 0x774beb7f
mov edi, dword [ebp - 0xc]
cmp eax, 2
jne 0x774bebb8
mov eax, dword [esi]
mov ecx, dword [eax]
xor eax, eax
mov dword [esi], eax
jmp 0x774bebb0
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.77467900
xor edx, edx
inc edx
test byte [edi + 0x16], 3
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov eax, dword [edi]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x2c], eax
je 0x774bec14
mov eax, dword [edi + 4]
mov ecx, edi
add eax, 0x101f
and eax, 0xfffff000
mov dword [ebp - 0x34], eax
call fcn.77444837
movzx ecx, word [edi + 0x18]
movzx eax, ax
imul ecx, eax
lea eax, [ebp - 0x38]
push eax
shl ecx, 3
mov dword [ebp - 0x30], ecx
mov ecx, dword [esi + 0xc]
call fcn.7744f147
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
push 0xffffffffffffffff
call fcn.77492e60
mov eax, dword [edi + 4]
xor ecx, ecx
push ecx
mov dword [eax + 0xc], ecx
mov ecx, esi
mov edx, dword [edi + 4]
call fcn.7745ff00
movzx eax, word [edi + 0x18]
mov ecx, dword [ebp - 0x2c]
neg eax
add ecx, 0x50
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], ecx
mov edi, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x2c], edx
lea esi, [edi + eax]
mov eax, edi
lea ecx, [edx - 1]
push ebx
mov ebx, esi
mov esi, dword [ebp - 0x20]
lock cmpxchg8b qword [esi]
pop ebx
cmp eax, edi
mov ecx, esi
mov eax, dword [ebp - 0x28]
jne 0x774bec39
cmp edx, dword [ebp - 0x2c]
jne 0x774bec39
mov esi, dword [ebp - 0xc]
xor ecx, ecx
mov eax, dword [ebp - 0x24]
mov dword [esi + 4], ecx
lock inc dword [eax + 0x20]
push 0xfffffffffffffffe
mov dword [esi + 0x10], ecx
lea edx, [esi + 0x1c]
pop edi
mov eax, dword [edx]
mov ecx, eax
and ecx, edi
lock cmpxchg dword [edx], ecx
jne 0x774bec7c
cmp eax, 1
jmp 0x774beca0
push 0xfffffffffffffffd
pop edi
lea edx, [esi + 0x1c]
mov eax, dword [edx]
mov ecx, eax
and ecx, edi
lock cmpxchg dword [edx], ecx
jne 0x774bec93
cmp eax, 2
jne 0x77477e5e
mov eax, dword [esi]
lea edx, [esi + 0x20]
mov ecx, dword [eax]
xor eax, eax
mov dword [esi], eax
jmp 0x774bea05
mov dword [edi + 0x10], eax
mov eax, dword [edi + 0x1c]
test al, 2
jne 0x77477e5e
mov edx, edi
mov ecx, esi
call fcn.77462c60
test al, al
je 0x77477e5e
lea esi, [edi + 0x1c]
mov edx, dword [esi]
test edx, edx
je 0x77477e5e
test dl, 2
jne 0x77477e5e
mov ecx, edx
mov eax, edx
or ecx, 2
lock cmpxchg dword [esi], ecx
cmp eax, edx
jne 0x774becd8
mov edx, dword [edi]
xor eax, eax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], eax
movzx ecx, word [edx + 0x5e]
add ecx, eax
and ecx, 0xf
lea eax, [ecx + 2]
lea eax, [edx + eax*4]
mov esi, dword [eax]
mov dword [ebp - 0x2c], eax
test esi, esi
jne 0x774bed31
mov esi, dword [ebp - 0x2c]
mov ecx, edi
xor eax, eax
lock cmpxchg dword [esi], ecx
test eax, eax
je 0x77477e5e
jmp 0x774bed54
mov eax, dword [esi + 0x1c]
test al, 1
jne 0x774bed54
mov eax, dword [ebp - 0x28]
mov edx, edi
add eax, 8
lea ecx, [eax + ecx*4]
mov eax, esi
lock cmpxchg dword [ecx], edx
cmp eax, esi
je 0x774bec8b
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x10
jb 0x774bed04
jmp 0x774be9ed
xor eax, eax
mov edx, esi
push eax
push eax
push eax
push edi
push 3
pop ecx
call fcn.774a6033
jmp 0x77477e61
mov eax, dword [0x77538684]
test al, 1
je 0x77477e2f
test al, 2
je 0x77477e2f
cmp esi, dword [0x77538770]
je 0x77477e2f
mov eax, dword fs:[0x30]
cmp dword [eax + 0x18], ecx
je 0x77477e2f
jmp 0x77477e84