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

Disassembly:
push ebp
lea ebp, [esp - 0x4d0]
sub esp, 0x550
mov eax, dword [0x52f220]
push ebx
mov ebx, dword [ebp + 0x4e4]
push esi
mov esi, ecx
mov ecx, dword [ebp + 0x4dc]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp + 0x4e0]
xor eax, ebp
push edi
mov edi, dword [sym.imp.MSVCR71.dll_wcslen]
mov dword [ebp - 0x54], ecx
lea ecx, [esi + 0x1c]
mov dword [ebp + 0x4cc], eax
mov eax, dword [ebp + 0x4d8]
push ecx
push eax
mov dword [ebp - 0x5c], eax
call edi
pop ecx
push eax
push dword [ebp - 0x5c]
call fcn.00451ca0
add esp, 0xc
lea eax, [esi + 0x38]
push eax
push dword [ebp - 0x58]
call edi
pop ecx
push eax
push dword [ebp - 0x58]
call fcn.00451ca0
add esp, 0xc
lea eax, [esi + 0x70]
push eax
push ebx
call edi
pop ecx
push eax
push ebx
call fcn.00451ca0
add esp, 0xc
push dword [ebp - 0x54]
mov ecx, esi
call dword [0x4ec734]
push ebx
mov ecx, esi
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::append_wchar_t_const__]
push 0x4ed9a8
mov ecx, esi
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::append_wchar_t_const__]
lea ebx, [esi + 0x54]
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::clear_void_]
mov esi, 0x11c
push esi
xor edi, edi
lea eax, [ebp - 0x50]
push edi
push eax
call sub.MSVCR71.dll_memset
add esp, 0xc
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
push eax
call esi
test eax, eax
jne 0x40fb00
lea eax, [ebp - 0x50]
push eax
mov dword [ebp - 0x50], 0x94
call esi
test eax, eax
je 0x40fcd6
mov eax, dword [ebp - 0x40]
sub eax, edi
je 0x40fbd7
dec eax
je 0x40fb75
dec eax
jne 0x40fbe4
cmp dword [ebp - 0x4c], 4
ja 0x40fb25
push str.Microsoft_Windows_NT
jmp 0x40fbdc
cmp dword [ebp - 0x4c], 5
jne 0x40fb4a
cmp dword [ebp - 0x48], edi
jne 0x40fb3a
push str.Microsoft_Windows_2000
jmp 0x40fbdc
cmp dword [ebp - 0x48], 1
jne 0x40fb6e
push str.Microsoft_Windows_XP
jmp 0x40fbdc
cmp dword [ebp - 0x4c], 6
jne 0x40fb6e
cmp dword [ebp - 0x48], edi
jne 0x40fb6e
cmp byte [ebp + 0xca], 1
mov ecx, ebx
jne 0x40fb67
push str.Microsoft_Windows_Vista
jmp 0x40fbde
push str.Microsoft_Windows_Server__Longhorn_
jmp 0x40fbde
push str.Microsoft_Platform_Win32_NT
jmp 0x40fbdc
cmp dword [ebp - 0x4c], 4
jne 0x40fbd0
cmp dword [ebp - 0x48], edi
jne 0x40fba2
push str.Microsoft_Windows_95
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
cmp word [ebp - 0x3a], 0x43
je 0x40fb9b
cmp word [ebp - 0x3a], 0x42
jne 0x40fbe4
push str.OSR2
jmp 0x40fbdc
cmp dword [ebp - 0x48], 0xa
jne 0x40fbc3
push str.Microsoft_Windows_98
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
cmp word [ebp - 0x3a], 0x41
jne 0x40fbe4
push 0x4ed8c0
jmp 0x40fbdc
cmp dword [ebp - 0x48], 0x5a
jne 0x40fbd0
push str.Microsoft_Windows_Me
jmp 0x40fbdc
push str.Microsoft_Platform_Win32_Windows
jmp 0x40fbdc
push str.Microsoft_Platform_Win32s
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
cmp dword [ebp - 0x4c], 4
ja 0x40fc18
mov eax, dword [ebp - 0x44]
mov esi, 0xffff
and eax, esi
push eax
push dword [ebp - 0x48]
mov edi, 0x400
push dword [ebp - 0x4c]
lea eax, [ebp + 0xcc]
push str._Build__d._d._d__r_nArchitecture_:
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
add esp, 0x18
jmp 0x40fc5d
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x54]
call fcn.0040f877
mov ecx, dword [ebp - 0x44]
mov esi, 0xffff
and ecx, esi
push ecx
push dword [ebp - 0x48]
mov edi, 0x400
push dword [ebp - 0x4c]
push dword [eax]
lea eax, [ebp + 0xcc]
push str._s__Build__d._d._d__r_nArchitecture_:
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
mov ecx, dword [ebp - 0x54]
add esp, 0x1c
add ecx, 0xfffffff0
call fcn.00401591
lea eax, [ebp + 0xcc]
push eax
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
lea eax, [ebp - 0x80]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
movzx eax, word [ebp - 0x80]
test eax, eax
je 0x40fca1
cmp eax, 6
je 0x40fc9a
cmp eax, 9
je 0x40fc93
cmp eax, esi
jne 0x40fcae
push 0x4ed810
jmp 0x40fca6
push str.x64
jmp 0x40fca6
push str.ia64
jmp 0x40fca6
push str.x86
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
push dword [ebp - 0x6c]
lea eax, [ebp + 0xcc]
push str.ProcessorNum_:__d_r_n
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
add esp, 0x10
lea eax, [ebp + 0xcc]
push eax
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const__]
mov ecx, dword [ebp + 0x4cc]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004d1f17
add ebp, 0x4d0
leave
ret 0x10