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

Disassembly:
sub esp, 0x11c
mov eax, dword [0x4522d0]
xor eax, esp
mov dword [esp + 0x118], eax
xor eax, eax
push esi
mov esi, dword [esp + 0x124]
push 0x9c
push eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
lea eax, [esp + 0x38]
push eax
call fcn.00415c90
add esp, 0xc
lea ecx, [esp + 0x30]
push ecx
mov dword [esp + 0x34], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x408b87
mov eax, 1
pop esi
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.00415a83
add esp, 0x11c
ret
push ebx
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push str.GetNativeSystemInfo
push 0x44b14c
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
test eax, eax
je 0x408bb1
lea edx, [esp + 0x10]
push edx
call eax
jmp 0x408bbc
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [esp + 0x48], 2
jne 0x409682
cmp dword [esp + 0x3c], 4
jbe 0x409682
push str.Microsoft
push 0x100
push esi
call fcn.00401040
cmp dword [esp + 0x3c], 6
jne 0x409085
cmp dword [esp + 0x40], 0
jne 0x40956f
cmp byte [esp + 0xd2], 1
mov ecx, 0x100
mov eax, esi
jne 0x408c40
lea esp, [esp]
cmp byte [eax], 0
je 0x408c1f
add eax, 1
sub ecx, 1
jne 0x408c10
jmp 0x408c6f
test ecx, ecx
je 0x408c6f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Windows_Vista
sub ecx, eax
push ecx
jmp 0x408c67
cmp byte [eax], 0
je 0x408c4f
add eax, 1
sub ecx, 1
jne 0x408c40
jmp 0x408c6f
test ecx, ecx
je 0x408c6f
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Windows_Server_2008
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
push str.GetProductInfo
push 0x44b1a0
call edi
push eax
call ebx
lea ecx, [esp + 0xc]
push ecx
push 0
push 0
push 0
push 6
call eax
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
cmp eax, 0x11
ja case.0x408c9d.4
jmp dword [eax*4 + 0x4096ac]
mov ecx, 0x100
mov eax, esi
jmp 0x408cb0
cmp byte [eax], 0
je 0x408cc2
add eax, 1
sub ecx, 1
jne 0x408cb0
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Ultimate_Edition
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408d02
add eax, 1
sub ecx, 1
jne 0x408cf0
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push str.Home_Premium_Edition
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408d20
cmp byte [eax], 0
je 0x408d32
add eax, 1
sub ecx, 1
jne 0x408d20
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Home_Basic_Edition
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408d72
add eax, 1
sub ecx, 1
jne 0x408d60
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push 0x44b1f0
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408d90
cmp byte [eax], 0
je 0x408da2
add eax, 1
sub ecx, 1
jne 0x408d90
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Business_Edition
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408de2
add eax, 1
sub ecx, 1
jne 0x408dd0
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push str.Starter_Edition
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408e00
cmp byte [eax], 0
je 0x408e12
add eax, 1
sub ecx, 1
jne 0x408e00
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Cluster_Server_Edition
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408e52
add eax, 1
sub ecx, 1
jne 0x408e40
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push 0x44b240
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408e70
cmp byte [eax], 0
je 0x408e82
add eax, 1
sub ecx, 1
jne 0x408e70
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Datacenter_Edition__core_installation_
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408ec2
add eax, 1
sub ecx, 1
jne 0x408eb0
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push 0x44b27c
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408ee0
cmp byte [eax], 0
je 0x408ef2
add eax, 1
sub ecx, 1
jne 0x408ee0
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Enterprise_Edition__core_installation_
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408f32
add eax, 1
sub ecx, 1
jne 0x408f20
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push 0x44b2b8
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
jmp 0x408f50
cmp byte [eax], 0
je 0x408f62
add eax, 1
sub ecx, 1
jne 0x408f50
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Small_Business_Server
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x408f9f
add eax, 1
sub ecx, 1
jne 0x408f90
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push 0x44b300
jmp 0x408ff9
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x408fc0
add eax, 1
sub ecx, 1
jne 0x408fb1
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Standard_Edition__core_installation_
sub edx, eax
push edx
jmp 0x409008
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x408ff0
add eax, 1
sub ecx, 1
jne 0x408fe1
jmp case.0x408c9d.4
test ecx, ecx
je case.0x408c9d.4
push str.Web_Server_Edition
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
mov eax, dword [esp + 0x10]
cmp ax, 9
jne 0x40904a
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x409030
add eax, 1
sub ecx, 1
jne 0x409021
jmp 0x409085
test ecx, ecx
je 0x409085
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.__64_bit
sub edx, eax
push edx
jmp 0x40907d
test ax, ax
jne 0x409085
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x409065
add eax, 1
sub ecx, 1
jne 0x409056
jmp 0x409085
test ecx, ecx
je 0x409085
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.__32_bit
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
mov edi, 5
cmp dword [esp + 0x3c], edi
jne 0x40956f
cmp dword [esp + 0x40], 2
jne 0x409399
cmp word [esp + 0xd0], 0x2000
jne 0x4090d3
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x4090c4
add eax, 1
sub ecx, 1
jne 0x4090b2
jmp 0x409156
test ecx, ecx
je 0x409156
push str.Windows_Storage_Server_2003
jmp 0x40913f
cmp byte [esp + 0xd2], 1
jne 0x409120
cmp word [esp + 0x10], 9
jne 0x409120
mov ecx, 0x100
mov eax, esi
lea esp, [esp]
cmp byte [eax], 0
je 0x409102
add eax, 1
sub ecx, 1
jne 0x4090f0
jmp 0x40956f
test ecx, ecx
je 0x40956f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Windows_XP_Professional_x64_Edition
sub ecx, eax
push ecx
jmp 0x40914e
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x409136
add eax, 1
sub ecx, 1
jne 0x409127
jmp 0x409156
test ecx, ecx
je 0x409156
push str.Windows_Server_2003_
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
cmp byte [esp + 0xd2], 1
je 0x40938f
mov eax, dword [esp + 0x10]
cmp ax, 6
jne 0x4091e6
mov al, byte [esp + 0xd0]
test al, al
jns 0x4091b3
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x409192
add eax, 1
sub ecx, 1
jne 0x409180
jmp 0x40938f
test ecx, ecx
je 0x40938f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Datacenter_Edition_for_Itanium_based_Systems
sub ecx, eax
push ecx
jmp 0x409387
test al, 2
je 0x40938f
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x4091d4
add eax, 1
sub ecx, 1
jne 0x4091c2
jmp 0x40938f
test ecx, ecx
je 0x40938f
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x409378
cmp ax, 9
mov ecx, 0x100
jne 0x409297
mov al, byte [esp + 0xd0]
test al, al
jns 0x409235
mov eax, esi
cmp byte [eax], 0
je 0x409214
add eax, 1
sub ecx, 1
jne 0x409202
jmp 0x40938f
test ecx, ecx
je 0x40938f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Datacenter_x64_Edition
sub ecx, eax
push ecx
jmp 0x409387
test al, 2
mov eax, esi
je 0x409264
jmp 0x409240
cmp byte [eax], 0
je 0x409252
add eax, 1
sub ecx, 1
jne 0x409240
jmp 0x40938f
test ecx, ecx
je 0x40938f
push str.Enterprise_x64_Edition
jmp 0x409378
cmp byte [eax], 0
je 0x409276
add eax, 1
sub ecx, 1
jne 0x409264
jmp 0x40938f
test ecx, ecx
je 0x40938f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Standard_x64_Edition
sub ecx, eax
push ecx
jmp 0x409387
mov eax, dword [esp + 0xd0]
test eax, 0x4000
je 0x4092cb
mov eax, esi
cmp byte [eax], 0
je 0x4092b9
add eax, 1
sub ecx, 1
jne 0x4092a7
jmp 0x40938f
test ecx, ecx
je 0x40938f
push str.Compute_Cluster_Edition
jmp 0x409378
test al, al
jns 0x409304
mov eax, esi
cmp byte [eax], 0
je 0x4092e3
add eax, 1
sub ecx, 1
jne 0x4092d1
jmp 0x40938f
test ecx, ecx
je 0x40938f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Datacenter_Edition
sub ecx, eax
push ecx
jmp 0x409387
test al, 2
je 0x40932a
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x40931f
add eax, 1
sub ecx, 1
jne 0x409310
jmp 0x40938f
test ecx, ecx
je 0x40938f
push str.Enterprise_Edition
jmp 0x409378
test eax, 0x400
mov eax, esi
je 0x409360
cmp byte [eax], 0
je 0x409342
add eax, 1
sub ecx, 1
jne 0x409333
jmp 0x40938f
test ecx, ecx
je 0x40938f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Web_Edition
sub ecx, eax
push ecx
jmp 0x409387
cmp byte [eax], 0
je 0x40936f
add eax, 1
sub ecx, 1
jne 0x409360
jmp 0x40938f
test ecx, ecx
je 0x40938f
push str.Standard_Edition
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
cmp dword [esp + 0x3c], edi
jne 0x40956f
cmp dword [esp + 0x40], 1
jne 0x409459
mov ecx, 0x100
mov eax, esi
jmp 0x4093b0
cmp byte [eax], 0
je 0x4093bf
add eax, 1
sub ecx, 1
jne 0x4093b0
jmp 0x4093df
test ecx, ecx
je 0x4093df
mov eax, 0x100
sub eax, ecx
push str.Windows_XP
mov ecx, 0x100
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
test dword [esp + 0xd0], 0x200
mov ecx, 0x100
mov eax, esi
je 0x409420
cmp byte [eax], 0
je 0x409402
add eax, 1
sub ecx, 1
jne 0x4093f3
jmp 0x40944f
test ecx, ecx
je 0x40944f
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
push str.Home_Edition
sub edx, eax
push edx
jmp 0x409447
cmp byte [eax], 0
je 0x40942f
add eax, 1
sub ecx, 1
jne 0x409420
jmp 0x40944f
test ecx, ecx
je 0x40944f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push 0x44b4e4
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
cmp dword [esp + 0x3c], edi
jne 0x40956f
cmp dword [esp + 0x40], 0
jne 0x40956f
mov ecx, 0x100
mov eax, esi
jmp 0x409470
cmp byte [eax], 0
je 0x40947f
add eax, 1
sub ecx, 1
jne 0x409470
jmp 0x40949f
test ecx, ecx
je 0x40949f
mov eax, 0x100
sub eax, ecx
push str.Windows_2000
mov edx, 0x100
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
cmp byte [esp + 0xd2], 1
mov ecx, 0x100
jne 0x4094e3
mov eax, esi
cmp byte [eax], 0
je 0x4094c2
add eax, 1
sub ecx, 1
jne 0x4094b0
jmp 0x40956f
test ecx, ecx
je 0x40956f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Professional
sub ecx, eax
push ecx
jmp 0x409567
mov al, byte [esp + 0xd0]
test al, al
jns 0x40950a
mov eax, esi
cmp byte [eax], 0
je 0x4094ff
add eax, 1
sub ecx, 1
jne 0x4094f0
jmp 0x40956f
test ecx, ecx
je 0x40956f
push str.Datacenter_Server
jmp 0x409558
test al, 2
mov eax, esi
je 0x409540
cmp byte [eax], 0
je 0x40951f
add eax, 1
sub ecx, 1
jne 0x409510
jmp 0x40956f
test ecx, ecx
je 0x40956f
mov eax, 0x100
sub eax, ecx
mov ecx, 0x100
push str.Advanced_Server
sub ecx, eax
push ecx
jmp 0x409567
cmp byte [eax], 0
je 0x40954f
add eax, 1
sub ecx, 1
jne 0x409540
jmp 0x40956f
test ecx, ecx
je 0x40956f
push str.Server
mov eax, 0x100
sub eax, ecx
mov edx, 0x100
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
lea eax, [esp + 0x4c]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x409576
sub eax, edx
je 0x4095f5
mov ecx, 0x100
mov eax, esi
lea ebx, [ebx]
cmp byte [eax], 0
je 0x40959f
add eax, 1
sub ecx, 1
jne 0x409590
jmp 0x4095bf
test ecx, ecx
je 0x4095bf
mov eax, 0x100
sub eax, ecx
push 0x44b540
mov ecx, 0x100
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x4095d5
add eax, 1
sub ecx, 1
jne 0x4095c6
jmp 0x4095f5
test ecx, ecx
je 0x4095f5
mov eax, 0x100
sub eax, ecx
lea edx, [esp + 0x4c]
push edx
mov ecx, 0x100
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401040
mov edx, dword [esp + 0x44]
push edx
push str.__build__d_
lea eax, [esp + 0xdc]
push 0x50
push eax
call fcn.00413e60
add esp, 0x10
mov ecx, 0x100
mov eax, esi
cmp byte [eax], 0
je 0x409642
add eax, 1
sub ecx, 1
jne 0x409618
pop edi
pop ebx
mov eax, 1
pop esi
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.00415a83
add esp, 0x11c
ret
test ecx, ecx
je 0x409665
mov eax, 0x100
sub eax, ecx
lea ecx, [esp + 0xd4]
push ecx
mov edx, 0x100
sub edx, eax
push edx
add eax, esi
push eax
call fcn.00401040
pop edi
pop ebx
mov eax, 1
pop esi
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.00415a83
add esp, 0x11c
ret
push str.This_sample_does_not_support_this_version_of_Windows._n
call fcn.00416552
mov ecx, dword [esp + 0x128]
add esp, 4
pop edi
pop ebx
pop esi
xor ecx, esp
xor eax, eax
call fcn.00415a83
add esp, 0x11c
ret