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

Disassembly:
push ebp
lea ebp, [esp - 0x4d4]
sub esp, 0x554
mov eax, dword [0x4f0dd0]
push ebx
mov ebx, dword [ebp + 0x4e8]
push esi
mov esi, ecx
mov ecx, dword [ebp + 0x4e0]
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp + 0x4e4]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp + 0x4ec]
xor eax, ebp
push edi
mov edi, dword [sym.imp.MSVCR71.dll_wcslen]
mov dword [ebp - 0x50], ecx
lea ecx, [esi + 0x1c]
mov dword [ebp + 0x4d0], eax
mov eax, dword [ebp + 0x4dc]
push ecx
push eax
mov dword [ebp - 0x5c], eax
call edi
pop ecx
push eax
push dword [ebp - 0x5c]
call fcn.0043c64f
add esp, 0xc
lea eax, [esi + 0x38]
push eax
push dword [ebp - 0x54]
call edi
pop ecx
push eax
push dword [ebp - 0x54]
call fcn.0043c64f
add esp, 0xc
lea eax, [esi + 0x70]
push eax
push ebx
call edi
pop ecx
push eax
push ebx
call fcn.0043c64f
add esp, 0xc
push dword [ebp - 0x58]
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__::operator_wchar_t_const__]
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 0x4b883c
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 edi, 0x11c
push edi
lea eax, [ebp - 0x4c]
push 0
push eax
call sub.MSVCR71.dll_memset
add esp, 0xc
push dword [ebp - 0x50]
add esi, 0x8c
push esi
mov dword [ebp - 0x4c], edi
call dword [sym.imp.ATL71.DLL_Ordinal_30]
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
lea eax, [ebp - 0x4c]
push eax
call esi
test eax, eax
jne 0x408990
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x4c], 0x94
call esi
test eax, eax
je 0x408b68
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
sub eax, ecx
je 0x408a69
dec eax
je 0x408a07
dec eax
jne 0x408a76
cmp dword [ebp - 0x48], 4
ja 0x4089b7
push str.Microsoft_Windows_NT
jmp 0x408a6e
cmp dword [ebp - 0x48], 5
jne 0x4089dc
cmp dword [ebp - 0x44], ecx
jne 0x4089cc
push str.Microsoft_Windows_2000
jmp 0x408a6e
cmp dword [ebp - 0x44], 1
jne 0x408a00
push str.Microsoft_Windows_XP
jmp 0x408a6e
cmp dword [ebp - 0x48], 6
jne 0x408a00
cmp dword [ebp - 0x44], ecx
jne 0x408a00
cmp byte [ebp + 0xce], 1
mov ecx, ebx
jne 0x4089f9
push str.Microsoft_Windows_Vista
jmp 0x408a70
push str.Microsoft_Windows_Server__Longhorn_
jmp 0x408a70
push str.Microsoft_Platform_Win32_NT
jmp 0x408a6e
cmp dword [ebp - 0x48], 4
jne 0x408a62
cmp dword [ebp - 0x44], ecx
jne 0x408a34
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 - 0x36], 0x43
je 0x408a2d
cmp word [ebp - 0x36], 0x42
jne 0x408a76
push str.OSR2
jmp 0x408a6e
cmp dword [ebp - 0x44], 0xa
jne 0x408a55
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 - 0x36], 0x41
jne 0x408a76
push 0x4b8754
jmp 0x408a6e
cmp dword [ebp - 0x44], 0x5a
jne 0x408a62
push str.Microsoft_Windows_Me
jmp 0x408a6e
push str.Microsoft_Platform_Win32_Windows
jmp 0x408a6e
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 - 0x48], 4
ja 0x408aaa
mov eax, dword [ebp - 0x40]
mov esi, 0xffff
and eax, esi
push eax
push dword [ebp - 0x44]
mov edi, 0x400
push dword [ebp - 0x48]
lea eax, [ebp + 0xd0]
push str._Build__d._d._d__r_nArchitecture_:
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
add esp, 0x18
jmp 0x408aef
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x50]
call fcn.004086c4
mov ecx, dword [ebp - 0x40]
mov esi, 0xffff
and ecx, esi
push ecx
push dword [ebp - 0x44]
mov edi, 0x400
push dword [ebp - 0x48]
push dword [eax]
lea eax, [ebp + 0xd0]
push str._s__Build__d._d._d__r_nArchitecture_:
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
mov ecx, dword [ebp - 0x50]
add esp, 0x1c
add ecx, 0xfffffff0
call fcn.004014d5
lea eax, [ebp + 0xd0]
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 0x408b33
cmp eax, 6
je 0x408b2c
cmp eax, 9
je 0x408b25
cmp eax, esi
jne 0x408b40
push 0x4b86a4
jmp 0x408b38
push str.x64
jmp 0x408b38
push str.ia64
jmp 0x408b38
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 + 0xd0]
push str.ProcessorNum_:__d_r_n
push edi
push eax
call dword [sym.imp.MSVCR71.dll__snprintf]
add esp, 0x10
lea eax, [ebp + 0xd0]
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 + 0x4d0]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0049f127
add ebp, 0x4d4
leave
ret 0x14