Function at 0x40b9e0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x48b1f7
mov eax, dword fs:[0]
push eax
sub esp, 0x148
mov eax, dword [0x4b185c]
xor eax, esp
mov dword [esp + 0x140], eax
push ebx
push esi
push edi
mov eax, dword [0x4b185c]
xor eax, esp
push eax
lea eax, [esp + 0x158]
mov dword fs:[0], eax
xor ebx, ebx
cmp byte [0x4b5f24], bl
jne 0x40bebf
mov eax, dword [vtable.OSynchronizer.0]
mov edx, dword [eax + 4]
mov ecx, 0x4b30e8
mov byte [esp + 0x28], bl
mov dword [esp + 0x24], ecx
mov byte [esp + 0x28], 1
call edx
mov dword [esp + 0x160], ebx
cmp byte [0x4b5f24], bl
jne 0x40bea0
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 0x49bf34
lea ecx, [esp + 0x24]
call fcn.00402890
push eax
lea ecx, [esp + 0x18]
call fcn.00402820
push eax
lea ecx, [esp + 0x1c]
call fcn.00402820
push 0x11c
lea eax, [esp + 0x30]
push ebx
push eax
call fcn.0046ac10
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 0x40be5d
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [0x4b5f34], ecx
mov dword [0x4b5f38], eax
cmp ecx, 6
jne 0x40bb87
cmp eax, 2
jne 0x40bb2a
cmp byte [esp + 0x146], 1
lea ecx, [esp + 0x18]
jne 0x40bb1b
push str.Windows_8
call fcn.00402890
jmp 0x40bc06
push str.Windows_Server_2012
call fcn.00402890
jmp 0x40bc06
cmp eax, 1
jne 0x40bb5a
lea ecx, [esp + 0x18]
cmp byte [esp + 0x146], al
jne 0x40bb4b
push str.Windows_7
call fcn.00402890
jmp 0x40bc06
push str.Windows_Server_2008_R2
call fcn.00402890
jmp 0x40bc06
cmp eax, ebx
jne 0x40bbca
cmp byte [esp + 0x146], 1
lea ecx, [esp + 0x18]
jne 0x40bb7b
push str.Windows_Vista
call fcn.00402890
jmp 0x40bc06
push str.Windows_Server_2008
call fcn.00402890
jmp 0x40bc06
cmp ecx, 5
jne 0x40bbca
cmp eax, 2
jne 0x40bba1
push str.Windows_Server_2003
lea ecx, [esp + 0x1c]
call fcn.00402890
jmp 0x40bc06
cmp eax, 1
jne 0x40bbb6
push str.Windows_XP
lea ecx, [esp + 0x1c]
call fcn.00402890
jmp 0x40bc06
cmp eax, ebx
jne 0x40bbca
push str.Windows_2000
lea ecx, [esp + 0x1c]
call fcn.00402890
jmp 0x40bc06
push str.Windows_NT
lea ecx, [esp + 0x1c]
call fcn.00402890
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
push ecx
push 0x49cc0c
push ecx
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.00402db0
add esp, 4
mov ecx, eax
call fcn.00405270
add esp, 4
push eax
call fcn.00402db0
mov al, byte [esp + 0x146]
cmp al, 1
jne 0x40bcb6
cmp dword [esp + 0x30], 5
jne 0x40bc91
cmp dword [esp + 0x34], 1
jne 0x40bc91
mov eax, dword [esp + 0x144]
test eax, 0x200
je 0x40bc38
push str.Home_Edition
jmp 0x40bc48
test al, 0x40
je 0x40bc43
push str.Embedded
jmp 0x40bc48
push str.Professional
lea ecx, [esp + 0x18]
call fcn.00402890
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x57
call esi
test eax, eax
je 0x40bc69
push str.Media_Center
jmp 0x40bd82
push 0x58
call esi
test eax, eax
je 0x40bc7b
push str.Starter_Edition
jmp 0x40bd82
push 0x56
call esi
test eax, eax
je 0x40bd8b
push str.Tablet_PC_Edition
jmp 0x40bd82
test dword [esp + 0x144], 0x200
lea ecx, [esp + 0x14]
je 0x40bcac
push str.Home_Edition
jmp 0x40bd86
push str.Professional
jmp 0x40bd86
cmp al, 3
je 0x40bcc2
cmp al, 2
jne 0x40bd8b
mov eax, dword [esp + 0x30]
cmp eax, 6
jne 0x40bcfc
mov al, byte [esp + 0x144]
test al, al
jns 0x40bce0
push str.Datacenter_Edition
jmp 0x40bd82
lea ecx, [esp + 0x14]
test al, 2
je 0x40bcf2
push str.Enterprise_Edition
jmp 0x40bd86
push str.Standard_Edition
jmp 0x40bd86
cmp eax, 5
jne 0x40bd60
cmp dword [esp + 0x34], 2
jne 0x40bd60
mov eax, dword [esp + 0x144]
test al, al
jns 0x40bd1a
push str.Datacenter_Edition
jmp 0x40bd3b
test al, 2
je 0x40bd25
push str.Enterprise_Edition
jmp 0x40bd3b
mov edx, 0x400
cmp ax, dx
jne 0x40bd36
push str.Web_Edition
jmp 0x40bd3b
push str.Standard_Edition
lea ecx, [esp + 0x18]
call fcn.00402890
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x40bd8b
push 0x49ccb8
lea ecx, [esp + 0x18]
call fcn.00405270
jmp 0x40bd8b
mov al, byte [esp + 0x144]
test al, al
jns 0x40bd72
push str.Datacenter_Server
jmp 0x40bd82
test al, 2
je 0x40bd7d
push str.Advanced_Server
jmp 0x40bd82
push str.Server
lea ecx, [esp + 0x18]
call fcn.00402890
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.00405470
movzx edx, word [esp + 0x38]
push edx
push str.Build__d
lea edi, [esp + 0x28]
call fcn.00403460
mov ecx, dword [esp + 0x24]
add esp, 8
cmp ecx, ebx
je 0x40bdf6
mov eax, dword [ecx + 4]
cmp eax, ebx
je 0x40bdc4
cmp byte [eax], bl
jne 0x40bdd0
mov eax, dword [ecx + 8]
cmp eax, ebx
je 0x40bdf6
cmp word [eax], bx
je 0x40bdf6
push 0x49c828
lea eax, [esp + 0x20]
push eax
push 0x49c824
lea ecx, [esp + 0x2c]
call fcn.00405270
mov ecx, eax
call fcn.00402af0
mov ecx, eax
call fcn.00405270
lea ecx, [esp + 0x18]
push ecx
mov ecx, 0x4b5f28
call fcn.00402820
lea edx, [esp + 0x20]
push edx
mov ecx, 0x4b5f30
call fcn.00402820
lea eax, [esp + 0x14]
push eax
mov ecx, 0x4b5f2c
call fcn.00402820
lea ecx, [esp + 0x1c]
push ecx
mov ecx, 0x4b5f3c
call fcn.00402820
movzx edx, word [esp + 0x140]
mov eax, dword [esp + 0x3c]
mov cl, byte [esp + 0x146]
mov dword [0x4b5f40], edx
mov dword [0x4b5f44], eax
mov byte [0x4b5f48], cl
mov byte [0x4b5f24], 1
mov byte [esp + 0x160], 3
lea ecx, [esp + 0x1c]
call fcn.00402630
mov byte [esp + 0x160], 2
lea ecx, [esp + 0x20]
call fcn.00402630
mov byte [esp + 0x160], 1
lea ecx, [esp + 0x14]
call fcn.00402630
mov byte [esp + 0x160], bl
lea ecx, [esp + 0x18]
call fcn.00402630
mov dword [esp + 0x160], 0xffffffff
mov edx, dword [vtable.OSynchronizer.0]
mov eax, dword [edx + 8]
mov ecx, 0x4b30e8
call eax
mov byte [esp + 0x28], bl
mov eax, 0x4b5f28
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.0046a0d3
mov esp, ebp
pop ebp
ret