Function at 0x10003c60
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, edx
mov edi, ecx
lea eax, [ecx + 0x68]
mov dword [ebp - 0x1c], eax
push eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov ebx, dword [edi + 0x64]
test ebx, ebx
je 0x10003ca9
lea eax, [edi + 0x64]
mov dword [ebp - 0x10], eax
nop word [eax + eax]
push ebx
push esi
call dword [edi + 0x60]
add esp, 8
test eax, eax
je 0x10003ce6
not eax
shr eax, 0x1f
mov ebx, dword [ebx + eax*4 + 4]
test ebx, ebx
jne 0x10003c90
push dword [ebp - 0x1c]
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
test byte [0x1003c018], 4
je 0x10004052
sub esp, 0x10
mov dword [esp + 0xc], str.cannot_find_key_in_wrapper_lookup_n
mov dword [esp + 8], str.wrapper_remove_entry
mov dword [esp], 2
call dbg.wine_dbg_log
add esp, 0x24
jmp 0x10004055
mov edi, dword [ebx + 4]
mov edx, dword [ebx + 8]
test edx, edx
je 0x10003d0e
test edi, edi
je 0x10003d18
nop word cs:[eax + eax]
mov ecx, edx
mov edx, dword [edx + 4]
test edx, edx
jne 0x10003d00
mov edx, dword [ecx + 8]
jmp 0x10003d1a
lea eax, [ebx + 4]
mov dword [ebp - 0x14], eax
mov ecx, ebx
jmp 0x10003d22
mov ecx, ebx
lea eax, [ecx + 4]
mov dword [ebp - 0x14], eax
mov edi, edx
mov edx, dword [ecx]
mov eax, dword [ebp - 0x10]
test edx, edx
je 0x10003d37
lea esi, [edx + 4]
lea eax, [edx + 8]
cmp ecx, dword [edx + 4]
cmove eax, esi
mov dword [eax], edi
mov edx, dword [ecx]
test edi, edi
je 0x10003d41
mov dword [edi], edx
mov eax, dword [ecx + 0xc]
cmp ecx, ebx
je 0x10003d88
mov dword [ebp - 0x18], eax
movups xmm0, xmmword [ebx]
movups xmmword [ecx], xmm0
mov esi, dword [ecx]
mov eax, dword [ebp - 0x10]
test esi, esi
je 0x10003d6a
lea eax, [esi + 4]
mov dword [ebp - 0x20], eax
lea eax, [esi + 8]
cmp dword [esi + 4], ebx
cmove eax, dword [ebp - 0x20]
mov dword [eax], ecx
mov eax, dword [ecx + 8]
test eax, eax
je 0x10003d75
mov dword [eax], ecx
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
test eax, eax
je 0x10003d80
mov dword [eax], ecx
cmp edx, ebx
cmove edx, ecx
mov eax, dword [ebp - 0x18]
test al, 1
jne 0x10004027
test edx, edx
jne 0x10003dba
test edi, edi
je 0x10004027
mov eax, dword [edi + 0xc]
mov esi, edi
and eax, 0xfffffffe
mov dword [esi + 0xc], eax
jmp 0x10004027
or byte [ecx + 0xc], 1
mov edx, dword [edi]
test edx, edx
je 0x10003d9c
mov esi, edi
mov edi, edx
test esi, esi
je 0x10003dc9
mov eax, dword [esi + 0xc]
test al, 1
jne 0x10003da1
mov ecx, dword [edi + 4]
cmp esi, ecx
je 0x10003e30
test ecx, ecx
je 0x10003e80
mov eax, dword [ecx + 0xc]
test al, 1
je 0x10003e82
and eax, 0xfffffffe
mov dword [ecx + 0xc], eax
or byte [edi + 0xc], 1
mov eax, dword [edi]
mov ecx, dword [ebp - 0x10]
test eax, eax
je 0x10003e02
lea edx, [eax + 4]
lea ecx, [eax + 8]
cmp dword [eax + 4], edi
cmove ecx, edx
mov eax, dword [edi + 4]
mov dword [ecx], eax
mov ecx, dword [eax + 8]
mov dword [edi + 4], ecx
test ecx, ecx
je 0x10003e13
mov dword [ecx], edi
mov dword [eax + 8], edi
mov ecx, dword [edi]
mov dword [eax], ecx
mov dword [edi], eax
mov ecx, dword [edi + 4]
jmp 0x10003e82
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x10003ea8
mov eax, dword [ecx + 0xc]
test al, 1
je 0x10003eaa
and eax, 0xfffffffe
mov dword [ecx + 0xc], eax
or byte [edi + 0xc], 1
mov eax, dword [edi]
mov ecx, dword [ebp - 0x10]
test eax, eax
je 0x10003e5d
lea edx, [eax + 4]
lea ecx, [eax + 8]
cmp dword [eax + 4], edi
cmove ecx, edx
mov eax, dword [edi + 8]
mov dword [ecx], eax
mov ecx, dword [eax + 4]
mov dword [edi + 8], ecx
test ecx, ecx
je 0x10003e6e
mov dword [ecx], edi
mov dword [eax + 4], edi
mov ecx, dword [edi]
mov dword [eax], ecx
mov dword [edi], eax
mov ecx, dword [edi + 8]
jmp 0x10003eaa
xor ecx, ecx
mov edx, dword [ecx + 4]
test edx, edx
je 0x10003e90
mov eax, dword [edx + 0xc]
test al, 1
jne 0x10003ee6
mov esi, dword [ecx + 8]
test esi, esi
je 0x10003db0
mov eax, dword [esi + 0xc]
test al, 1
je 0x10003db0
jmp 0x10003edf
xor ecx, ecx
mov eax, dword [ecx + 4]
test eax, eax
je 0x10003ebd
mov edx, dword [eax + 0xc]
test dl, 1
jne 0x10003f7e
mov edx, dword [ecx + 8]
test edx, edx
je 0x10003db0
mov edx, dword [edx + 0xc]
test dl, 1
je 0x10003db0
lea esi, [ecx + 4]
mov dword [ebp - 0x14], esi
jmp 0x10003f8e
test edx, edx
je 0x10003ef0
mov eax, dword [edx + 0xc]
test al, 1
jne 0x10003f30
mov esi, dword [ecx + 8]
mov eax, dword [esi + 0xc]
and eax, 0xfffffffe
mov dword [esi + 0xc], eax
or byte [ecx + 0xc], 1
mov esi, dword [ecx]
mov edx, dword [ecx + 8]
mov eax, dword [ebp - 0x10]
test esi, esi
je 0x10003f16
lea eax, [esi + 4]
mov dword [ebp - 0x14], eax
lea eax, [esi + 8]
cmp dword [esi + 4], ecx
cmove eax, dword [ebp - 0x14]
mov dword [eax], edx
mov eax, dword [edx + 4]
mov dword [ecx + 8], eax
test eax, eax
je 0x10003f24
mov dword [eax], ecx
mov dword [edx + 4], ecx
mov eax, dword [ecx]
mov dword [edx], eax
mov dword [ecx], edx
mov ecx, dword [edi + 4]
mov eax, dword [ecx + 0xc]
and eax, 0xfffffffe
mov edx, dword [edi + 0xc]
and edx, 1
or edx, eax
mov dword [ecx + 0xc], edx
and byte [edi + 0xc], 0xfe
mov eax, dword [ecx + 4]
test eax, eax
je 0x10003f50
and byte [eax + 0xc], 0xfe
mov edx, dword [edi]
mov ecx, dword [edi + 4]
mov eax, dword [ebp - 0x10]
test edx, edx
je 0x10003f68
lea esi, [edx + 4]
lea eax, [edx + 8]
cmp dword [edx + 4], edi
cmove eax, esi
mov dword [eax], ecx
mov eax, dword [ecx + 8]
mov dword [edi + 4], eax
test eax, eax
je 0x10003f76
mov dword [eax], edi
mov dword [ecx + 8], edi
jmp 0x10004021
lea esi, [ecx + 4]
mov dword [ebp - 0x14], esi
mov esi, dword [ecx + 8]
test esi, esi
je 0x10003f96
mov edx, dword [esi + 0xc]
test dl, 1
jne 0x10003fd8
mov edx, dword [eax + 0xc]
and edx, 0xfffffffe
mov dword [eax + 0xc], edx
or byte [ecx + 0xc], 1
mov esi, dword [ecx]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x10]
test esi, esi
je 0x10003fbc
lea eax, [esi + 4]
mov dword [ebp - 0x18], eax
lea eax, [esi + 8]
cmp dword [esi + 4], ecx
cmove eax, dword [ebp - 0x18]
mov dword [eax], edx
mov eax, dword [edx + 8]
mov esi, dword [ebp - 0x14]
mov dword [esi], eax
test eax, eax
je 0x10003fcc
mov dword [eax], ecx
mov dword [edx + 8], ecx
mov eax, dword [ecx]
mov dword [edx], eax
mov dword [ecx], edx
mov ecx, dword [edi + 8]
mov eax, dword [ecx + 0xc]
and eax, 0xfffffffe
mov edx, dword [edi + 0xc]
and edx, 1
or edx, eax
mov dword [ecx + 0xc], edx
and byte [edi + 0xc], 0xfe
mov eax, dword [ecx + 8]
test eax, eax
je 0x10003ff8
and byte [eax + 0xc], 0xfe
mov edx, dword [edi]
mov ecx, dword [edi + 8]
mov eax, dword [ebp - 0x10]
test edx, edx
je 0x10004010
lea esi, [edx + 4]
lea eax, [edx + 8]
cmp dword [edx + 4], edi
cmove eax, esi
mov dword [eax], ecx
mov eax, dword [ecx + 4]
mov dword [edi + 8], eax
test eax, eax
je 0x1000401e
mov dword [eax], edi
mov dword [ecx + 4], edi
mov eax, dword [edi]
mov dword [ecx], eax
mov dword [edi], ecx
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
test eax, eax
je 0x10004034
and byte [eax + 0xc], 0xfe
push dword [ebp - 0x1c]
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
push ebx
push 0
push dword [eax + 0x18]
call dword [sym.imp.kernel32.dll_HeapFree]
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret