Function at 0x403e74
Capabilities:
Get number of processors

Disassembly:
sub esp, 0xdc
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0xf0]
mov ecx, dword [eax]
call dword [ecx + 0x28]
call fcn.00408644
mov edx, dword [eax]
mov ebp, eax
call dword [edx + 0x20]
mov esi, dword [esp + 0xf0]
mov edi, dword [esi]
mov dword [esp + 0xe0], eax
cmp dword [edi], 0x41a970
sete cl
movzx ecx, cl
mov byte [esp + 0xe8], cl
xor cl, 1
je 0x403ed2
mov edx, dword [esp + 0xf4]
mov eax, dword [edx + 4]
call fcn.00409414
test eax, eax
jmp 0x403ed4
xor eax, eax
mov dword [esp + 0xe4], eax
je 0x403ee1
mov esi, eax
jmp 0x403f0f
mov ecx, dword [esp + 0xf4]
mov edx, dword [ecx + 4]
push edx
lea edi, [esp + 0xb0]
push edi
call fcn.0040934c
add esp, 8
mov esi, eax
lea edi, [esp + 0xa0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea esi, [esp + 0xa0]
lea edi, [esp + 0x94]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xf4]
mov ecx, dword [eax]
mov dword [esp + 0xb8], ecx
add ecx, dword [esp + 0xf8]
mov dword [esp + 0xdc], ecx
imul ecx, dword [esp + 0xe0]
mov dword [esp + 0xd4], ecx
mov edx, dword [esp + 0xb8]
imul edx, dword [esp + 0xe0]
mov dword [esp + 0xbc], edx
mov ebx, dword [eax + 4]
lea edi, [esp + 0x4c]
lea esi, [esp + 0x94]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, 0x10
test dword [esp + 0x50], 0xfffff000
jne 0x403f7e
xor eax, eax
add eax, dword [esp + 0x94]
sub ebx, eax
cmp dword [esp + 0x94], 0
je 0x404480
test dword [esp + 0x9c], 8
je 0x404480
cmp dword [esp + 0x98], 0x1000
jb 0x404306
lea eax, [esp + 0x94]
push eax
mov edx, dword [esp + 0xd8]
add edx, ebx
push edx
push dword [esp + 0xf0]
push ebp
mov eax, dword [esp + 0xcc]
add eax, ebx
call fcn.00408940
xor al, 1
je 0x404240
mov dword [esp + 0xd8], ebx
xor edi, edi
mov esi, dword [esp + 0xdc]
imul esi, dword [esp + 0xe0]
cmp esi, 0x1000
jbe 0x404060
xor edx, edx
mov eax, 0x3e8
bsr ebx, esi
inc ebx
mov ecx, ebx
push esi
sar ecx, 0x1f
push edi
call fcn.00411196
add eax, 0x64
mov ebx, 0x64
pop edi
pop esi
mov ecx, dword [esp + 0xdc]
adc edx, edi
mov dword [esp + 0x24], eax
mov eax, ecx
mov dword [esp + 0x28], edx
mul dword [esp + 0x28]
xchg ecx, eax
mul dword [esp + 0x24]
add edx, ecx
add eax, 0x63
adc edx, edi
xor ecx, ecx
push esi
push edi
call fcn.00411196
pop edi
mov edi, eax
pop esi
imul edi, dword [esp + 0xe0]
cmp esi, edi
jae 0x404066
mov esi, edi
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0x94]
add edx, dword [esp + 0xd8]
mov dword [esp + 0xc8], esi
cmp edx, dword [ecx]
mov dword [esp + 0x14], edx
jne 0x404509
mov ebx, dword [esp + 0xd8]
lea edi, [ebx + 0x11]
sub edi, dword [esp + 0x98]
mov eax, edi
lea edx, [esi + edi]
add eax, dword [esp + 0xd4]
push 0
push edx
push eax
push ecx
call fcn.004093a8
add esp, 0x10
test eax, eax
je 0x404509
mov dword [esp + 0x98], eax
lea esi, [esp + 0x94]
push esi
mov edi, dword [esp + 0xd8]
lea ecx, [edi + ebx]
push ecx
push dword [esp + 0xf0]
push ebp
mov eax, dword [esp + 0x24]
call fcn.00408940
test al, al
je 0x404509
mov cl, byte [esp + 0xe8]
mov ebx, dword [esp + 0xe4]
xor cl, 1
je 0x404761
lea esi, [esp + 0x94]
lea edi, [esp + 0x7c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [0x41e1a4]
mov edx, dword fs:[0x2c]
mov dword [esp + 0xc0], ebx
mov ecx, dword [edx + eax*4]
cmp dword [ecx + 0x30], 0
jne 0x40416a
push pe_nt_image_headers32
call fcn.0041105c
add esp, 4
mov esi, dword [0x41e1a4]
push pe_nt_image_headers32
mov edi, dword fs:[0x2c]
mov edx, dword [edi + esi*4]
push 0
mov dword [edx + 0x30], eax
push eax
call fcn.00411238
add esp, 0xc
mov eax, dword [0x41e1a4]
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + eax*4]
mov ebp, dword [esi + 0x30]
test ebx, ebx
je 0x4041f3
mov edi, dword fs:[0x2c]
mov edx, dword [edi + eax*4]
mov ecx, dword [edx + 0x34]
lea esi, [ecx + ecx*2]
lea esi, [esi*4]
add esi, ebp
cmp esi, ebx
je 0x40422d
mov edi, dword fs:[0x2c]
mov edx, dword [edi + eax*4]
mov ecx, dword [edx + 0x34]
lea esi, [ecx + ecx*2]
lea esi, [esi*4]
add esi, ebp
mov edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edx, dword [0x41e1a4]
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + edx*4]
mov edi, dword [esi + 0x34]
lea edx, [edi + edi*2]
lea edx, [edx*4]
add edx, ebp
mov dword [esp + 0xc0], edx
jmp 0x40422d
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + eax*4]
mov edi, dword [esi + 0x34]
inc edi
mov edx, dword fs:[0x2c]
mov eax, dword [edx + eax*4]
and edi, 7
lea ecx, [edi + edi*2]
mov dword [eax + 0x34], edi
lea ecx, [ecx*4]
add ecx, ebp
mov dword [esp + 0xc0], ecx
lea esi, [esp + 0x7c]
mov edi, dword [esp + 0xc0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x404761
mov cl, byte [esp + 0xe8]
mov ebx, dword [esp + 0xe4]
xor cl, 1
je 0x404761
test ebx, ebx
jne 0x404761
lea esi, [esp + 0x94]
lea edi, [esp + 0x70]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edx, dword [0x41e1a4]
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + edx*4]
cmp dword [ecx + 0x30], 0
jne 0x4042b2
push pe_nt_image_headers32
call fcn.0041105c
add esp, 4
mov esi, dword [0x41e1a4]
push pe_nt_image_headers32
mov edi, dword fs:[0x2c]
mov edx, dword [edi + esi*4]
push 0
mov dword [edx + 0x30], eax
push eax
call fcn.00411238
add esp, 0xc
mov eax, dword [0x41e1a4]
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + eax*4]
mov edi, dword fs:[0x2c]
mov edx, dword [edi + eax*4]
mov ecx, dword [edx + 0x34]
inc ecx
mov ebx, dword [esi + 0x30]
mov esi, dword fs:[0x2c]
mov eax, dword [esi + eax*4]
and ecx, 7
mov dword [eax + 0x34], ecx
lea edi, [ecx + ecx*2]
lea edi, [edi*4]
lea esi, [esp + 0x70]
add edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x404761
lea edx, [esp + 0x94]
push edx
mov ecx, dword [esp + 0xd8]
add ecx, ebx
push ecx
push dword [esp + 0xf0]
push ebp
mov eax, dword [esp + 0xcc]
add eax, ebx
call fcn.00408940
xor al, 1
je 0x4043ba
xor edi, edi
mov esi, dword [esp + 0xdc]
imul esi, dword [esp + 0xe0]
cmp esi, 0x1000
jbe 0x4043a8
xor edx, edx
mov eax, 0x3e8
bsr ebx, esi
inc ebx
mov ecx, ebx
push esi
sar ecx, 0x1f
push edi
call fcn.00411196
add eax, 0x64
mov ebx, 0x64
pop edi
pop esi
mov ecx, dword [esp + 0xdc]
adc edx, edi
mov dword [esp + 0x1c], eax
mov eax, ecx
mov dword [esp + 0x20], edx
mul dword [esp + 0x20]
xchg ecx, eax
mul dword [esp + 0x1c]
add edx, ecx
add eax, 0x63
adc edx, edi
xor ecx, ecx
push esi
push edi
call fcn.00411196
pop edi
mov edi, eax
pop esi
imul edi, dword [esp + 0xe0]
cmp esi, edi
jae 0x4043ae
mov esi, edi
mov dword [esp + 0xc8], esi
jmp 0x404509
mov dl, byte [esp + 0xe8]
mov ebx, dword [esp + 0xe4]
xor dl, 1
je 0x404761
test ebx, ebx
jne 0x404761
lea esi, [esp + 0x94]
lea edi, [esp + 0x58]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [0x41e1a4]
mov eax, dword fs:[0x2c]
mov edx, dword [eax + ecx*4]
cmp dword [edx + 0x30], 0
jne 0x40442c
push pe_nt_image_headers32
call fcn.0041105c
add esp, 4
mov esi, dword [0x41e1a4]
push pe_nt_image_headers32
mov edi, dword fs:[0x2c]
mov ecx, dword [edi + esi*4]
push 0
mov dword [ecx + 0x30], eax
push eax
call fcn.00411238
add esp, 0xc
mov eax, dword [0x41e1a4]
mov edx, dword fs:[0x2c]
mov esi, dword [edx + eax*4]
mov edi, dword fs:[0x2c]
mov ecx, dword [edi + eax*4]
mov edx, dword [ecx + 0x34]
inc edx
mov ebx, dword [esi + 0x30]
mov esi, dword fs:[0x2c]
mov eax, dword [esi + eax*4]
and edx, 7
mov dword [eax + 0x34], edx
lea edi, [edx + edx*2]
lea edi, [edi*4]
lea esi, [esp + 0x58]
add edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x404761
xor edi, edi
mov esi, dword [esp + 0xdc]
imul esi, dword [esp + 0xe0]
cmp esi, 0x1000
jbe 0x4044f2
xor edx, edx
mov eax, 0x3e8
bsr ebx, esi
inc ebx
mov ecx, ebx
push esi
sar ecx, 0x1f
push edi
call fcn.00411196
add eax, 0x64
mov ebx, 0x64
pop edi
pop esi
mov ecx, dword [esp + 0xdc]
adc edx, edi
mov dword [esp + 0x2c], eax
mov eax, ecx
mov dword [esp + 0x30], edx
mul dword [esp + 0x30]
xchg ecx, eax
mul dword [esp + 0x2c]
add edx, ecx
add eax, 0x63
adc edx, edi
xor ecx, ecx
push esi
push edi
call fcn.00411196
pop edi
mov edi, eax
pop esi
imul edi, dword [esp + 0xe0]
cmp esi, edi
jae 0x4044f8
mov esi, edi
mov dword [esp + 0xc8], esi
cmp dword [esp + 0x94], 0
je 0x40455d
mov ebx, dword [esp + 0xe4]
test ebx, ebx
je 0x40452f
push dword [esp + 0x94]
call fcn.004094f0
or eax, 8
mov dword [esp + 0xa0], eax
add esp, 4
push dword [esp + 0xc8]
lea edx, [esp + 0x98]
push edx
push dword [esp + 0xf8]
push ebp
lea eax, [esp + 0x50]
call fcn.0040951c
mov esi, eax
lea edi, [esp + 0x94]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x404589
mov dword [esp + 0xd0], esi
mov ebx, dword [esp + 0xe4]
push esi
push dword [esp + 0xf4]
push ebp
lea eax, [esp + 0x40]
call fcn.00408878
mov esi, eax
lea edi, [esp + 0x94]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x94]
mov eax, 0xffffffff
push ecx
push dword [esp + 0xd8]
push dword [esp + 0xf0]
push ebp
call fcn.00408940
mov dl, byte [esp + 0xe8]
xor dl, 1
je 0x4046f1
lea esi, [esp + 0x94]
lea edi, [esp + 0x64]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [0x41e1a4]
mov eax, dword fs:[0x2c]
mov dword [esp + 0xc4], ebx
mov edx, dword [eax + ecx*4]
cmp dword [edx + 0x30], 0
jne 0x404614
push pe_nt_image_headers32
call fcn.0041105c
add esp, 4
mov esi, dword [0x41e1a4]
push pe_nt_image_headers32
mov edi, dword fs:[0x2c]
mov ecx, dword [edi + esi*4]
push 0
mov dword [ecx + 0x30], eax
push eax
call fcn.00411238
add esp, 0xc
mov eax, dword [0x41e1a4]
mov edx, dword fs:[0x2c]
mov esi, dword [edx + eax*4]
mov edi, dword [esi + 0x30]
test ebx, ebx
mov dword [esp + 0xcc], edi
je 0x4046a9
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx + eax*4]
mov esi, dword [edx + 0x34]
lea ecx, [esi + esi*2]
lea ecx, [ecx*4]
add ecx, edi
cmp ecx, ebx
je 0x4046e3
mov edx, dword fs:[0x2c]
mov esi, dword [edx + eax*4]
mov ecx, dword [esi + 0x34]
lea esi, [ecx + ecx*2]
lea esi, [esi*4]
add esi, edi
mov edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edx, dword [0x41e1a4]
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + edx*4]
mov edi, dword [esi + 0x34]
lea edx, [edi + edi*2]
lea edx, [edx*4]
add edx, dword [esp + 0xcc]
mov dword [esp + 0xc4], edx
jmp 0x4046e3
mov ecx, dword fs:[0x2c]
mov esi, dword [ecx + eax*4]
mov edx, dword [esi + 0x34]
inc edx
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
and edx, 7
lea esi, [edx + edx*2]
mov dword [eax + 0x34], edx
lea esi, [esi*4]
add esi, edi
mov dword [esp + 0xc4], esi
lea esi, [esp + 0x64]
mov edi, dword [esp + 0xc4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x94]
lea edi, [esp + 0x88]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xb8]
imul eax, dword [esp + 0xe0]
push eax
mov ecx, dword [esp + 0xf8]
mov ebx, 0x10
push dword [ecx + 4]
test dword [esp + 0x94], 0xfffff000
mov dword [esp + 0x20], eax
jne 0x404737
xor ebx, ebx
add ebx, dword [esp + 0x9c]
push ebx
call fcn.00410ed0
mov eax, ebp
push ebx
mov edx, dword [esp + 0x28]
push edx
call fcn.004085b0
mov esi, dword [esp + 0x100]
mov dword [esi + 4], ebx
add esp, 0xc
mov ebx, dword [esp + 0xf4]
mov edx, dword [esp + 0xdc]
mov dword [ebx], edx
mov edx, dword [ebx + 4]
mov eax, dword [ebx]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xdc
ret