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

Disassembly:
push fcn.00522f60
push 0x401080
call fcn.0048fdb0
push 0x401190
push 0x4010b0
call fcn.0048fdb0
push 0x4011c0
push 0x4010e0
call fcn.0048fdb0
push 0x401250
push 0x401200
call fcn.0048fdb0
push 0x401330
push 0x401230
call fcn.0048fdb0
push 0x401440
push 0x401420
call fcn.0048fdb0
push 0x401490
push 0x401470
call fcn.0048fdb0
push 0x401520
push 0x401500
call fcn.0048fdb0
push 0x401690
push 0x401670
call fcn.0048fdb0
jmp 0x401870
push 0xffffffffffffffff
push 0x58b2e6
mov eax, dword fs:[0]
push eax
sub esp, 0x134
mov eax, dword [0x61c948]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x61c948]
xor eax, esp
push eax
lea eax, [esp + 0x144]
mov dword fs:[0], eax
call fcn.0045082d
xor ebx, ebx
mov ecx, 0x6551e4
mov dword [0x654ca0], ebx
call fcn.0040d5e0
fldz
fst qword [0x655208]
mov eax, 0x804
fld1
mov dword [0x654cb8], eax
fst qword [0x655210]
mov dword [0x654cb4], eax
mov dword [0x654cb0], eax
fstp qword [0x655220]
lea eax, [esp + 0x2c]
push eax
mov byte [0x654c8c], bl
fstp qword [0x655218]
mov dword [0x654c84], 0x64
mov dword [0x654c88], 0x32
mov dword [0x655200], ebx
mov byte [0x655228], 1
mov byte [0x655229], 1
mov byte [0x65522a], bl
mov dword [esp + 0x30], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [esp + 0x30]
cmp eax, 5
jb 0x401948
cmp dword [esp + 0x34], 1
jae 0x401951
cmp eax, 6
jae 0x401951
xor eax, eax
jmp 0x401956
mov eax, 1
xor edi, edi
mov byte [0x654c98], al
mov dword [0x654c9c], ebx
mov dword [esp + 0x18], edi
lea ecx, [esp + 0x10]
push ecx
push 0x20019
push ebx
push str.SOFTWAREMicrosoftDirectX
mov dword [esp + 0x15c], ebx
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x24], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
jne 0x401a6d
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], edi
call fcn.0045881f
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4019b7
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x10], esi
mov byte [esp + 0x14c], 1
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, 0x40
or eax, ecx
mov dword [esp + 0x14], 0x40
jge 0x4019f8
push 0x40
lea ecx, [esp + 0x14]
call fcn.0040a2d0
mov esi, dword [esp + 0x10]
lea ecx, [esp + 0x14]
push ecx
push esi
push str.Version
lea ecx, [esp + 0x24]
call fcn.00409e40
test eax, eax
jne 0x401a4a
mov edx, dword [esp + 0x14]
push edx
lea ecx, [esp + 0x14]
call fcn.0040a250
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x28]
push eax
push str._d._d._d._d
push esi
call fcn.00473dbb
mov ecx, dword [esp + 0x38]
add esp, 0x18
mov dword [0x654c9c], ecx
lea eax, [esi - 0x10]
mov byte [esp + 0x14c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401a6d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 1
call fcn.00401ac0
push 1
call fcn.00401e10
call fcn.0040ffd0
call fcn.00411060
cmp edi, ebx
je 0x401a90
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x144]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.004721e8
add esp, 0x140
ret