Function at 0x5138f4
Capabilities:
Check os version
Get number of processors

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd30
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x2d0], ebx
mov dword [ebp - 0x2cc], ebx
mov dword [ebp - 0x1bc], ebx
mov dword [ebp - 0x1b8], ebx
mov esi, ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x5140d6
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 8]
mov byte [eax], 0
mov dword [ebp - 0xc], 0xffffffce
xor ecx, ecx
push ebp
push 0x513f96
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 8]
cmp dword [eax + 0x58], 1
je 0x513aaf
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx + 0x58]
cmp ebx, 0xffffffff
je 0x51396b
mov eax, dword [ebp - 8]
cmp ebx, 0xffffffeb
jne 0x51398d
mov dword [ebp - 0xc], 0xffffffeb
mov ecx, 0x5140f4
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffffe
jne 0x5139b7
mov dword [ebp - 0xc], 0xfffffff3
mov ecx, 0x514108
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffffd
jne 0x5139e1
mov dword [ebp - 0xc], 0xffffffef
mov ecx, 0x514120
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffffc
jne 0x513a0b
mov dword [ebp - 0xc], 0xffffff8c
mov ecx, 0x514138
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffffb
jne 0x513a32
mov dword [ebp - 0xc], 0xffffffee
mov ecx, 0x51414c
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffffa
jne 0x513a59
mov dword [ebp - 0xc], 0xffffffea
mov ecx, 0x514174
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
cmp ebx, 0xfffffff9
jne 0x513a80
mov dword [ebp - 0xc], 0xffffffe9
mov ecx, 0x514190
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
jmp 0x513aaf
mov eax, dword [ebp - 8]
mov dword [ebp - 0x1b4], ebx
mov byte [ebp - 0x1b0], 0
lea eax, [ebp - 0x1b4]
push eax
push 0
mov ecx, 0x5141b0
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c26c
call fcn.00403c24
mov eax, dword [ebp - 8]
cmp word [eax + 0x50], 2
jne 0x513ac7
mov eax, dword [ebp - 8]
cmp word [eax + 0x54], 0x11
jae 0x513b86
mov dword [ebp - 0xc], 0xffffffed
mov dword [ebp - 0x7c], 1
mov word [ebp - 0x88], 0xbef0
mov word [ebp - 0x86], 5
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xb0]
mov dword [ebp - 0x80], eax
mov byte [ebp - 0x70], 0
mov byte [ebp - 0x6f], 0
mov byte [ebp - 0x6e], 0
mov byte [ebp - 0x50], 0
mov byte [ebp - 0x32], 0
mov dl, 1
mov eax, dword [0x48aa5c]
call fcn.00403468
mov dword [ebp - 0x10], eax
mov edx, 0x78
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 4]
push 0
push 0
mov eax, dword [ebp - 0x10]
call fcn.00417ae4
lea edx, [ebp - 0x88]
mov ecx, 0x78
mov eax, dword [ebp - 0x10]
mov ebx, dword [eax]
call dword [ebx + 0x10]
mov eax, dword [ebp - 4]
test byte [eax + 6], 4
je 0x513b62
push 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov cx, word [eax + 0x78]
mov edx, dword [eax + 0x74]
mov eax, dword [ebp - 0x10]
call fcn.0048af50
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
mov edx, dword [ebp - 0x10]
call fcn.0048ffbc
mov ecx, 0x5141cc
mov dl, 1
mov eax, dword [0x407654]
call fcn.0040c230
call fcn.00403c24
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xb0]
mov edx, dword [ebp - 4]
mov dword [edx + 0x30], eax
mov eax, dword [ebp - 4]
mov dword [eax + 0x34], 0xffffffff
mov eax, dword [ebp - 4]
mov dword [eax + 0x38], 0xffffffff
mov eax, dword [ebp - 4]
mov dword [eax + 0x3c], 0xffffffff
mov eax, dword [ebp - 4]
add eax, 0x46
mov edx, dword [ebp - 8]
add edx, 0x14
mov cl, 0x1d
call fcn.00402cec
mov eax, dword [ebp - 4]
test byte [eax + 6], 4
je 0x513c33
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x10]
push dword [ebx + 0x74]
push 0x5141f4
lea edx, [ebp - 0x1b8]
mov eax, dword [ebx + 0x78]
call fcn.00408a48
push dword [ebp - 0x1b8]
mov eax, dword [ebp - 4]
add eax, 0x64
mov edx, 3
call fcn.00404608
push esi
push 0x5141f4
lea edx, [ebp - 0x1bc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x78]
call fcn.00408a48
push dword [ebp - 0x1bc]
mov eax, dword [ebp - 4]
add eax, 0x68
mov edx, 3
call fcn.00404608
jmp 0x513c53
mov eax, dword [ebp - 4]
add eax, 0x64
mov edx, 0x514200
call fcn.004042c0
mov eax, dword [ebp - 4]
add eax, 0x68
mov edx, 0x514214
call fcn.004042c0
mov eax, dword [ebp - 4]
add eax, 0x6c
mov edx, dword [ebp - 8]
add edx, 0x32
mov cl, 0x1d
call fcn.00402cec
mov eax, dword [ebp - 8]
mov ax, word [eax + 0x50]
mov edx, dword [ebp - 4]
mov word [edx + 0x8a], ax
mov eax, dword [ebp - 8]
mov ax, word [eax + 0x52]
mov edx, dword [ebp - 4]
mov word [edx + 0x8c], ax
mov eax, dword [ebp - 8]
mov ax, word [eax + 0x54]
mov edx, dword [ebp - 4]
mov word [edx + 0x8e], ax
mov eax, dword [ebp - 8]
mov ax, word [eax + 0x56]
mov edx, dword [ebp - 4]
mov word [edx + 0x90], ax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x5c]
mov edx, dword [ebp - 4]
mov dword [edx + 0x94], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
mov edx, dword [ebp - 4]
mov dword [edx + 0x98], eax
mov eax, dword [ebp - 8]
mov ax, word [eax + 0x64]
mov edx, dword [ebp - 4]
mov word [edx + 0x9c], ax
xor ebx, ebx
mov edi, dword [ebp - 8]
add edi, 0x66
mov esi, dword [0x51e2f8]
push esi
push edi
mov esi, edi
lea edi, [ebp - 0x1c8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop edi
pop esi
lea eax, [ebp - 0x1c8]
mov edx, esi
mov cl, 0xb
call fcn.00402fdc
xor eax, eax
mov al, bl
imul eax, eax, 0xb
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x1c8]
mov dword [edx + eax + 0x9e], ecx
mov ecx, dword [ebp - 0x1c4]
mov dword [edx + eax + 0xa2], ecx
mov cx, word [ebp - 0x1c0]
mov word [edx + eax + 0xa6], cx
mov cl, byte [ebp - 0x1be]
mov byte [edx + eax + 0xa8], cl
inc ebx
add esi, 0xb
add edi, 0xb
cmp bl, 6
jne 0x513ce7
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xa8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xe0], eax
mov eax, dword [ebp - 4]
add eax, 0xe4
mov edx, dword [ebp - 8]
add edx, 0xb4
call fcn.00402ce0
mov eax, dword [ebp - 4]
test byte [eax + 6], 8
je 0x513d8b
mov eax, 1
jmp 0x513d8d
xor eax, eax
mov edx, dword [ebp - 4]
test byte [edx + 6], 4
je 0x513dc7
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
mov ecx, dword [edx + 0x74]
push ecx
mov dx, word [edx + 0x78]
push edx
push eax
push 0
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 0xac]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0xb0]
call fcn.0048ee74
jmp 0x513dee
push 0x514228
push 0
push eax
push 0
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 0xac]
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0xb0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
call fcn.0048ee74
mov word [ebp - 0x88], 0xbef0
mov word [ebp - 0x86], 5
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xb0]
mov dword [ebp - 0x80], eax
mov byte [ebp - 0x70], 1
mov byte [ebp - 0x6f], 0
lea eax, [ebp - 0x2c8]
mov edx, dword [ebp + 0x14]
mov ecx, 0xff
call fcn.00404524
lea edx, [ebp - 0x2c8]
lea eax, [ebp - 0x6e]
mov cl, 0x1d
call fcn.00402cec
lea eax, [ebp - 0x2c8]
mov edx, dword [ebp + 0x10]
mov ecx, 0xff
call fcn.00404524
lea edx, [ebp - 0x2c8]
lea eax, [ebp - 0x50]
mov cl, 0x1d
call fcn.00402cec
lea eax, [ebp - 0x2c8]
mov edx, dword [ebp + 0xc]
mov ecx, 0xff
call fcn.00404524
lea edx, [ebp - 0x2c8]
lea eax, [ebp - 0x32]
mov cl, 0x1d
call fcn.00402cec
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3e8]
mov dword [ebp - 0x14], eax
xor eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x513f0b
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x48aa5c]
call fcn.00403468
mov dword [ebp - 0x10], eax
mov edx, 0x78
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
call dword [ecx + 4]
push 0
push 0
mov eax, dword [ebp - 0x10]
call fcn.00417ae4
lea edx, [ebp - 0x88]
mov ecx, 0x78
mov eax, dword [ebp - 0x10]
mov ebx, dword [eax]
call dword [ebx + 0x10]
push 0x514238
push 0x51424c
mov eax, dword [0x51e0d4]
mov eax, dword [eax]
mov cl, 3
xor edx, edx
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
xor ecx, ecx
mov edx, dword [ebp - 0x10]
call fcn.0048fdf0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x513f22
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x3e4]
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x30]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
call fcn.00490818
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1aa], 2
lea edx, [ebp - 0x1a6]
mov eax, dword [ebp - 4]
add eax, 0x46
call fcn.0050d940
lea edx, [ebp - 0x188]
mov eax, dword [ebp - 4]
add eax, 0xe4
call fcn.0050d9a0
mov eax, dword [ebp - 4]
mov byte [eax + 5], 0
lea edx, [ebp - 0x1aa]
mov ecx, 0x122
mov eax, dword [ebp - 4]
call fcn.00511e00
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5140a8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5140dd
lea eax, [ebp - 0x2d0]
mov edx, 2
call fcn.00404290
lea eax, [ebp - 0x1bc]
mov edx, 2
call fcn.00404290
ret