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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x194
mov eax, dword [0x445060]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 9
pop eax
mov ebx, ecx
mov dword [ebp - 0x1c], 0xf
mov ecx, eax
lea edi, [ebp - 0x194]
xor edx, edx
xor eax, eax
mov esi, 0x11c
mov dword [ebp - 0x20], edx
push esi
rep stosd dword es:[edi], eax
push edx
lea eax, [ebp - 0x168]
mov byte [ebp - 0x30], dl
push eax
call fcn.00413ea0
add esp, 0xc
mov dword [ebp - 0x168], esi
lea eax, [ebp - 0x168]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x40a93a
push 0x426bfa
mov ecx, ebx
call fcn.00401f3f
xor edi, edi
push edi
jmp 0x40aee7
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push str.GetNativeSystemInfo
push str.kernel32.dll
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
test eax, eax
je 0x40a964
lea ecx, [ebp - 0x194]
push ecx
call eax
jmp 0x40a971
lea eax, [ebp - 0x194]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0x158], 2
jne 0x40aed8
cmp dword [ebp - 0x164], 4
jbe 0x40aed8
push str.Microsoft
call fcn.00401f22
pop ecx
push eax
push str.Microsoft
lea ecx, [ebp - 0x30]
call fcn.00401cb5
push 6
pop eax
cmp dword [ebp - 0x164], eax
jne case.0x40aa70.5
cmp dword [ebp - 0x160], 0
jne 0x40a9ee
cmp byte [ebp - 0x4e], 1
jne 0x40a9d5
push str.Windows_Vista
call fcn.00401f22
pop ecx
push eax
push str.Windows_Vista
jmp 0x40a9e6
push str.Windows_Server_2008
call fcn.00401f22
pop ecx
push eax
push str.Windows_Server_2008
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp dword [ebp - 0x160], 1
jne 0x40aa29
cmp byte [ebp - 0x4e], 1
jne 0x40aa10
push str.Windows_7
call fcn.00401f22
pop ecx
push eax
push str.Windows_7
jmp 0x40aa21
push str.Windows_Server_2008_R2
call fcn.00401f22
pop ecx
push eax
push str.Windows_Server_2008_R2
lea ecx, [ebp - 0x30]
call fcn.00401cb5
push str.GetProductInfo
push str.kernel32.dll
call esi
push eax
call edi
lea ecx, [ebp - 0x170]
push ecx
xor ecx, ecx
push ecx
push ecx
push dword [ebp - 0x160]
push dword [ebp - 0x164]
call eax
mov eax, dword [ebp - 0x170]
cmp eax, 0x19
ja 0x40ab32
je 0x40ab28
dec eax
cmp eax, 0x11
ja case.0x40aa70.5
jmp dword [eax*4 + 0x40af07]
mov esi, str.Ultimate_Edition
push esi
call fcn.00401f22
pop ecx
push eax
push esi
jmp 0x40ab48
mov esi, str.Home_Premium_Edition
jmp 0x40aa7c
mov esi, str.Home_Basic_Edition
jmp 0x40aa7c
push str.Enterprise_Edition
call fcn.00401f22
pop ecx
push eax
push str.Enterprise_Edition
jmp 0x40ab48
mov esi, str.Business_Edition
jmp 0x40aa7c
mov esi, str.Starter_Edition
jmp 0x40aa7c
mov esi, str.Cluster_Server_Edition
jmp 0x40aa7c
push str.Datacenter_Edition
call fcn.00401f22
pop ecx
push eax
push str.Datacenter_Edition
jmp 0x40ab48
mov esi, str.Datacenter_Edition__core_installation_
jmp 0x40aa7c
mov esi, str.Enterprise_Edition__core_installation_
jmp 0x40aa7c
push str.Enterprise_Edition_for_Itanium_based_Systems
call fcn.00401f22
pop ecx
push eax
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x40ab48
mov esi, str.Small_Business_Server
jmp 0x40aa7c
push str.Standard_Edition
call fcn.00401f22
pop ecx
push eax
push str.Standard_Edition
jmp 0x40ab48
mov esi, str.Standard_Edition__core_installation_
jmp 0x40aa7c
mov esi, str.Web_Server_Edition
jmp 0x40aa7c
mov esi, str.Small_Business_Server_Premium_Edition
jmp 0x40aa7c
cmp eax, 0x30
jne case.0x40aa70.5
push str.Professional
call fcn.00401f22
pop ecx
push eax
push str.Professional
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp dword [ebp - 0x164], 5
jne 0x40ad92
mov eax, dword [ebp - 0x160]
cmp eax, 2
jne 0x40acd5
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x40ab7f
mov esi, str.Windows_Server_2003_R2_
jmp 0x40ab9d
test dword [ebp - 0x50], 0x2000
je 0x40ab8f
mov esi, str.Windows_Storage_Server_2003
jmp 0x40ab9d
test dword [ebp - 0x50], 0x8000
je 0x40abb3
mov esi, str.Windows_Home_Server
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
push 9
pop edi
jmp 0x40abe0
cmp byte [ebp - 0x4e], 1
push 9
pop edi
jne 0x40abca
mov esi, str.Windows_XP_Professional_x64_Edition
cmp word [ebp - 0x194], di
je 0x40abcf
mov esi, str.Windows_Server_2003_
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp byte [ebp - 0x4e], 1
je 0x40acc2
push 6
pop eax
cmp word [ebp - 0x194], ax
jne 0x40ac2f
test byte [ebp - 0x50], 0x80
je 0x40ac0f
mov esi, str.Datacenter_Edition_for_Itanium_based_Systems
push esi
call fcn.00401f22
pop ecx
push eax
push esi
jmp 0x40acba
test byte [ebp - 0x50], 2
je 0x40acc2
push str.Enterprise_Edition_for_Itanium_based_Systems
call fcn.00401f22
pop ecx
push eax
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x40acba
cmp word [ebp - 0x194], di
jne 0x40ac59
test byte [ebp - 0x50], 0x80
je 0x40ac45
mov esi, str.Datacenter_x64_Edition
jmp 0x40ac01
test byte [ebp - 0x50], 2
je 0x40ac52
mov esi, str.Enterprise_x64_Edition
jmp 0x40ac01
mov esi, str.Standard_x64_Edition
jmp 0x40ac01
mov eax, dword [ebp - 0x50]
test eax, 0x4000
je 0x40ac6a
mov esi, str.Compute_Cluster_Edition
jmp 0x40ac01
test al, al
jns 0x40ac81
push str.Datacenter_Edition
call fcn.00401f22
pop ecx
push eax
push str.Datacenter_Edition
jmp 0x40acba
test al, 2
je 0x40ac98
push str.Enterprise_Edition
call fcn.00401f22
pop ecx
push eax
push str.Enterprise_Edition
jmp 0x40acba
test eax, 0x400
je 0x40aca9
mov esi, str.Web_Edition
jmp 0x40ac01
push str.Standard_Edition
call fcn.00401f22
pop ecx
push eax
push str.Standard_Edition
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp dword [ebp - 0x164], 5
jne 0x40ad92
mov eax, dword [ebp - 0x160]
cmp eax, 1
jne 0x40ad31
mov esi, str.Windows_XP
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
test dword [ebp - 0x50], 0x200
je 0x40ad09
mov esi, str.Home_Edition
push esi
call fcn.00401f22
pop ecx
push eax
push esi
jmp 0x40ad1a
push str.Professional
call fcn.00401f22
pop ecx
push eax
push str.Professional
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp dword [ebp - 0x164], 5
jne 0x40ad92
mov eax, dword [ebp - 0x160]
test eax, eax
jne 0x40ad92
mov esi, str.Windows_2000
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
cmp byte [ebp - 0x4e], 1
jne 0x40ad64
push str.Professional
call fcn.00401f22
pop ecx
push eax
push str.Professional
jmp 0x40ad8a
test byte [ebp - 0x50], 0x80
je 0x40ad71
mov esi, str.Datacenter_Server
jmp 0x40ad81
test byte [ebp - 0x50], 2
mov esi, str.Advanced_Server
jne 0x40ad81
mov esi, str.Server
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
lea ecx, [ebp - 0x154]
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x40ad9d
sub ecx, edx
sar ecx, 1
je 0x40ae03
mov esi, 0x4270dc
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
mov dword [ebp - 0x16c], edi
mov edi, 0x101
push edi
call fcn.0040e18f
pop ecx
mov esi, eax
lea eax, [ebp - 0x154]
push 0xffffffffffffffff
push eax
push edi
lea eax, [ebp - 0x16c]
push esi
push eax
call fcn.0040e8bf
add esp, 0x14
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
mov esi, str._build
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
xor eax, eax
lea edi, [ebp - 0x17]
mov byte [ebp - 0x18], al
stosd dword es:[edi], eax
push 0xa
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x15c]
cdq
push edx
push eax
call fcn.0040d9c8
add esp, 0x10
lea eax, [ebp - 0x18]
lea ecx, [ebp - 0x48]
push eax
call fcn.00401f3f
push 0xffffffffffffffff
xor eax, eax
lea ecx, [ebp - 0x30]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.00401d57
xor eax, eax
lea ecx, [ebp - 0x48]
push eax
push 1
call fcn.00402153
mov esi, 0x42758c
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
push 6
pop eax
cmp dword [ebp - 0x164], eax
jb 0x40aebd
push 9
pop eax
cmp word [ebp - 0x194], ax
jne 0x40ae9d
mov esi, str.__64_bit
jmp 0x40aeac
cmp word [ebp - 0x194], 0
jne 0x40aebd
mov esi, str.__32_bit
push esi
call fcn.00401f22
pop ecx
push eax
push esi
lea ecx, [ebp - 0x30]
call fcn.00401cb5
xor eax, eax
mov dword [ebx + 0x14], 0xf
mov dword [ebx + 0x10], eax
mov ecx, ebx
mov byte [ebx], al
lea eax, [ebp - 0x30]
push eax
call fcn.00401e20
jmp 0x40aee4
push 0x426bfa
mov ecx, ebx
call fcn.00401f3f
xor eax, eax
push eax
push 1
lea ecx, [ebp - 0x30]
call fcn.00402153
mov ecx, dword [ebp - 4]
mov eax, ebx
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040c1f3
mov esp, ebp
pop ebp
ret