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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41766b
mov eax, dword fs:[0]
push eax
sub esp, 0x17c
mov eax, dword [0x4213fc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
lea eax, [ebp - 0x158]
push eax
mov dword [ebp - 0x158], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x402268
mov eax, dword [0x424db8]
test al, 1
jne 0x40207f
or eax, 1
mov dword [0x424db8], eax
xor eax, eax
push 0x417bc0
mov dword [0x424d9c], 7
mov dword [0x424d98], 0
mov word [0x424d88], ax
call fcn.004087c9
add esp, 4
mov eax, dword [ebp - 0x154]
mov esi, 0x424d88
sub eax, 4
je 0x40216b
dec eax
je 0x40210e
dec eax
je 0x4020ac
push 7
push str.UnKnown
mov ecx, esi
call fcn.004031c0
jmp case.default.0x4020bb
mov eax, dword [ebp - 0x150]
cmp eax, 3
ja case.default.0x4020bb
jmp dword [eax*4 + 0x402284]
cmp byte [ebp - 0x3e], 1
mov ecx, esi
jne 0x4020d4
push str.Microsoft_Windows_Vista
jmp 0x4021ab
push str.Microsoft_Windows_Server_2008
jmp 0x4021ab
cmp byte [ebp - 0x3e], 1
mov ecx, esi
jne 0x4020f0
push str.Microsoft_Windows_7
jmp 0x4021ab
push str.Microsoft_Windows_Server_2008_R2
jmp 0x4021ab
push str.Microsoft_Windows_8
jmp 0x4021a9
push str.Microsoft_Windows_8.1
jmp 0x4021a9
mov eax, dword [ebp - 0x150]
sub eax, 0
je 0x402164
dec eax
je 0x40215d
dec eax
jne case.default.0x4020bb
cmp byte [ebp - 0x3e], 1
jne 0x402137
cmp word [ebp - 0x34], 9
jne 0x402137
push str.Microsoft_Windows_XP_Professional_x64_Edition
jmp 0x4021a9
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
jne 0x40214a
push str.Microsoft_Windows_Server_2003
jmp 0x4021a9
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je case.default.0x4020bb
push str.Microsoft_Windows_Server_2003_R2
jmp 0x4021a9
push str.Microsoft_Windows_XP
jmp 0x4021a9
push str.Microsoft_Windows_2000
jmp 0x4021a9
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x40218d
cmp eax, 0xa
je 0x402186
cmp eax, 0x5a
jne case.default.0x4020bb
push str.Microsoft_Windows_Me
jmp 0x4021a9
push str.Microsoft_Windows_98
jmp 0x4021a9
mov eax, dword [ebp - 0x148]
cmp eax, 2
jne 0x40219f
push str.Microsoft_Windows_NT_4.0
jmp 0x4021a9
cmp eax, 1
jne case.default.0x4020bb
push str.Microsoft_Windows_95
mov ecx, esi
call fcn.00403170
push 0
push ecx
push dword [0x424d98]
push ecx
mov ecx, esi
call fcn.004039c0
test eax, eax
jne 0x4021d3
push 7
push str.UnKnown
mov ecx, esi
call fcn.004031c0
push 0x41df14
mov edx, esi
lea ecx, [ebp - 0x188]
call fcn.004036f0
lea ecx, [ebp - 0x144]
push ecx
mov edx, eax
lea ecx, [ebp - 0x170]
mov dword [ebp - 4], 0
call fcn.004037e0
add esp, 8
mov ecx, esi
push eax
call fcn.004030c0
cmp dword [ebp - 0x15c], 8
jb 0x402222
push dword [ebp - 0x170]
call fcn.0040880d
add esp, 4
xor eax, eax
cmp dword [ebp - 0x174], 8
mov dword [ebp - 0x15c], 7
mov dword [ebp - 0x160], 0
mov word [ebp - 0x170], ax
jb 0x402256
push dword [ebp - 0x188]
call fcn.0040880d
add esp, 4
cmp dword [0x424d9c], 8
cmovae esi, dword [0x424d88]
mov eax, esi
jmp 0x40226a
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00408043
mov esp, ebp
pop ebp
ret