Function at 0x404a20
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42a3d7
mov eax, dword fs:[0]
push eax
sub esp, 0x148
mov eax, dword [0x434568]
xor eax, esp
mov dword [esp + 0x140], eax
push ebx
push esi
push edi
mov eax, dword [0x434568]
xor eax, esp
push eax
lea eax, [esp + 0x158]
mov dword fs:[0], eax
xor ebx, ebx
cmp byte [0x436c9c], bl
jne 0x404efe
mov eax, dword [0x436cc4]
mov edx, dword [eax + 4]
mov ecx, 0x436cc4
mov byte [esp + 0x28], bl
mov dword [esp + 0x24], ecx
mov byte [esp + 0x28], 1
call edx
mov dword [esp + 0x160], ebx
cmp byte [0x436c9c], bl
jne 0x404edf
mov dword [esp + 0x18], ebx
mov byte [esp + 0x160], 1
mov dword [esp + 0x14], ebx
mov byte [esp + 0x160], 2
mov dword [esp + 0x20], ebx
mov byte [esp + 0x160], 3
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x160], 4
push 0x42eae7
lea ecx, [esp + 0x24]
call fcn.00401480
push eax
lea ecx, [esp + 0x18]
call fcn.00401410
push eax
lea ecx, [esp + 0x1c]
call fcn.00401410
push 0x11c
lea eax, [esp + 0x30]
push ebx
push eax
call fcn.00416470
add esp, 0xc
lea ecx, [esp + 0x2c]
push ecx
mov dword [esp + 0x30], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp eax, ebx
je 0x404e9c
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [0x436cac], ecx
mov dword [0x436cb0], eax
cmp ecx, 6
jne 0x404bc7
cmp eax, 2
jne 0x404b6a
cmp byte [esp + 0x146], 1
lea ecx, [esp + 0x18]
jne 0x404b5b
push str.Windows_8
call fcn.00401480
jmp 0x404c46
push str.Windows_Server_2012
call fcn.00401480
jmp 0x404c46
cmp eax, 1
jne 0x404b9a
lea ecx, [esp + 0x18]
cmp byte [esp + 0x146], al
jne 0x404b8b
push str.Windows_7
call fcn.00401480
jmp 0x404c46
push str.Windows_Server_2008_R2
call fcn.00401480
jmp 0x404c46
cmp eax, ebx
jne 0x404c0a
cmp byte [esp + 0x146], 1
lea ecx, [esp + 0x18]
jne 0x404bbb
push str.Windows_Vista
call fcn.00401480
jmp 0x404c46
push str.Windows_Server_2008
call fcn.00401480
jmp 0x404c46
cmp ecx, 5
jne 0x404c0a
cmp eax, 2
jne 0x404be1
push str.Windows_Server_2003
lea ecx, [esp + 0x1c]
call fcn.00401480
jmp 0x404c46
cmp eax, 1
jne 0x404bf6
push str.Windows_XP
lea ecx, [esp + 0x1c]
call fcn.00401480
jmp 0x404c46
cmp eax, ebx
jne 0x404c0a
push str.Windows_2000
lea ecx, [esp + 0x1c]
call fcn.00401480
jmp 0x404c46
push str.Windows_NT
lea ecx, [esp + 0x1c]
call fcn.00401480
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
push ecx
push 0x42ec00
push ecx
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004018f0
add esp, 4
mov ecx, eax
call fcn.00403770
add esp, 4
push eax
call fcn.004018f0
mov al, byte [esp + 0x146]
cmp al, 1
jne 0x404cf6
cmp dword [esp + 0x30], 5
jne 0x404cd1
cmp dword [esp + 0x34], 1
jne 0x404cd1
mov eax, dword [esp + 0x144]
test eax, 0x200
je 0x404c78
push str.Home_Edition
jmp 0x404c88
test al, 0x40
je 0x404c83
push str.Embedded
jmp 0x404c88
push str.Professional
lea ecx, [esp + 0x18]
call fcn.00401480
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x57
call esi
test eax, eax
je 0x404ca9
push str.Media_Center
jmp 0x404dc2
push 0x58
call esi
test eax, eax
je 0x404cbb
push str.Starter_Edition
jmp 0x404dc2
push 0x56
call esi
test eax, eax
je 0x404dcb
push str.Tablet_PC_Edition
jmp 0x404dc2
test dword [esp + 0x144], 0x200
lea ecx, [esp + 0x14]
je 0x404cec
push str.Home_Edition
jmp 0x404dc6
push str.Professional
jmp 0x404dc6
cmp al, 3
je 0x404d02
cmp al, 2
jne 0x404dcb
mov eax, dword [esp + 0x30]
cmp eax, 6
jne 0x404d3c
mov al, byte [esp + 0x144]
test al, al
jns 0x404d20
push str.Datacenter_Edition
jmp 0x404dc2
lea ecx, [esp + 0x14]
test al, 2
je 0x404d32
push str.Enterprise_Edition
jmp 0x404dc6
push str.Standard_Edition
jmp 0x404dc6
cmp eax, 5
jne 0x404da0
cmp dword [esp + 0x34], 2
jne 0x404da0
mov eax, dword [esp + 0x144]
test al, al
jns 0x404d5a
push str.Datacenter_Edition
jmp 0x404d7b
test al, 2
je 0x404d65
push str.Enterprise_Edition
jmp 0x404d7b
mov edx, 0x400
cmp ax, dx
jne 0x404d76
push str.Web_Edition
jmp 0x404d7b
push str.Standard_Edition
lea ecx, [esp + 0x18]
call fcn.00401480
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x404dcb
push 0x42ecac
lea ecx, [esp + 0x18]
call fcn.00403770
jmp 0x404dcb
mov al, byte [esp + 0x144]
test al, al
jns 0x404db2
push str.Datacenter_Server
jmp 0x404dc2
test al, 2
je 0x404dbd
push str.Advanced_Server
jmp 0x404dc2
push str.Server
lea ecx, [esp + 0x18]
call fcn.00401480
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x20]
call fcn.004036c0
movzx ecx, word [esp + 0x38]
push ecx
push str.Build__d
lea edi, [esp + 0x28]
call fcn.00401be0
mov ecx, dword [esp + 0x24]
add esp, 8
cmp ecx, ebx
je 0x404e35
mov eax, dword [ecx + 4]
cmp eax, ebx
je 0x404e03
cmp byte [eax], bl
jne 0x404e0f
mov eax, dword [ecx + 8]
cmp eax, ebx
je 0x404e35
cmp word [eax], bx
je 0x404e35
push 0x42ecf4
lea edx, [esp + 0x20]
push edx
push 0x42ecf0
lea ecx, [esp + 0x2c]
call fcn.00403770
mov ecx, eax
call fcn.004016d0
mov ecx, eax
call fcn.00403770
lea eax, [esp + 0x18]
push eax
mov ecx, 0x436ca0
call fcn.00401410
lea ecx, [esp + 0x20]
push ecx
mov ecx, 0x436ca8
call fcn.00401410
lea edx, [esp + 0x14]
push edx
mov ecx, 0x436ca4
call fcn.00401410
lea eax, [esp + 0x1c]
push eax
mov ecx, 0x436cb4
call fcn.00401410
movzx ecx, word [esp + 0x140]
mov edx, dword [esp + 0x3c]
mov al, byte [esp + 0x146]
mov dword [0x436cb8], ecx
mov dword [0x436cbc], edx
mov byte [0x436cc0], al
mov byte [0x436c9c], 1
mov byte [esp + 0x160], 3
lea ecx, [esp + 0x1c]
call fcn.00401220
mov byte [esp + 0x160], 2
lea ecx, [esp + 0x20]
call fcn.00401220
mov byte [esp + 0x160], 1
lea ecx, [esp + 0x14]
call fcn.00401220
mov byte [esp + 0x160], bl
lea ecx, [esp + 0x18]
call fcn.00401220
mov dword [esp + 0x160], 0xffffffff
mov edx, dword [0x436cc4]
mov eax, dword [edx + 8]
mov ecx, 0x436cc4
call eax
mov byte [esp + 0x28], bl
mov eax, 0x436ca0
mov ecx, dword [esp + 0x158]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.004158f6
mov esp, ebp
pop ebp
ret