Function at 0x40fee0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x154
mov eax, dword [0x43d004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push str.Windows_Undefined
push 0x80
push 0x43f538
xor esi, esi
mov dword [0x43d904], 0xffffffff
mov ebx, str.32_bit
call fcn.0041c016
add esp, 0xc
lea eax, [ebp - 0x144]
push 0x98
push esi
push eax
call fcn.00418c40
mov edi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
lea eax, [ebp - 0x148]
add esp, 0xc
mov dword [ebp - 0x148], 0x9c
push eax
call edi
test eax, eax
jne 0x40ff80
push 0x98
push eax
lea eax, [ebp - 0x144]
push eax
call fcn.00418c40
add esp, 0xc
mov dword [ebp - 0x148], 0x94
lea eax, [ebp - 0x148]
push eax
call edi
test eax, eax
je 0x4103a0
cmp dword [ebp - 0x138], 2
jne 0x410201
cmp dword [ebp - 0x144], 6
ja 0x40ffa9
jne 0x4100c4
cmp dword [ebp - 0x140], 2
jb 0x4100d1
push 1
push 2
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov edi, dword [ebp - 0x144]
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], edx
cmp edi, 9
ja 0x4100c4
mov ebx, dword [sym.imp.KERNEL32.dll_VerifyVersionInfoA]
nop dword [eax + eax]
push 0x94
lea eax, [ebp - 0xa0]
push 0
push eax
call fcn.00418c40
add esp, 0xc
mov dword [ebp - 0xa8], 0x9c
lea eax, [ebp - 0xa8]
mov dword [ebp - 0xa4], edi
push dword [ebp - 0x14c]
push dword [ebp - 0x150]
push 2
push eax
call ebx
test eax, eax
jne 0x41002c
inc edi
cmp edi, 9
jbe 0x40ffe0
jmp 0x4100bf
cmp dword [ebp - 0x144], edi
jae 0x410040
mov dword [ebp - 0x144], edi
mov dword [ebp - 0x140], esi
push 1
push 1
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov edi, dword [ebp - 0x140]
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x150], edx
cmp edi, 9
ja 0x4100bf
nop word [eax + eax]
push 0x9c
lea eax, [ebp - 0xa8]
push 0
push eax
call fcn.00418c40
add esp, 0xc
mov dword [ebp - 0xa8], 0x9c
lea eax, [ebp - 0xa8]
mov dword [ebp - 0xa0], edi
push dword [ebp - 0x150]
push dword [ebp - 0x14c]
push 1
push eax
call ebx
test eax, eax
jne 0x4100b9
inc edi
cmp edi, 9
jbe 0x410070
jmp 0x4100bf
mov dword [ebp - 0x140], edi
mov ebx, str.32_bit
cmp dword [ebp - 0x144], 0xf
ja 0x410201
mov eax, dword [ebp - 0x140]
cmp eax, 0xf
ja 0x410201
mov edx, dword [ebp - 0x144]
mov ecx, 1
cmp cl, byte [ebp - 0xae]
sbb ecx, ecx
shl edx, 4
or edx, eax
inc ecx
mov dword [0x43d904], edx
lea eax, [edx - 0x51]
cmp eax, 0x5f
ja case.0x410112.83
movzx eax, byte [eax + 0x4103dc]
jmp dword [eax*4 + 0x4103b4]
mov esi, 0x439874
jmp 0x410201
test ecx, ecx
je 0x410131
mov esi, str.XP_64
jmp 0x410201
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
mov esi, str.Server_2003
mov ecx, str.Server_2003_R2
cmovne esi, ecx
jmp 0x410201
test ecx, ecx
mov esi, str.Vista
mov eax, str.Server_2008
cmove esi, eax
jmp 0x410201
test ecx, ecx
mov esi, 0x4398b0
mov eax, str.Server_2008_R2
cmove esi, eax
jmp 0x410201
test ecx, ecx
mov esi, 0x4398c4
mov eax, str.Server_2012
cmove esi, eax
jmp 0x410201
test ecx, ecx
mov esi, 0x4398d4
mov eax, str.Server_2012_R2
cmove esi, eax
jmp 0x410201
test ecx, ecx
mov esi, str.10__Preview_1_
mov eax, str.Server_10__Preview_1_
cmove esi, eax
jmp 0x410201
mov eax, dword [ebp - 0x13c]
cmp eax, 0x4e20
jae 0x4101d4
test ecx, ecx
je 0x4101c0
mov esi, 0x439910
jmp 0x410201
cmp eax, 0x4563
mov esi, str.Server_2016
mov ecx, str.Server_2019
cmovae esi, ecx
jmp 0x410201
mov dword [0x43d904], 0xb0
test ecx, ecx
mov esi, 0x43992c
mov eax, str.Server_2022
cmove esi, eax
jmp 0x410201
cmp edx, 0x51
jge 0x4101fc
mov dword [0x43d904], esi
jmp 0x410201
mov esi, str.12_or_later
push 0x4391fc
push str.kernel32
mov dword [ebp - 0x14c], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x410238
lea eax, [ebp - 0x14c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call edi
cmp dword [ebp - 0x14c], 0
lea eax, [ebp - 0x154]
push eax
movzx eax, word [ebp - 0xb2]
mov edi, str.64_bit
push eax
movzx eax, word [ebp - 0xb4]
cmove edi, ebx
push eax
push dword [ebp - 0x140]
push dword [ebp - 0x144]
call dword [sym.imp.KERNEL32.dll_GetProductInfo]
push edi
test esi, esi
jne 0x41029d
push dword [ebp - 0x140]
cmp dword [ebp - 0x138], 2
mov eax, 0x439950
push dword [ebp - 0x144]
mov ecx, 0x439954
cmovne eax, ecx
push eax
push str._s__u._u__s
jmp 0x410308
mov ax, word [ebp - 0xb2]
test ax, ax
je 0x4102bd
movzx eax, ax
push eax
movzx eax, word [ebp - 0xb4]
push eax
push esi
push str._s_SP_u._u__s
jmp 0x410308
mov ax, word [ebp - 0xb4]
test ax, ax
je 0x4102e4
movzx eax, ax
push eax
push esi
push str._s_SP_u__s
push 0x7f
push 0x43f538
call fcn.00401010
add esp, 0x18
jmp 0x410317
mov edx, dword [ebp - 0x154]
mov ecx, edx
call fcn.0040f840
push eax
test edx, edx
mov eax, 0x439980
mov ecx, 0x4391eb
cmove eax, ecx
push eax
push esi
push str._s_s_s___s
push 0x7f
push 0x43f538
call fcn.00401010
add esp, 0x1c
cmp dword [0x43d904], 0x62
mov eax, dword [ebp - 0x13c]
mov dword [0x43d908], eax
jl 0x4103a0
push ecx
lea eax, [ebp - 0x150]
push eax
push ecx
call fcn.0040fce0
mov ecx, 0x43f538
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x410344
sub ecx, edx
mov eax, 0x7f
sub eax, ecx
lea edx, [ecx + 0x43f538]
mov ecx, dword [ebp - 0x150]
test ecx, ecx
jle 0x41038b
push ecx
push dword [0x43d908]
push str.__Build__d._d_
push eax
push edx
call fcn.00401010
add esp, 0x14
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00417710
mov esp, ebp
pop ebp
ret
push dword [0x43d908]
push str.__Build__d_
push eax
push edx
call fcn.00401010
add esp, 0x10
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00417710
mov esp, ebp
pop ebp
ret