Function at 0x40f360
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x140
mov eax, dword [0x445454]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push 0x98
lea eax, [ebp - 0x9c]
mov dword [0x445d50], 0
push 0
push eax
call fcn.0041d180
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
lea eax, [ebp - 0xa0]
add esp, 0xc
mov dword [ebp - 0xa0], 0x9c
push eax
call esi
test eax, eax
jne 0x40f3e1
push 0x98
push eax
lea eax, [ebp - 0x9c]
push eax
call fcn.0041d180
add esp, 0xc
mov dword [ebp - 0xa0], 0x94
lea eax, [ebp - 0xa0]
push eax
call esi
test eax, eax
je 0x40f6f2
cmp dword [ebp - 0x90], 2
jne 0x40f6f2
cmp dword [ebp - 0x9c], 6
ja 0x40f40a
jne 0x40f50c
cmp dword [ebp - 0x98], 2
jb 0x40f519
push ebx
push 1
push 2
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov esi, dword [ebp - 0x9c]
mov ebx, eax
mov dword [ebp - 0x140], edx
cmp esi, 9
ja 0x40f50b
push edi
mov edi, dword [sym.imp.KERNEL32.dll_VerifyVersionInfoA]
nop word [eax + eax]
push 0x94
lea eax, [ebp - 0x134]
push 0
push eax
call fcn.0041d180
add esp, 0xc
mov dword [ebp - 0x13c], 0x9c
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x138], esi
push dword [ebp - 0x140]
push ebx
push 2
push eax
call edi
test eax, eax
jne 0x40f487
inc esi
cmp esi, 9
jbe 0x40f440
jmp 0x40f50a
cmp dword [ebp - 0x9c], esi
jae 0x40f49f
mov dword [ebp - 0x9c], esi
mov dword [ebp - 0x98], 0
push 1
push 1
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov esi, dword [ebp - 0x98]
mov ebx, eax
mov dword [ebp - 0x140], edx
cmp esi, 9
ja 0x40f50a
push 0x9c
lea eax, [ebp - 0x13c]
push 0
push eax
call fcn.0041d180
add esp, 0xc
mov dword [ebp - 0x13c], 0x9c
lea eax, [ebp - 0x13c]
mov dword [ebp - 0x134], esi
push dword [ebp - 0x140]
push ebx
push 1
push eax
call edi
test eax, eax
jne 0x40f504
inc esi
cmp esi, 9
jbe 0x40f4c0
jmp 0x40f50a
mov dword [ebp - 0x98], esi
pop edi
pop ebx
cmp dword [ebp - 0x9c], 0xf
ja 0x40f6f2
mov eax, dword [ebp - 0x98]
cmp eax, 0xf
ja 0x40f6f2
mov edx, dword [ebp - 0x9c]
mov ecx, 1
cmp cl, byte [ebp - 6]
sbb ecx, ecx
shl edx, 4
or edx, eax
inc ecx
lea eax, [edx - 0x50]
cmp eax, 0x50
ja case.0x40f551.83
movzx eax, byte [eax + 0x40f728]
jmp dword [eax*4 + 0x40f704]
mov dword [0x445d50], 1
mov esi, str.2000
jmp 0x40f636
mov dword [0x445d50], 2
mov esi, 0x43908c
jmp 0x40f636
mov dword [0x445d50], 3
mov esi, str.2003
jmp 0x40f636
test ecx, ecx
mov dword [0x445d50], 4
mov esi, str.Vista
mov eax, str.2008
cmove esi, eax
jmp 0x40f636
test ecx, ecx
mov dword [0x445d50], 5
mov esi, 0x4390a8
mov eax, str.2008_R2
cmove esi, eax
jmp 0x40f636
test ecx, ecx
mov dword [0x445d50], 6
mov esi, 0x4390b4
mov eax, str.2012
cmove esi, eax
jmp 0x40f636
test ecx, ecx
mov dword [0x445d50], 7
mov esi, 0x4390c0
mov eax, str.2012_R2
cmove esi, eax
jmp 0x40f636
test ecx, ecx
mov dword [0x445d50], 8
mov esi, 0x4390cc
mov eax, str.2016
cmove esi, eax
jmp 0x40f636
cmp edx, 0x50
jb 0x40f6f2
mov dword [0x445d50], 9
mov esi, str.11_or_later
xor ecx, ecx
mov dword [ebp - 0x140], ecx
cmp dword [0x445d78], ecx
je 0x40f660
lea eax, [ebp - 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [0x445d78]
mov ecx, dword [ebp - 0x140]
test ecx, ecx
mov eax, str.64_bit
mov cx, word [ebp - 0xa]
mov edx, str.32_bit
cmove eax, edx
push eax
test cx, cx
je 0x40f6a8
movzx eax, cx
push eax
movzx eax, word [ebp - 0xc]
push eax
push esi
push str.Windows__s_SP_u._u__s
push str.get_windows_version
push 4
push 0
call fcn.0040b040
add esp, 0x20
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041bd07
mov esp, ebp
pop ebp
ret
mov cx, word [ebp - 0xc]
test cx, cx
je 0x40f6db
movzx eax, cx
push eax
push esi
push str.Windows__s_SP_u__s
push str.get_windows_version
push 4
push 0
call fcn.0040b040
add esp, 0x1c
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041bd07
mov esp, ebp
pop ebp
ret
push esi
push str.Windows__s__s
push str.get_windows_version
push 4
push 0
call fcn.0040b040
add esp, 0x18
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.0041bd07
mov esp, ebp
pop ebp
ret