Function at 0x403a41
Capabilities:
Check os version
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf4
push ebx
push esi
push edi
mov esi, 0x9c
xor edi, edi
push esi
lea eax, [ebp - 0xa4]
push edi
push eax
call fcn.00404180
add esp, 0xc
lea eax, [ebp - 0xa4]
mov dword [ebp - 0xa4], esi
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
push eax
call esi
mov ebx, eax
cmp ebx, edi
jne 0x403a9b
lea eax, [ebp - 0xa4]
mov dword [ebp - 0xa4], 0x94
push eax
call esi
test eax, eax
je 0x403cf6
mov eax, dword [ebp - 0x94]
sub eax, edi
je 0x403ce4
dec eax
je 0x403c53
dec eax
jne 0x403cf3
cmp dword [ebp - 0xa0], 4
ja 0x403ac7
push str.Microsoft_20Windows_20NT_20
jmp 0x403af4
cmp dword [ebp - 0xa0], 5
jne 0x403aef
cmp dword [ebp - 0x9c], edi
jne 0x403adf
push str.Microsoft_20Windows_202000_20
jmp 0x403af4
cmp dword [ebp - 0x9c], 1
jne 0x403aef
push str.Microsoft_20Windows_20XP_20
jmp 0x403af4
push str.Microsoft_20Windows_20vista_7_2008_20
push dword [ebp + 8]
call fcn.004049a0
pop ecx
cmp ebx, edi
pop ecx
je 0x403b56
cmp byte [ebp - 0xa], 1
jne 0x403b22
test byte [ebp - 0xb], 2
je 0x403b18
push str.Personal_20
jmp 0x403bf0
push str.Professional_20
jmp 0x403bf0
cmp byte [ebp - 0xa], 3
jne 0x403bfa
test byte [ebp - 0xc], 0x80
je 0x403b3c
push str.DataCenter_20Server_20
jmp 0x403bf0
test byte [ebp - 0xc], 2
je 0x403b4c
push str.Advanced_20Server_20
jmp 0x403bf0
push str.Server_20
jmp 0x403bf0
lea eax, [ebp - 4]
push eax
push 1
push edi
push str.SYSTEM__CurrentControlSet__Control__ProductOptions
push connect
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xf4]
push eax
push edi
push edi
push str.ProductType
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
lea eax, [ebp - 0xf4]
push eax
push str.WINNT
call esi
test eax, eax
jne 0x403bb8
push str.Professional_20
push dword [ebp + 8]
call fcn.004049a0
pop ecx
pop ecx
lea eax, [ebp - 0xf4]
push eax
push str.LANMANNT
call esi
test eax, eax
jne 0x403bd9
push str.Server_20
push dword [ebp + 8]
call fcn.004049a0
pop ecx
pop ecx
lea eax, [ebp - 0xf4]
push eax
push str.SERVERNT
call esi
test eax, eax
jne 0x403bfa
push str.Advanced_Server_20
push dword [ebp + 8]
call fcn.004049a0
pop ecx
pop ecx
cmp dword [ebp - 0xa0], 4
mov eax, dword [ebp - 0x98]
ja 0x403c34
and eax, 0xffff
push eax
lea eax, [ebp - 0x90]
push eax
push dword [ebp - 0x9c]
push dword [ebp - 0xa0]
push str.version__d._d__s__Build__d__n
call fcn.00404bec
add esp, 0x14
jmp 0x403cf3
and eax, 0xffff
push eax
lea eax, [ebp - 0x90]
push eax
push str._s__Build__d__n
call fcn.00404bec
add esp, 0xc
jmp 0x403cf3
cmp dword [ebp - 0xa0], 4
jne 0x403cf3
cmp dword [ebp - 0x9c], edi
mov esi, dword [ebp + 8]
jne 0x403c9e
push str.Microsoft_20Windows_2095_20
call fcn.00404bec
cmp byte [ebp - 0x8f], 0x43
pop ecx
je 0x403c88
cmp byte [ebp - 0x8f], 0x42
jne 0x403c95
push str.OSR2_20
push esi
call fcn.004049a0
pop ecx
pop ecx
cmp dword [ebp - 0xa0], 4
jne 0x403cf3
cmp dword [ebp - 0x9c], 0xa
jne 0x403cd3
push str.Microsoft_20Windows_2098_20
push esi
call fcn.004049a0
cmp byte [ebp - 0x8f], 0x41
pop ecx
pop ecx
jne 0x403cca
push str.SE_20
push esi
call fcn.004049a0
pop ecx
pop ecx
cmp dword [ebp - 0xa0], 4
jne 0x403cf3
cmp dword [ebp - 0x9c], 0x5a
jne 0x403cf3
push str.Microsoft_20Windows_Me_20
push esi
jmp 0x403cec
push str.Microsoft_20Win32s_20
push dword [ebp + 8]
call fcn.004049a0
pop ecx
pop ecx
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret