Function at 0x40ab90
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x144
push ebx
push esi
push edi
push 0x98
lea eax, [esp + 0x18]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
lea eax, [esp + 0x1c]
add esp, 0xc
mov dword [esp + 0x10], 0x9c
push eax
call esi
test eax, eax
jne 0x40abf6
push 0x98
push eax
lea eax, [esp + 0x1c]
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esp + 0x10], 0x94
lea eax, [esp + 0x10]
push eax
call esi
test eax, eax
je 0x40aef1
cmp dword [esp + 0x20], 2
jne 0x40aef1
cmp dword [esp + 0x14], 6
ja 0x40ac19
jne 0x40ad0a
cmp dword [esp + 0x18], 2
jb 0x40ad15
push 1
push 2
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov esi, dword [esp + 0x14]
mov ebx, eax
mov dword [esp + 0xc], edx
cmp esi, 9
ja 0x40ad0a
mov edi, dword [sym.imp.KERNEL32.dll_VerifyVersionInfoA]
push 0x94
lea eax, [esp + 0xbc]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esp + 0xb0], 0x9c
lea eax, [esp + 0xb0]
mov dword [esp + 0xb4], esi
push dword [esp + 0xc]
push ebx
push 2
push eax
call edi
test eax, eax
jne 0x40ac89
inc esi
cmp esi, 9
jbe 0x40ac40
jmp 0x40ad0a
cmp dword [esp + 0x14], esi
jae 0x40ac9b
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], 0
push 1
push 1
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov esi, dword [esp + 0x18]
mov ebx, eax
mov dword [esp + 0xc], edx
cmp esi, 9
ja 0x40ad0a
nop dword [eax + eax]
push 0x9c
lea eax, [esp + 0xb4]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [esp + 0xb0], 0x9c
lea eax, [esp + 0xb0]
mov dword [esp + 0xb8], esi
push dword [esp + 0xc]
push ebx
push 1
push eax
call edi
test eax, eax
jne 0x40ad06
inc esi
cmp esi, 9
jbe 0x40acc0
jmp 0x40ad0a
mov dword [esp + 0x18], esi
cmp dword [esp + 0x14], 0xf
ja 0x40aef1
mov eax, dword [esp + 0x18]
cmp eax, 0xf
ja 0x40aef1
cmp byte [esp + 0xaa], 1
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
setbe dl
shl ecx, 4
or ecx, eax
lea eax, [ecx - 0x50]
cmp eax, 0x60
ja case.0x40ad4d.83
movzx eax, byte [eax + 0x40af24]
jmp dword [eax*4 + 0x40aefc]
mov edi, 1
mov esi, str.2000
jmp 0x40ae39
mov edi, 2
mov esi, 0x41ab3c
jmp 0x40ae39
mov edi, 3
mov esi, str.2003
jmp 0x40ae39
test dl, dl
mov esi, str.Vista
mov eax, str.2008
mov edi, 4
cmove esi, eax
jmp 0x40ae39
test dl, dl
mov esi, 0x41ab58
mov eax, str.2008_R2
mov edi, 5
cmove esi, eax
jmp 0x40ae39
test dl, dl
mov esi, 0x41ab64
mov eax, str.2012
mov edi, 6
cmove esi, eax
jmp 0x40ae29
test dl, dl
mov esi, 0x41ab70
mov eax, str.2012_R2
mov edi, 7
cmove esi, eax
jmp 0x40ae39
test dl, dl
mov esi, 0x41ab7c
mov eax, str.2016
mov edi, 8
cmove esi, eax
cmp ebx, 0x4e20
jb 0x40ae24
test dl, dl
mov esi, 0x41ab88
mov eax, str.2022
mov edi, 9
cmove esi, eax
jmp 0x40ae24
cmp ecx, 0x50
jb 0x40aef1
mov edi, 0xa
mov esi, str.12_or_later
cmp ecx, 0x62
jne 0x40ae39
cmp ebx, 0x23f0
mov eax, str.8__or_later_
cmovne eax, esi
mov esi, eax
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
cmp dword [esp + 0xc], 0
mov ecx, str.32_bit
mov eax, str.64_bit
cmove eax, ecx
mov cx, word [esp + 0xa6]
push eax
test cx, cx
je 0x40aea0
movzx eax, cx
push eax
movzx eax, word [esp + 0xac]
push eax
push esi
push str.Windows__s_SP_u._u__s
push str.get_windows_version
push 4
push 0
call fcn.004078c0
add esp, 0x20
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov cx, word [esp + 0xa8]
test cx, cx
je 0x40aed1
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.004078c0
add esp, 0x1c
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push str.Windows__s__s
push str.get_windows_version
push 4
push 0
call fcn.004078c0
add esp, 0x18
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret