Function at 0x514570
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff8c
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov byte [ebp - 5], dl
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x514ed6
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
test al, al
jne 0x514ebb
mov eax, dword [ebp - 4]
call fcn.005159c0
xor eax, eax
push ebp
push 0x514ea9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.00515990
push 0
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x54]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x54]
push eax
xor ecx, ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
xor eax, eax
push ebp
push 0x514e8c
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add eax, eax
add eax, eax
add eax, eax
mov dword [ebp - 0x10], eax
test byte [ebp - 5], 8
je 0x5146ef
mov eax, dword [ebp - 4]
call fcn.0051618c
cmp dword [eax + 8], 0
jle 0x51465f
mov eax, dword [ebp - 4]
call fcn.0051618c
mov edx, dword [eax]
call dword [edx + 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov edi, eax
dec edi
test edi, edi
jl 0x5146ef
inc edi
xor ebx, ebx
inc dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x20]
cmp dword [eax + 8], 0
jle 0x5146eb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x18]
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x58]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x58]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
inc ebx
dec edi
jne 0x514674
test byte [ebp - 5], 4
je 0x514903
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov edi, eax
dec edi
test edi, edi
jl 0x5147d9
inc edi
xor ebx, ebx
inc dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050ec34
test al, al
je 0x5147d1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x1c]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x34]
call fcn.00511400
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x18]
pop edx
pop ecx
call fcn.00514558
test al, al
jne 0x5147d1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x34]
xor edx, edx
call fcn.005113a0
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x5c]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x5c]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
inc ebx
dec edi
jne 0x514712
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov edi, eax
sub edi, 2
test edi, edi
jl 0x514913
inc edi
xor ebx, ebx
inc dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
cmp dword [eax + 0x34], 0
je 0x5148f9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x34]
call fcn.00511508
add al, 0xfe
sub al, 2
jae 0x5148f9
lea edx, [ebx + 1]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005122a8
call fcn.0050ec34
test al, al
jne 0x5148f9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
lea edx, [ebp - 0x20]
call fcn.0050e8f4
lea edx, [ebx + 1]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005122a8
lea edx, [ebp - 0x30]
call fcn.0050e8f4
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x40]
push eax
call sub.user32.dll_IntersectRect
test eax, eax
je 0x5148f9
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x40]
push eax
call sub.user32.dll_EqualRect
test eax, eax
je 0x5148b0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x34]
xor edx, edx
call fcn.00511518
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x60]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x60]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
inc ebx
dec edi
jne 0x5147f4
jmp 0x514913
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add eax, eax
add dword [ebp - 0xc], eax
test byte [ebp - 5], 2
je 0x5149e6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov ebx, eax
dec ebx
cmp ebx, 1
jl 0x5149f4
inc dword [ebp - 0xc]
mov esi, ebx
dec esi
jmp 0x51493d
dec esi
test esi, esi
jle 0x51496d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.005122a8
cmp dword [eax + 0x34], 0
je 0x51496d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.005122a8
mov eax, dword [eax + 0x34]
call fcn.00511508
cmp al, 3
je 0x51493c
test esi, esi
jl 0x514992
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.005122a8
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
pop edx
call fcn.005109b4
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x64]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x64]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
dec ebx
test ebx, ebx
jne 0x514934
jmp 0x5149f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add dword [ebp - 0xc], eax
test byte [ebp - 5], 4
je 0x514ba7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov ebx, eax
dec ebx
cmp ebx, 0
jl 0x514b5e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov esi, eax
dec esi
cmp esi, 0
jl 0x514b13
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.0050d8ac
mov edx, dword [0x5016d8]
call fcn.00405a70
test al, al
jne 0x514af2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.0050d8ac
mov edx, dword [0x501234]
call fcn.00405a70
test al, al
jne 0x514af2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.0050d8ac
mov edx, dword [0x501ef0]
call fcn.00405a70
test al, al
jne 0x514af2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.0050d8ac
mov edx, dword [0x50207c]
call fcn.00405a70
test al, al
je 0x514b09
test ebx, ebx
jg 0x514af2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
dec eax
jne 0x514b09
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
mov edx, esi
call fcn.00504a1c
dec esi
cmp esi, 0xffffffff
jne 0x514a44
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050dbc8
test al, al
je 0x514b54
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
call fcn.005049d4
test eax, eax
jne 0x514b54
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.00405854
dec ebx
cmp ebx, 0xffffffff
jne 0x514a23
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x68]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x68]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
test byte [ebp - 5], 1
je 0x514cee
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov ebx, eax
dec ebx
cmp ebx, 0
jl 0x514cfc
inc dword [ebp - 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050dbc8
test al, al
jne 0x514ce2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050ec34
test al, al
je 0x514ce2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x34]
call fcn.005114dc
movzx esi, ax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.005105fc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050dbc8
test al, al
je 0x514c99
test ebx, ebx
jle 0x514c8c
mov edx, ebx
dec edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005122a8
call fcn.0050ec34
test al, al
je 0x514c8c
mov edi, ebx
dec edi
mov edx, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005122a8
mov eax, dword [eax + 0x34]
call fcn.005114dc
add ax, si
push eax
mov edx, edi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005122a8
mov eax, dword [eax + 0x34]
pop edx
call fcn.005114e4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.00504a1c
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x6c]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x6c]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
dec ebx
cmp ebx, 0xffffffff
jne 0x514bc8
jmp 0x514cfc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
add dword [ebp - 0xc], eax
test byte [ebp - 5], 4
je 0x514e32
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
mov ebx, eax
dec ebx
cmp ebx, 0
jl 0x514de9
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
cmp dword [eax + 0x34], 0
je 0x514d9e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov esi, dword [eax + 0x34]
mov eax, esi
call fcn.005114dc
test ax, ax
je 0x514d68
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
dec eax
jne 0x514d9e
mov eax, esi
call fcn.00511394
test al, al
jne 0x514d9e
mov eax, esi
call fcn.005114ec
test al, al
jne 0x514d9e
mov eax, esi
call fcn.00511508
sub al, 2
jb 0x514d97
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
call fcn.005049d4
dec eax
jne 0x514d9e
mov eax, esi
call fcn.00405854
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.0050dbc8
test al, al
je 0x514ddf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
mov eax, dword [eax + 0x30]
call fcn.005049d4
test eax, eax
jne 0x514ddf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
mov edx, ebx
call fcn.005122a8
call fcn.00405854
dec ebx
cmp ebx, 0xffffffff
jne 0x514d2b
mov eax, dword [ebp - 0x10]
push eax
push 0x64
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_MulDiv
push eax
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x70]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x70]
push eax
mov cl, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x514e93
call fcn.004043ec
test eax, eax
jne 0x514e4f
mov ebx, 0x64
jmp 0x514e51
xor ebx, ebx
push ebx
push 0
push 0
lea eax, [ebp - 0x50]
push eax
xor ecx, ecx
xor edx, edx
xor eax, eax
call fcn.00438acc
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x74]
mov eax, dword [0x6ab710]
call fcn.0040b558
mov eax, dword [ebp - 0x74]
push eax
mov cl, 2
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov si, 0xfffd
call fcn.00405ae0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x514edd
lea eax, [ebp - 0x74]
mov edx, 9
call fcn.00407c94
ret