Function at 0x5001000
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebx
mov ebx, esp
push ecx
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, esp
sub esp, 0xd4
mov eax, dword [0x509ddfc]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, ecx
and dword [esi + 0xc], 0
push edi
lea eax, [ebp - 0xd0]
push eax
mov dword [ebp - 0xac], esi
mov byte [esi], 0
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 3], 0
mov byte [esi + 4], 0
mov byte [esi + 5], 0
mov byte [esi + 6], 0
mov byte [esi + 7], 0
mov byte [esi + 8], 0
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
movzx eax, word [ebp - 0xd0]
mov dword [esi + 0xc], eax
lea eax, [ebp - 0xa0]
push eax
mov dword [ebp - 0xa0], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x5001214
cmp dword [ebp - 0x9c], 5
ja 0x5001098
jne 0x50010d4
cmp dword [ebp - 0x98], 1
jb 0x50010d4
mov edi, dword [sym.imp.KERNEL32.dll_IsProcessorFeaturePresent]
push 3
call edi
test eax, eax
setne al
push 6
mov byte [esi + 4], al
call edi
test eax, eax
setne al
push 0xa
mov byte [esi + 5], al
call edi
test eax, eax
setne al
push 7
mov byte [esi + 6], al
mov byte [esi + 7], 0
call edi
test eax, eax
setne al
jmp 0x5001211
cmp dword [ebp - 0x90], 2
jne 0x50010fa
cmp word [ebp - 0xd0], 0
jne 0x5001214
cmp word [ebp - 0xb0], 5
jae 0x500110e
jmp 0x5001214
cmp dword [ebp - 0xb8], 0x24a
sbb al, al
inc al
je 0x5001214
mov byte [ebp - 0xa5], 0
mov byte [ebp - 0xa3], 0
mov byte [ebp - 0xa4], 0
mov byte [ebp - 0xa2], 0
mov byte [ebp - 0xa1], 0
push ebx
push esi
push edi
mov eax, 0x80000000
cpuid
cmp eax, 0x80000000
jbe 0x50011de
xor eax, eax
cpuid
cmp ebx, 0x756e6547
jne 0x5001164
cmp edx, 0x49656e69
jne 0x5001164
cmp ecx, 0x6c65746e
jne 0x5001164
jmp 0x5001196
cmp ebx, 0x68747541
jne 0x5001194
cmp edx, 0x69746e65
jne 0x5001194
cmp ecx, 0x444d4163
jne 0x5001194
mov eax, 0x80000001
cpuid
test edx, 0x80000000
je 0x5001196
mov byte [ebp - 0xa1], 1
jmp 0x5001196
jmp 0x50011de
cmp eax, 1
jl 0x50011de
mov eax, 1
cpuid
test edx, 0x2000000
je 0x50011b1
mov byte [ebp - 0xa3], 1
test edx, 0x4000000
je 0x50011c0
mov byte [ebp - 0xa4], 1
test ecx, 1
je 0x50011cf
mov byte [ebp - 0xa2], 1
test edx, 0x800000
je 0x50011de
mov byte [ebp - 0xa5], 1
pop edi
pop esi
pop ebx
mov esi, dword [ebp - 0xac]
mov al, byte [ebp - 0xa5]
mov byte [esi + 4], al
mov al, byte [ebp - 0xa3]
mov byte [esi + 5], al
mov al, byte [ebp - 0xa4]
mov byte [esi + 6], al
mov al, byte [ebp - 0xa2]
mov byte [esi + 7], al
mov al, byte [ebp - 0xa1]
mov byte [esi + 8], al
mov al, byte [esi + 5]
test al, al
jne 0x5001229
cmp byte [esi + 6], al
jne 0x5001225
cmp byte [esi + 7], al
je 0x5001289
test al, al
je 0x5001248
movss xmm1, dword [0x50773c0]
xorps xmm0, xmm0
movss xmm0, xmm1
cvtss2si eax, xmm0
cmp eax, 1
mov byte [esi + 5], 0
jne 0x5001248
mov byte [esi + 5], al
cmp byte [esi + 6], 0
je 0x500127f
push 2
pop eax
movd xmm0, eax
pshufd xmm0, xmm0, 0
cvtdq2pd xmm1, xmm0
movsd xmm0, qword [0x50773b8]
shufpd xmm0, xmm0, 0
divsd xmm1, xmm0
cvtsd2si eax, xmm1
cmp eax, 1
mov byte [esi + 6], 0
jne 0x500127f
mov byte [esi + 6], al
cmp byte [esi + 7], 0
je 0x5001289
mov byte [esi + 7], 0
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
xor ecx, ebp
pop esi
call fcn.05070186
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret