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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1e8
mov eax, dword [0x427014]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x118
xorps xmm0, xmm0
mov dword [ebp - 0x1c8], 0
lea eax, [ebp - 0x1bc]
push 0
push eax
movups xmmword [ebp - 0x1e8], xmm0
movups xmmword [ebp - 0x1d8], xmm0
call fcn.004080a0
add esp, 0xc
mov dword [ebp - 0x1c0], 0x11c
lea eax, [ebp - 0x1c0]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [ebp - 0x1bc]
push str.GetNativeSystemInfo
push 0x424508
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x1b8]
lea eax, [eax + ecx*2]
mov dword [0x658060], eax
movzx eax, word [ebp - 0xac]
lea ecx, [eax + eax*4]
movzx eax, word [ebp - 0xaa]
lea eax, [eax + ecx*2]
mov dword [0x658064], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x405b91
lea ecx, [ebp - 0x1e8]
push ecx
call eax
jmp 0x405b9e
lea eax, [ebp - 0x1e8]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0x1b0], 2
jne 0x405f71
cmp dword [ebp - 0x1bc], 4
jbe 0x405f71
push esi
mov ecx, 0x657f60
mov esi, str.Microsoft
mov edx, 0x80
sub esi, ecx
nop word [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x405bee
movzx eax, word [esi + ecx]
test ax, ax
je 0x405bee
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x405bd0
test edx, edx
lea eax, [ecx - 2]
pop esi
cmovne eax, ecx
xor ecx, ecx
cmp dword [ebp - 0x1bc], 6
mov word [eax], cx
jne case.0x405c95.5
cmp dword [ebp - 0x1b8], ecx
jne 0x405c2b
cmp byte [ebp - 0xa6], 1
jne 0x405c21
push 0x42453c
jmp 0x405c26
push 0x42455c
call fcn.004052d0
cmp dword [ebp - 0x1b8], 1
jne 0x405c4e
cmp byte [ebp - 0xa6], 1
jne 0x405c44
push 0x424588
jmp 0x405c49
push 0x4245a0
call fcn.004052d0
push str.GetProductInfo
push 0x424508
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [ebp - 0x1c4]
push ecx
push 0
push 0
push dword [ebp - 0x1b8]
push dword [ebp - 0x1bc]
call eax
mov eax, dword [ebp - 0x1c4]
dec eax
cmp eax, 0x2f
ja case.0x405c95.5
movzx eax, byte [eax + 0x405fd4]
jmp dword [eax*4 + 0x405f8c]
push str.Ultimate_Edition
jmp 0x405d11
push str.Professional
jmp 0x405d11
push str.Home_Premium_Edition
jmp 0x405d11
push str.Home_Basic_Edition
jmp 0x405d11
push str.Enterprise_Edition
jmp 0x405d11
push str.Business_Edition
jmp 0x405d11
push str.Starter_Edition
jmp 0x405d11
push str.Cluster_Server_Edition
jmp 0x405d11
push str.Datacenter_Edition
jmp 0x405d11
push str.Datacenter_Edition__core_installation_
jmp 0x405d11
push str.Enterprise_Edition__core_installation_
jmp 0x405d11
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x405d11
push str.Small_Business_Server
jmp 0x405d11
push str.Small_Business_Server_Premium_Edition
jmp 0x405d11
push str.Standard_Edition
jmp 0x405d11
push str.Standard_Edition__core_installation_
jmp 0x405d11
push str.Web_Server_Edition
call fcn.004052d0
cmp dword [ebp - 0x1bc], 5
jne 0x405eb8
mov eax, dword [ebp - 0x1b8]
cmp eax, 2
jne 0x405e39
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x405d45
push str.Windows_Server_2003_R2_
jmp 0x405d86
mov eax, dword [ebp - 0xa8]
test eax, 0x2000
je 0x405d59
push str.Windows_Storage_Server_2003
jmp 0x405d86
test eax, 0x8000
je 0x405d67
push str.Windows_Home_Server
jmp 0x405d86
cmp byte [ebp - 0xa6], 1
jne 0x405d81
cmp word [ebp - 0x1e8], 9
jne 0x405d81
push str.Windows_XP_Professional_x64_Edition
jmp 0x405d86
push str.Windows_Server_2003_
call fcn.004052d0
cmp byte [ebp - 0xa6], 1
je 0x405e26
mov ax, word [ebp - 0x1e8]
cmp ax, 6
jne 0x405dc1
mov eax, dword [ebp - 0xa8]
test al, al
jns 0x405db6
push str.Datacenter_Edition_for_Itanium_based_Systems
jmp 0x405e21
test al, 2
je 0x405e26
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x405e21
cmp ax, 9
mov eax, dword [ebp - 0xa8]
jne 0x405dea
test al, al
jns 0x405dd8
push str.Datacenter_x64_Edition
jmp 0x405e21
test al, 2
je 0x405de3
push str.Enterprise_x64_Edition
jmp 0x405e21
push str.Standard_x64_Edition
jmp 0x405e21
test eax, 0x4000
je 0x405df8
push str.Compute_Cluster_Edition
jmp 0x405e21
test al, al
jns 0x405e03
push str.Datacenter_Edition
jmp 0x405e21
test al, 2
je 0x405e0e
push str.Enterprise_Edition
jmp 0x405e21
test eax, 0x400
je 0x405e1c
push str.Web_Edition
jmp 0x405e21
push str.Standard_Edition
call fcn.004052d0
cmp dword [ebp - 0x1bc], 5
jne 0x405eb8
mov eax, dword [ebp - 0x1b8]
cmp eax, 1
jne 0x405e74
push 0x424b80
call fcn.004052d0
test dword [ebp - 0xa8], 0x200
je 0x405e5b
push str.Home_Edition
jmp 0x405e60
push str.Professional
call fcn.004052d0
cmp dword [ebp - 0x1bc], 5
jne 0x405eb8
mov eax, dword [ebp - 0x1b8]
test eax, eax
jne 0x405eb8
push 0x424bb4
call fcn.004052d0
cmp byte [ebp - 0xa6], 1
jne 0x405e92
push str.Professional
jmp 0x405eb3
mov eax, dword [ebp - 0xa8]
test al, al
jns 0x405ea3
push str.Datacenter_Server
jmp 0x405eb3
test al, 2
je 0x405eae
push str.Advanced_Server
jmp 0x405eb3
push str.Server
call fcn.004052d0
mov ecx, 0x80
lea eax, [ebp - 0x1ac]
cmp word [eax], 0
je 0x405ed1
add eax, 2
sub ecx, 1
jne 0x405ec3
mov eax, 0x80
mov edx, ecx
sub eax, ecx
neg edx
sbb edx, edx
and edx, eax
test ecx, ecx
je 0x405efe
test edx, edx
je 0x405efe
push 0x424c24
call fcn.004052d0
lea eax, [ebp - 0x1ac]
push eax
call fcn.004052d0
push dword [ebp - 0x1b4]
lea eax, [ebp - 0xa4]
push 0x424c28
push 0x50
push eax
call fcn.00405360
add esp, 0x10
lea eax, [ebp - 0xa4]
push eax
call fcn.004052d0
cmp dword [ebp - 0x1bc], 6
jb 0x405f7b
mov ax, word [ebp - 0x1e8]
cmp ax, 9
jne 0x405f54
push str.__64_bit
call fcn.004052d0
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040642a
mov esp, ebp
pop ebp
ret
test ax, ax
jne 0x405f7b
push str.__32_bit
call fcn.004052d0
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040642a
mov esp, ebp
pop ebp
ret
push str.Unknown_Windows_edition.
call fcn.004052d0
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040642a
mov esp, ebp
pop ebp
ret