Function at 0x40c4a0
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4246e0
mov eax, dword fs:[0]
push eax
sub esp, 0x108
mov eax, dword [0x431074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov dword [ebp - 0xec], edi
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
push str.ntdll.dll
mov dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.RtlGetNtVersionNumbers
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [ebp - 0xf0]
push ecx
lea ecx, [ebp - 0xe8]
push ecx
lea ecx, [ebp - 0xec]
push ecx
call eax
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_316]
lea ecx, [ebp - 0xe0]
call dword [sym.imp.mfc140.dll_Ordinal_316]
push dword [ebp - 0xec]
mov esi, dword [sym.imp.mfc140.dll_Ordinal_4807]
lea eax, [ebp - 0xe4]
push 0x427848
push eax
mov byte [ebp - 4], 2
call esi
push dword [ebp - 0xe8]
lea eax, [ebp - 0xe0]
push 0x427848
push eax
call esi
mov eax, dword [ebp - 0xec]
add esp, 0x18
cmp eax, 6
jne 0x40c64c
cmp dword [ebp - 0xe8], 3
jne 0x40c720
push 5
push str.Win81
lea ecx, [ebp - 0x40]
call fcn.00403030
push 1
push 0x42794c
lea ecx, [ebp - 0x40]
call fcn.004077e0
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c5d0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push eax
mov byte [ebp - 4], 3
call fcn.004077e0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00402b40
lea ecx, [ebp - 0xe0]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c630
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
mov byte [ebp - 4], 4
jmp 0x40ca37
cmp eax, 0xa
jne 0x40c720
cmp dword [ebp - 0xe8], 0
jne 0x40c720
push 5
push str.Win10
lea ecx, [ebp - 0x40]
call fcn.00403030
push 1
push 0x42794c
lea ecx, [ebp - 0x40]
call fcn.004077e0
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c6a5
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push eax
mov byte [ebp - 4], 5
call fcn.004077e0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00402b40
lea ecx, [ebp - 0xe0]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c704
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
mov byte [ebp - 4], 6
jmp 0x40ca37
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
lea eax, [ebp - 0xdc]
mov dword [ebp - 0xdc], 0x9c
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x40c98c
push dword [ebp - 0xd8]
lea eax, [ebp - 0xe4]
push 0x427848
push eax
call esi
push dword [ebp - 0xd4]
lea eax, [ebp - 0xe0]
push 0x427848
push eax
call esi
mov eax, dword [ebp - 0xd8]
add esp, 0x18
sub eax, 4
je 0x40c88b
sub eax, 1
je 0x40c81c
sub eax, 1
je 0x40c7a0
push 0xc
push 0x427a04
jmp 0x40c8d1
mov eax, dword [ebp - 0xd4]
sub eax, 0
je 0x40c7fb
sub eax, 1
je 0x40c7da
sub eax, 1
jne 0x40c8d9
cmp byte [ebp - 0x42], 1
lea ecx, [ebp - 0x40]
jne 0x40c7ce
push 4
push str.Win8
jmp 0x40c8d4
push 0xd
push str.WinServer2012
jmp 0x40c8d4
cmp byte [ebp - 0x42], 1
lea ecx, [ebp - 0x40]
jne 0x40c7ef
push 4
push str.Win7
jmp 0x40c8d4
push 0xf
push str.WinServer2008R2
jmp 0x40c8d4
cmp byte [ebp - 0x42], 1
lea ecx, [ebp - 0x40]
jne 0x40c810
push 8
push str.WinVista
jmp 0x40c8d4
push 0xd
push str.WinServer2008
jmp 0x40c8d4
mov eax, dword [ebp - 0xd4]
sub eax, 0
je 0x40c882
sub eax, 1
je 0x40c879
sub eax, 1
jne 0x40c8d9
cmp byte [ebp - 0x42], 1
jne 0x40c851
cmp word [ebp - 0x114], 9
jne 0x40c851
push 0xf
push str.WinXPx64Edition
jmp 0x40c8d1
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x59
call esi
test eax, eax
jne 0x40c868
push 0xd
push str.WinServer2003
jmp 0x40c8d1
push 0x59
call esi
test eax, eax
je 0x40c8d9
push 0xf
push str.WinServer2003R2
jmp 0x40c8d1
push 5
push str.WinXP
jmp 0x40c8d1
push 7
push str.Win2000
jmp 0x40c8d1
mov eax, dword [ebp - 0xd4]
test eax, eax
je 0x40c8b1
cmp eax, 0xa
je 0x40c8a8
cmp eax, 0x5a
jne 0x40c8d9
push 5
push str.WinMe
jmp 0x40c8d1
push 5
push str.Win98
jmp 0x40c8d1
mov eax, dword [ebp - 0xcc]
cmp eax, 2
jne 0x40c8c5
push 6
push str.WinNT4
jmp 0x40c8d1
cmp eax, 1
jne 0x40c8d9
push 5
push str.Win95
lea ecx, [ebp - 0x40]
call fcn.00403030
push 1
push 0x42794c
lea ecx, [ebp - 0x40]
call fcn.004077e0
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c910
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push eax
mov byte [ebp - 4], 7
call fcn.004077e0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00402b40
lea ecx, [ebp - 0xe0]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c970
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
mov byte [ebp - 4], 8
jmp 0x40ca37
push 1
push 0x42794c
lea ecx, [ebp - 0x40]
call fcn.004077e0
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40c9c0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push eax
mov byte [ebp - 4], 9
call fcn.004077e0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00402b40
lea ecx, [ebp - 0xe0]
call dword [sym.imp.mfc140.dll_Ordinal_1661]
mov edx, eax
mov dword [ebp - 0x18], 0
mov ecx, edx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ca20
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x28]
call fcn.00403030
mov byte [ebp - 4], 0xa
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x18]
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x40]
push eax
call fcn.004077e0
lea ecx, [ebp - 0x28]
call fcn.00402b40
movups xmm0, xmmword [ebp - 0x40]
mov dword [edi + 0x10], 0
lea ecx, [ebp - 0xe0]
mov dword [edi + 0x14], 0
movups xmmword [edi], xmm0
mov byte [ebp - 0x40], 0
movq xmm0, qword [ebp - 0x30]
mov dword [ebp - 0x2c], 0xf
mov dword [ebp - 0x30], 0
movq qword [edi + 0x10], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_1044]
lea ecx, [ebp - 0xe4]
call dword [sym.imp.mfc140.dll_Ordinal_1044]
lea ecx, [ebp - 0x40]
call fcn.00402b40
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00421e64
mov esp, ebp
pop ebp
ret 4