Function at 0x41a670
Capabilities:
Check os version
Get system information on windows
Print debug messages

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
mov eax, dword [0x669404]
xor eax, ebp
mov dword [ebp - 4], eax
xor eax, eax
push esi
push 0x9c
push eax
mov dword [ebp - 0x118], eax
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x108], eax
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x100], eax
mov dword [ebp - 0xfc], eax
mov dword [ebp - 0xf8], eax
lea eax, [ebp - 0xf0]
push eax
mov esi, ecx
call sub.MSVCR100.dll_memset
add esp, 0xc
lea ecx, [ebp - 0xf0]
push ecx
mov dword [ebp - 0xf0], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x41a6fd
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00546bdc
mov esp, ebp
pop ebp
ret
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push str.GetNativeSystemInfo
push str.kernel32.dll
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x41a726
lea edx, [ebp - 0x118]
push edx
call eax
jmp 0x41a733
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0xe0], 2
jne 0x41aae8
cmp dword [ebp - 0xec], 4
jbe 0x41aae8
push edi
mov edi, str.Microsoft
mov edx, 0x100
mov eax, esi
sub edi, esi
lea esp, [esp]
lea ecx, [edx + 0x7ffffefe]
test ecx, ecx
je 0x41a779
mov cl, byte [edi + eax]
test cl, cl
je 0x41a779
mov byte [eax], cl
inc eax
dec edx
jne 0x41a760
jmp 0x41a77d
test edx, edx
jne 0x41a77e
dec eax
cmp dword [ebp - 0xec], 6
mov byte [eax], 0
jne case.0x41a83e.5
mov eax, dword [ebp - 0xe8]
test eax, eax
jne 0x41a7ac
cmp byte [ebp - 0x56], 1
jne 0x41a7a5
push 0x6160a8
jmp 0x41a7f4
push 0x6160b8
jmp 0x41a7f4
cmp eax, 1
jne 0x41a7c4
cmp byte [ebp - 0x56], al
jne 0x41a7bd
push 0x6160cc
jmp 0x41a7f4
push 0x6160d8
jmp 0x41a7f4
cmp eax, 2
jne 0x41a7dd
cmp byte [ebp - 0x56], 1
jne 0x41a7d6
push 0x6160f0
jmp 0x41a7f4
push 0x6160fc
jmp 0x41a7f4
cmp eax, 3
jne 0x41a7f9
cmp byte [ebp - 0x56], 1
jne 0x41a7ef
push 0x616110
jmp 0x41a7f4
push 0x61611c
call fcn.0041a560
push str.GetProductInfo
push str.kernel32.dll
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0xe8]
lea edx, [ebp - 0xf4]
push edx
mov edx, dword [ebp - 0xec]
push 0
push 0
push ecx
push edx
call eax
mov eax, dword [ebp - 0xf4]
dec eax
cmp eax, 0x2f
ja case.0x41a83e.5
movzx eax, byte [eax + 0x41ab50]
jmp dword [eax*4 + 0x41ab08]
push str.Ultimate_Edition
jmp 0x41a8ba
push str.Professional
jmp 0x41a8ba
push str.Home_Premium_Edition
jmp 0x41a8ba
push str.Home_Basic_Edition
jmp 0x41a8ba
push str.Enterprise_Edition
jmp 0x41a8ba
push str.Business_Edition
jmp 0x41a8ba
push str.Starter_Edition
jmp 0x41a8ba
push str.Cluster_Server_Edition
jmp 0x41a8ba
push str.Datacenter_Edition
jmp 0x41a8ba
push str.Datacenter_Edition__core_installation_
jmp 0x41a8ba
push str.Enterprise_Edition__core_installation_
jmp 0x41a8ba
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x41a8ba
push str.Small_Business_Server
jmp 0x41a8ba
push str.Small_Business_Server_Premium_Edition
jmp 0x41a8ba
push str.Standard_Edition
jmp 0x41a8ba
push str.Standard_Edition__core_installation_
jmp 0x41a8ba
push str.Web_Server_Edition
call fcn.0041a560
mov edi, 5
cmp dword [ebp - 0xec], edi
jne 0x41aa44
cmp dword [ebp - 0xe8], 2
jne 0x41a9cc
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x41a8f0
push str.Windows_Server_2003_R2
jmp 0x41a92b
mov eax, dword [ebp - 0x58]
test eax, 0x2000
je 0x41a901
push str.Windows_Storage_Server_2003
jmp 0x41a92b
test eax, 0x8000
je 0x41a90f
push str.Windows_Home_Server
jmp 0x41a92b
cmp byte [ebp - 0x56], 1
jne 0x41a926
cmp word [ebp - 0x118], 9
jne 0x41a926
push str.Windows_XP_Professional_x64_Edition
jmp 0x41a92b
push str.Windows_Server_2003
call fcn.0041a560
cmp byte [ebp - 0x56], 1
je 0x41a9c4
mov eax, dword [ebp - 0x118]
cmp ax, 6
jne 0x41a95f
mov al, byte [ebp - 0x58]
test al, al
jns 0x41a954
push str.Datacenter_Edition_for_Itanium_based_Systems
jmp 0x41a9bf
test al, 2
je 0x41a9c4
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x41a9bf
cmp ax, 9
jne 0x41a985
mov al, byte [ebp - 0x58]
test al, al
jns 0x41a973
push str.Datacenter_x64_Edition
jmp 0x41a9bf
test al, 2
je 0x41a97e
push str.Enterprise_x64_Edition
jmp 0x41a9bf
push str.Standard_x64_Edition
jmp 0x41a9bf
mov eax, dword [ebp - 0x58]
test eax, 0x4000
je 0x41a996
push str.Compute_Cluster_Edition
jmp 0x41a9bf
test al, al
jns 0x41a9a1
push str.Datacenter_Edition
jmp 0x41a9bf
test al, 2
je 0x41a9ac
push str.Enterprise_Edition
jmp 0x41a9bf
test eax, 0x400
je 0x41a9ba
push str.Web_Edition
jmp 0x41a9bf
push str.Standard_Edition
call fcn.0041a560
cmp dword [ebp - 0xec], edi
jne 0x41aa44
cmp dword [ebp - 0xe8], 1
jne 0x41aa01
push str.Windows_XP
call fcn.0041a560
test dword [ebp - 0x58], 0x200
je 0x41a9ef
push str.Home_Edition
jmp 0x41a9f4
push str.Professional
call fcn.0041a560
cmp dword [ebp - 0xec], edi
jne 0x41aa44
cmp dword [ebp - 0xe8], 0
jne 0x41aa44
push str.Windows_2000
call fcn.0041a560
cmp byte [ebp - 0x56], 1
jne 0x41aa21
push str.Professional
jmp 0x41aa3f
mov al, byte [ebp - 0x58]
test al, al
jns 0x41aa2f
push str.Datacenter_Server
jmp 0x41aa3f
test al, 2
je 0x41aa3a
push str.Advanced_Server
jmp 0x41aa3f
push str.Server
call fcn.0041a560
lea ecx, [ebp - 0xdc]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x41aa6b
push 0x616b0c
call fcn.0041a560
lea edx, [ebp - 0xdc]
push edx
call fcn.0041a560
mov eax, dword [ebp - 0xe4]
push eax
push str.__build__d_
mov ecx, 0x50
lea edi, [ebp - 0x54]
call fcn.0041a5b0
add esp, 8
mov ecx, edi
push ecx
call fcn.0041a560
cmp dword [ebp - 0xec], 6
pop edi
jb 0x41aad3
mov eax, dword [ebp - 0x118]
cmp ax, 9
jne 0x41aac4
push str._64_bit
call fcn.0041a560
pop ebx
mov eax, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00546bdc
mov esp, ebp
pop ebp
ret
test ax, ax
jne 0x41aad3
push str._32_bit
call fcn.0041a560
pop ebx
mov eax, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00546bdc
mov esp, ebp
pop ebp
ret
push str.This_sample_does_not_support_this_version_of_Windows._n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, dword [ebp - 4]
pop ebx
xor ecx, ebp
xor eax, eax
pop esi
call fcn.00546bdc
mov esp, ebp
pop ebp
ret