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

Disassembly:
sub esp, 0xc0
push ebp
mov ebp, dword [esp + 0xcc]
mov ecx, ebp
push esi
mov esi, dword [esp + 0xcc]
mov edx, ecx
push edi
xor eax, eax
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
lea eax, [esp + 0xa8]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], 0x9c
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x40f2e7
mov eax, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
push ebx
sub eax, 4
mov ebx, 1
je 0x40f160
dec eax
je 0x40f121
dec eax
je 0x40f0dd
push 0x419a30
jmp 0x40f199
mov eax, dword [esp + 0x18]
sub eax, 0
je 0x40f10a
dec eax
jne 0x40f19c
cmp byte [esp + 0xaa], bl
jne 0x40f100
push str.Microsoft_Windows_7
jmp 0x40f199
push str.Microsoft_Windows_Server_2008_R2
jmp 0x40f199
cmp byte [esp + 0xaa], bl
jne 0x40f11a
push str.Microsoft_Windows_Vista
jmp 0x40f199
push str.Microsoft_Windows_Server_2008
jmp 0x40f199
mov eax, dword [esp + 0x18]
sub eax, 0
je 0x40f159
dec eax
je 0x40f152
dec eax
jne 0x40f19c
cmp byte [esp + 0xaa], bl
jne 0x40f14b
cmp word [esp + 0xac], 9
jne 0x40f14b
push str.Microsoft_Windows_XP_Professional_x64_Edition
jmp 0x40f199
push str.Microsoft_Windows_Server_2003
jmp 0x40f199
push str.Microsoft_Windows_XP
jmp 0x40f199
push str.Microsoft_Windows_2000
jmp 0x40f199
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40f180
cmp eax, 0xa
je 0x40f179
cmp eax, 0x5a
jne 0x40f19c
push str.Microsoft_Windows_Me
jmp 0x40f199
push str.Microsoft_Windows_98
jmp 0x40f199
mov eax, dword [esp + 0x20]
cmp eax, 2
jne 0x40f190
push str.Microsoft_Windows_NT_4.0
jmp 0x40f199
cmp eax, ebx
jne 0x40f19c
push str.Microsoft_Windows_95
push esi
call edi
mov eax, dword [esp + 0x14]
sub eax, 5
je 0x40f235
dec eax
jne 0x40f2cb
mov eax, dword [esp + 0x18]
sub eax, 0
je 0x40f1e7
dec eax
jne 0x40f2cb
cmp byte [esp + 0xaa], bl
jne 0x40f2cb
cmp word [esp + 0xa8], 0x100
jne 0x40f2cb
push str._Ultimate
jmp 0x40f2c8
cmp byte [esp + 0xaa], bl
je 0x40f21b
mov eax, dword [esp + 0xa8]
cmp ax, 0x80
jne 0x40f207
push str.Datacenter_Server
jmp 0x40f2c8
cmp ax, 2
jne 0x40f2cb
push str.Enterprise
jmp 0x40f2c8
cmp word [esp + 0xa8], 0x200
jne 0x40f2cb
push str.Home
jmp 0x40f2c8
mov eax, dword [esp + 0x18]
sub eax, 0
je 0x40f2b8
dec eax
je 0x40f290
dec eax
jne 0x40f2cb
mov eax, dword [esp + 0xa8]
cmp ax, 0x400
jne 0x40f25c
push str.Web_Edition
jmp 0x40f2c8
cmp ax, 0x4000
jne 0x40f269
push str.Compute_Cluster_Edition
jmp 0x40f2c8
cmp ax, 0x2000
jne 0x40f276
push str.Storage_Server
jmp 0x40f2c8
cmp ax, 0x80
jne 0x40f283
push str.Datacenter_Edition
jmp 0x40f2c8
cmp ax, 2
jne 0x40f2cb
push str.Enterprise_Edition
jmp 0x40f2c8
mov eax, dword [esp + 0xa8]
cmp ax, 0x40
jne 0x40f2a4
push str.Embedded
jmp 0x40f2c8
cmp ax, 0x200
jne 0x40f2b1
push str.Home_Edition
jmp 0x40f2c8
push str.Professional
jmp 0x40f2c8
cmp word [esp + 0xa8], 2
jne 0x40f2cb
push str.Advanced_Server
push esi
call edi
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
xor edx, edx
cmp eax, ebp
pop ebx
setle dl
pop edi
pop esi
mov eax, edx
pop ebp
add esp, 0xc0
ret
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0xc0
ret