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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x144
push ebx
push esi
push edi
push 9
pop ecx
xor eax, eax
lea edi, [ebp - 0x28]
push 0x47
rep stosd dword es:[edi], eax
pop ecx
lea edi, [ebp - 0x144]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x144]
mov dword [ebp - 0x144], 0x11c
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x42d633
push str.GetNativeSystemInfo
push 0x452eec
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor ebx, ebx
cmp eax, ebx
je 0x42d243
lea ecx, [ebp - 0x28]
push ecx
call eax
jmp 0x42d24d
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0x134], 2
jne 0x42d63b
cmp dword [ebp - 0x140], 4
jbe 0x42d6f2
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
mov edi, str.Microsoft
push edi
call esi
pop ecx
push eax
push edi
mov edi, dword [ebp + 8]
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 0xa
jne 0x42d2bb
cmp dword [ebp - 0x13c], ebx
jne 0x42d2a8
cmp byte [ebp - 0x2a], 1
jne 0x42d2a1
mov ebx, str.Windows_10_Insider_Preview
jmp 0x42d2ad
mov ebx, str.Windows_Server_Technical_Preview
jmp 0x42d2ad
mov ebx, str.Windows_10
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 6
mov ebx, str.Enterprise_Edition
jne case.0x42d3e4.5
mov eax, dword [ebp - 0x13c]
sub eax, 0
je 0x42d380
dec eax
je 0x42d352
dec eax
je 0x42d32c
dec eax
je 0x42d306
dec eax
jne 0x42d3a3
cmp byte [ebp - 0x2a], 1
jne 0x42d3a3
push 0x453c38
call esi
pop ecx
push eax
push 0x453c38
jmp 0x42d366
cmp byte [ebp - 0x2a], 1
jne 0x42d31c
push 0x453c1c
call esi
pop ecx
push eax
push 0x453c1c
jmp 0x42d366
push 0x453bec
call esi
pop ecx
push eax
push 0x453bec
jmp 0x42d366
cmp byte [ebp - 0x2a], 1
jne 0x42d342
push 0x453bd4
call esi
pop ecx
push eax
push 0x453bd4
jmp 0x42d366
push 0x453ba8
call esi
pop ecx
push eax
push 0x453ba8
jmp 0x42d366
cmp byte [ebp - 0x2a], 1
jne 0x42d370
push 0x453b90
call esi
pop ecx
push eax
push 0x453b90
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
jmp 0x42d3a3
push 0x453b60
call esi
pop ecx
push eax
push 0x453b60
jmp 0x42d366
cmp byte [ebp - 0x2a], 1
mov ebx, 0x453b40
je 0x42d390
mov ebx, 0x453b14
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov ebx, str.Enterprise_Edition
push str.GetProductInfo
push 0x452eec
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [ebp - 4]
push ecx
push 0
push 0
push dword [ebp - 0x13c]
push dword [ebp - 0x140]
call eax
mov eax, dword [ebp - 4]
cmp eax, 0x19
ja 0x42d454
je 0x42d44d
dec eax
cmp eax, 0x11
ja case.0x42d3e4.5
jmp dword [eax*4 + 0x42d711]
mov ebx, str.Starter_Edition
jmp case.0x42d3e4.4
mov ebx, str.Home_Premium_Edition
jmp case.0x42d3e4.4
mov ebx, str.Home_Basic_Edition
jmp case.0x42d3e4.4
mov ebx, str.Business_Edition
jmp case.0x42d3e4.4
mov ebx, str.Cluster_Server_Edition
jmp case.0x42d3e4.4
mov ebx, str.Datacenter_Edition
jmp case.0x42d3e4.4
mov ebx, str.Datacenter_Edition__core_installation_
jmp case.0x42d3e4.4
mov ebx, str.Ultimate_Edition
jmp case.0x42d3e4.4
mov ebx, str.Enterprise_Edition__core_installation_
jmp case.0x42d3e4.4
mov ebx, str.Enterprise_Edition_for_Itanium_based_Systems
jmp case.0x42d3e4.4
mov ebx, str.Small_Business_Server
jmp case.0x42d3e4.4
mov ebx, str.Standard_Edition__core_installation_
jmp case.0x42d3e4.4
mov ebx, str.Standard_Edition
jmp case.0x42d3e4.4
mov ebx, str.Web_Server_Edition
jmp case.0x42d3e4.4
mov ebx, str.Small_Business_Server_Premium_Edition
jmp case.0x42d3e4.4
cmp eax, 0x30
jne case.0x42d3e4.5
mov ebx, str.Professional
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 5
jne 0x42d602
mov eax, dword [ebp - 0x13c]
sub eax, 0
je 0x42d5b7
dec eax
je 0x42d597
dec eax
je 0x42d4a4
mov ebx, str.Unsupported_version_of_Windows
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
jmp 0x42d704
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x42d4b7
mov ebx, 0x453758
jmp 0x42d4e8
test byte [ebp - 0x2b], 0x20
je 0x42d4c4
mov ebx, 0x45371c
jmp 0x42d4e8
test byte [ebp - 0x2b], 0x80
je 0x42d4d1
mov ebx, 0x4536f0
jmp 0x42d4e8
cmp byte [ebp - 0x2a], 1
jne 0x42d4e3
cmp word [ebp - 0x28], 9
mov ebx, 0x4536d8
je 0x42d4e8
mov ebx, 0x4536ac
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp byte [ebp - 0x2a], 1
je 0x42d602
cmp word [ebp - 0x28], 6
jne 0x42d52b
test byte [ebp - 0x2c], 0x80
je 0x42d517
mov ebx, str.Datacenter_Edition_for_Itanium_based_Systems
jmp 0x42d5f4
test byte [ebp - 0x2c], 2
je 0x42d602
mov ebx, str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x42d5f4
cmp word [ebp - 0x28], 9
jne 0x42d55c
test byte [ebp - 0x2c], 0x80
je 0x42d542
mov ebx, str.Datacenter_x64_Edition
jmp 0x42d5f4
test byte [ebp - 0x2c], 2
je 0x42d552
mov ebx, str.Enterprise_x64_Edition
jmp 0x42d5f4
mov ebx, str.Standard_x64_Edition
jmp 0x42d5f4
mov eax, dword [ebp - 0x2c]
test ah, 0x40
je 0x42d56e
mov ebx, str.Compute_Cluster_Edition
jmp 0x42d5f4
test al, 0x80
je 0x42d579
mov ebx, str.Datacenter_Edition
jmp 0x42d5f4
test al, 2
je 0x42d584
mov ebx, str.Enterprise_Edition
jmp 0x42d5f4
test ah, 4
je 0x42d590
mov ebx, str.Web_Edition
jmp 0x42d5f4
mov ebx, str.Standard_Edition
jmp 0x42d5f4
mov ebx, 0x4536d8
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
test byte [ebp - 0x2b], 2
je 0x42d5d0
mov ebx, str.Home_Edition
jmp 0x42d5f4
mov ebx, 0x453544
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp byte [ebp - 0x2a], 1
jne 0x42d5d7
mov ebx, str.Professional
jmp 0x42d5f4
test byte [ebp - 0x2c], 0x80
je 0x42d5e4
mov ebx, str.Datacenter_Server
jmp 0x42d5f4
test byte [ebp - 0x2c], 2
mov ebx, str.Advanced_Server
jne 0x42d5f4
mov ebx, str.Server
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 6
jb 0x42d633
cmp word [ebp - 0x28], 9
jne 0x42d619
mov ebx, str.__64_bit
jmp 0x42d625
cmp word [ebp - 0x28], 0
jne 0x42d633
mov ebx, str.__32_bit
push ebx
call esi
pop ecx
push eax
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
push 1
pop eax
jmp 0x42d70c
cmp dword [ebp - 0x134], 1
jne 0x42d6e5
cmp dword [ebp - 0x140], 4
jne 0x42d70a
cmp dword [ebp - 0x13c], ebx
mov ebx, dword [ebp + 8]
mov esi, dword [sym.imp.MSVCRT.dll_wcslen]
jne 0x42d695
mov edi, str.Microsoft_Windows_95
push edi
call esi
pop ecx
push eax
push edi
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov edi, str.OSR2
push edi
call esi
pop ecx
push eax
push edi
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 4
jne 0x42d70a
cmp dword [ebp - 0x13c], 0xa
jne 0x42d6cd
mov edi, str.Microsoft_Windows_98
push edi
call esi
pop ecx
push eax
push edi
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
mov edi, 0x45345c
push edi
call esi
pop ecx
push eax
push edi
mov ecx, ebx
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
cmp dword [ebp - 0x140], 4
jne 0x42d70a
cmp dword [ebp - 0x13c], 0x5a
jne 0x42d70a
mov edi, str.Microsoft_Windows_ME
push edi
call esi
pop ecx
push eax
push edi
mov ecx, ebx
jmp 0x42d704
cmp dword [ebp - 0x134], ebx
mov esi, str.Microsoft_Windows_Win32s
je 0x42d6f7
mov esi, str.Unsupported_version_of_Windows.
push esi
call dword [sym.imp.MSVCRT.dll_wcslen]
pop ecx
mov ecx, dword [ebp + 8]
push eax
push esi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::append_unsigned_short_int_const___unsigned_int_]
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret