Function at 0x429640
Capabilities:
Check os version

Disassembly:
sub esp, 0x19c
push ebx
mov ebx, dword [esp + 0x1a4]
push esi
push edi
mov ecx, 0x26
xor eax, eax
lea edi, [esp + 0x10]
mov dword [esp + 0xc], 0
test ebx, ebx
rep stosd dword es:[edi], eax
jne 0x429676
pop edi
pop esi
or eax, 0xffffffff
pop ebx
add esp, 0x19c
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
lea eax, [esp + 0xc]
push eax
mov byte [ebx], 0
mov dword [esp + 0x10], 0x9c
call esi
test eax, eax
jne 0x4296b2
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], 0x94
push ecx
call esi
test eax, eax
jne 0x4296b2
pop edi
pop esi
or eax, 0xffffffff
pop ebx
add esp, 0x19c
ret
mov eax, dword [esp + 0x1c]
dec eax
je 0x42980e
dec eax
je 0x4296f0
mov edi, str.Microsoft_Win32s
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor edx, edx
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, edx
pop ebx
add esp, 0x19c
ret
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp eax, 4
ja 0x429704
mov edi, str.Microsoft_Windows_NT
jmp 0x429737
cmp eax, 5
jne 0x429732
mov eax, edx
sub eax, 0
je 0x42972b
dec eax
je 0x429724
dec eax
je 0x42971d
mov edi, str.Windows_2003_or_higher
jmp 0x429737
mov edi, str.Windows_2003
jmp 0x429737
mov edi, str.Windows_XP
jmp 0x429737
mov edi, str.Windows_2000
jmp 0x429737
mov edi, 0x582e90
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebp
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [esp + 0xaa]
and ecx, 3
cmp al, 1
rep movsb byte es:[edi], byte [esi]
jne 0x429767
mov edi, str._Professional
jmp 0x42977b
cmp al, 3
jne 0x429772
mov edi, str._Server
jmp 0x42977b
cmp al, 2
jne 0x4297a0
mov edi, str._Domain_Controller
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x24]
and ecx, 0xffff
push ecx
mov ecx, dword [esp + 0x18]
push eax
push edx
push ecx
push str.__d._d__s__Build__d_
lea edx, [esp + 0xc0]
push 0xff
push edx
call dword [sym.imp.MSVCRT.dll__snprintf]
lea edi, [esp + 0xc8]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
pop ebp
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x10]
and ecx, 3
mov eax, edx
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebx
add esp, 0x19c
ret
mov edx, dword [esp + 0x10]
cmp edx, 4
ja 0x429828
jne 0x429821
mov eax, dword [esp + 0x14]
test eax, eax
ja 0x429828
mov edi, str.Microsoft_Windows_95
jmp 0x42982d
mov edi, str.Microsoft_Windows_98
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
and ecx, 0xffff
cmp ecx, 0x8ae
jae 0x42985e
xor edx, edx
pop edi
pop esi
mov eax, edx
pop ebx
add esp, 0x19c
ret