Function at 0x4efaf0
Capabilities:
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x5a2bf0
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov eax, dword [0x60aecc]
xor eax, esp
push eax
lea eax, [esp + 0x24]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [esi]
mov bl, byte [edi + 0x9f]
add edi, 0x9f
mov byte [esp + 0x1c], bl
mov dword [esp + 0x20], edi
mov byte [edi], 1
test bl, bl
mov dword [esp + 0x2c], 0
je 0x4efb67
call fcn.004ecd00
push 0x32
call fcn.004988c0
mov ecx, eax
call fcn.004987d0
mov byte [edi], bl
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
call fcn.004988c0
mov eax, dword [eax]
cmp byte [eax + 0x3b], 0
je 0x4efb87
push 0x64
call fcn.004988c0
mov ecx, eax
call fcn.004987d0
jmp 0x4efe1d
call fcn.004988c0
mov ecx, eax
call fcn.00498c10
mov ecx, eax
call fcn.004f6920
mov eax, dword [esi]
cmp dword [eax], 0
je 0x4efdee
cmp byte [eax + 0x6a], 0
jne 0x4efdee
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x68]
push eax
call edx
mov ebp, eax
xor ebx, ebx
cmp ebp, ebx
jge 0x4efc88
jmp 0x4efbd0
cmp ebp, 0x8876024b
je 0x4efdb0
call fcn.004988c0
mov eax, dword [eax]
cmp byte [eax + 0x36], 0
je 0x4efe1d
push 0x64
call fcn.004988c0
mov ecx, eax
call fcn.004987d0
cmp ebp, 0x88760245
je 0x4efe1d
cmp ebp, 0x887600e1
jne 0x4efc2d
call fcn.004988c0
mov ecx, dword [eax]
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, dword [ecx + 0x12b4]
mov edx, dword [eax]
mov edx, dword [edx + 0x50]
push 0x11
push ecx
push eax
call edx
mov ebp, eax
mov eax, ebx
add ebx, 1
cmp eax, 3
jg 0x4efe1d
test ebp, ebp
jl 0x4efbd0
je 0x4efc72
cmp ebp, 0x8876017c
jne 0x4efc55
call fcn.004988c0
mov ecx, eax
call fcn.004988b0
push 0x8a5
push str..dxdisplayhandler.cpp
push ebp
push 0x5a8554
push 0x5c85f0
call fcn.004dfae0
add esp, 0x14
push str.Restore:_Test_Cooperative_level_failed._Calling_SetDisplay
call fcn.004dfae0
add esp, 4
push 0
push 0
jmp 0x4efdff
mov eax, dword [esi]
cmp dword [eax + 0x94], 3
jae 0x4efd0a
call fcn.004988c0
mov eax, dword [eax]
cmp byte [eax + 0x36], bl
jne 0x4efcbc
mov ecx, esi
call fcn.004ecd00
mov byte [edi], bl
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
mov ecx, dword [esi]
mov edx, dword [ecx + 0x94]
push edx
push str.TPlatformData::Restore:_Working_count_too_small___d_._Calling_SetDisplay__
call fcn.004dfae0
mov eax, dword [esi]
movzx ecx, byte [eax + 0x5c]
mov edx, dword [eax + 0x34]
sub edx, dword [eax + 0x2c]
add esp, 8
push 0
push 0
push 1
push ecx
mov ecx, dword [eax + 0x30]
sub ecx, dword [eax + 0x28]
push edx
push ecx
mov ecx, esi
call fcn.004eda40
mov byte [edi], bl
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
push ecx
mov dword [eax + 0x94], ebx
mov edx, dword [esi]
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x5b3664
mov byte [edx + 0x69], bl
call fcn.00496da0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str.dxbroken
mov byte [esp + 0x38], 1
call fcn.00496da0
mov byte [esp + 0x34], 0
call fcn.00499d50
mov eax, dword [esi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x64]
add esp, 8
push eax
call edx
mov ebp, eax
test ebp, ebp
je 0x4efdcd
cmp ebp, 0x8876024b
je 0x4efda3
push str.RestoreAllSurfaces_failed__n
call fcn.004dfae0
add esp, 4
cmp ebp, 0x8876017c
jne 0x4efd84
call fcn.004988c0
mov ecx, eax
call fcn.004988b0
push 0x8d1
push str..dxdisplayhandler.cpp
push ebp
push 0x5a8554
push 0x5c85f0
call fcn.004dfae0
add esp, 0x14
jmp 0x4efdb0
push str.Restore:_RestoreAllSurfaces_resulted_in_DDERR_WRONGMODE._Calling_SetDisplay.
call fcn.004dfae0
add esp, 4
mov eax, dword [esi]
movzx ecx, byte [eax + 0x5c]
mov edx, dword [eax + 0x34]
sub edx, dword [eax + 0x2c]
push 0
push 0
push 1
push ecx
mov ecx, dword [eax + 0x30]
sub ecx, dword [eax + 0x28]
push edx
push ecx
jmp 0x4efe16
mov ecx, esi
call fcn.004ed920
call fcn.004988c0
mov ecx, dword [eax]
call fcn.004dcb10
call fcn.004a0970
mov ecx, eax
call fcn.004a0af0
jmp 0x4efe1d
push str.TPlatformData::Restore:_mDirectDraw_NULL._Calling_SetDisplay__
call fcn.004dfae0
add esp, 4
push 0
push 1
mov eax, dword [esi]
movzx edx, byte [eax + 0x5c]
mov ecx, dword [eax + 0x34]
sub ecx, dword [eax + 0x2c]
push 1
push edx
mov edx, dword [eax + 0x30]
sub edx, dword [eax + 0x28]
push ecx
push edx
mov ecx, esi
call fcn.004eda40
mov byte [edi], 0
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret