Function at 0x408d50
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40b83c
mov eax, dword fs:[0]
push eax
sub esp, 0x144
mov eax, dword [0x42cf78]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
push 0x94
xor ebx, ebx
lea eax, [ebp - 0x14c]
push ebx
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0x14c]
push eax
mov dword [ebp - 0x14c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [ebp - 0x148]
mov ecx, dword [ebp - 0x144]
mov dword [esi + 0x3d4], eax
mov eax, dword [ebp - 0x140]
mov dword [esi + 0x3d0], ecx
mov dword [esi + 0x3cc], eax
cmp dword [esi + 0x3bc], ebx
jne 0x408e3b
test ecx, ecx
jne 0x408def
push str.Windows_95
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1520]
cmp dword [esi + 0x3d0], 0xa
jne 0x408e09
push str.Windows_98
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1520]
cmp dword [esi + 0x3d0], 0x5a
jne 0x408e23
push str.Windows_ME
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1520]
lea eax, [ebp - 0x138]
push eax
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
jmp 0x4090b9
lea ecx, [ebp - 0x150]
call dword [sym.imp.mfc110.dll_Ordinal_316]
lea eax, [ebp - 0x138]
xorps xmm0, xmm0
push eax
lea ecx, [ebp - 0x150]
mov dword [ebp - 4], 0
mov byte [ebp - 0x1c], 0
movq qword [ebp - 0x1b], xmm0
mov byte [ebp - 0x13], 0
call dword [sym.imp.mfc110.dll_Ordinal_1520]
mov edi, 1
push edi
lea eax, [ebp - 0x1c]
push 0x40dd88
push eax
call fcn.00408230
add esp, 0xc
lea eax, [ebp - 0x1c]
push 0
push eax
lea ecx, [ebp - 0x150]
call dword [sym.imp.mfc110.dll_Ordinal_4595]
test eax, eax
jns 0x408ea6
inc edi
cmp edi, 9
jle 0x408e76
jmp 0x408eac
mov dword [esi + 0x3c8], edi
mov eax, dword [esi + 0x3d4]
cmp eax, 5
jae 0x408ec0
cmp dword [esi + 0x3c8], 6
jb 0x408ec5
mov ebx, 1
cmp eax, 4
jne 0x408ed1
push str.Windows_NT_4.0
jmp 0x408efe
cmp eax, 5
jb 0x408f0a
cmp dword [esi + 0x3d0], 0
jne 0x408ef0
push str.Windows_2000
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1520]
cmp dword [esi + 0x3d0], 1
jne 0x408f0a
push str.Windows_XP
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1520]
test ebx, ebx
je 0x409080
push 0x9c
lea eax, [ebp - 0xb8]
push 0
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [ebp - 0xb8]
push eax
mov dword [ebp - 0xb8], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x409080
cmp byte [ebp - 0x1e], 1
jne 0x408fbd
cmp dword [ebp - 0xb4], 5
jne 0x408fa3
cmp dword [ebp - 0xb0], 1
jne 0x408f89
test dword [ebp - 0x20], 0x200
lea ecx, [esi + 0x3b8]
je 0x408f75
push str._Home_Edition
jmp 0x408f7a
push str._Professional_Edition
call dword [sym.imp.mfc110.dll_Ordinal_1687]
cmp dword [ebp - 0xb4], 5
jne 0x408fa3
cmp dword [ebp - 0xb0], 0
jne 0x408fbd
push str._Professional
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
cmp dword [ebp - 0xb4], 4
jne 0x408fbd
push str._Workstation
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
mov al, byte [ebp - 0x1e]
cmp al, 3
je 0x408fcc
cmp al, 2
jne 0x409080
cmp dword [ebp - 0xb4], 5
jne 0x409046
mov eax, dword [ebp - 0x20]
test al, 2
je 0x408ff0
push str._Advanced
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
mov eax, dword [ebp - 0x20]
test al, al
jns 0x409008
push str._DataCenter
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
mov eax, dword [ebp - 0x20]
test al, 0x10
je 0x409020
push str._Terminal
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
mov eax, dword [ebp - 0x20]
test al, 4
je 0x409035
push str._BackOffice
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
push str._Server
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
cmp dword [ebp - 0xb4], 4
jne 0x409069
cmp dword [ebp - 0xb0], 0
jne 0x409069
push str._Server
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
cmp byte [ebp - 0x1e], 2
jne 0x409080
push str._Domain_Controller
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
cmp dword [esi + 0x3c8], 0
jbe 0x4090ad
push 0x40d980
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
lea eax, [ebp - 0x138]
push eax
lea ecx, [esi + 0x3b8]
call dword [sym.imp.mfc110.dll_Ordinal_1687]
lea ecx, [ebp - 0x150]
call dword [sym.imp.mfc110.dll_Ordinal_1038]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00409946
mov esp, ebp
pop ebp
ret