Function at 0x40ed70
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x4513a8]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x12c], 1
mov dword [ebp - 0x128], 0
push 0x118
push 0
lea eax, [ebp - 0x124]
push eax
call fcn.00421260
add esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [ecx], 0
mov dword [ebp - 0x128], 0x11c
lea edx, [ebp - 0x128]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov dword [ebp - 0x12c], eax
cmp dword [ebp - 0x12c], 0
jne 0x40edfe
mov dword [ebp - 0x128], 0x114
lea eax, [ebp - 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x40edfe
xor eax, eax
jmp 0x40f2ed
push 0x80
push str.Service_Pack_1
lea ecx, [ebp - 0x114]
push ecx
call fcn.00422515
add esp, 0xc
test eax, eax
jne 0x40ee2d
mov edx, dword [ebp + 8]
mov eax, dword [edx]
or eax, 1
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
jmp 0x40eeaf
push 0x80
push str.Service_Pack_2
lea edx, [ebp - 0x114]
push edx
call fcn.00422515
add esp, 0xc
test eax, eax
jne 0x40ee59
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
or ecx, 2
mov edx, dword [ebp + 8]
mov dword [edx], ecx
jmp 0x40eeaf
push 0x80
push str.Service_Pack_3
lea eax, [ebp - 0x114]
push eax
call fcn.00422515
add esp, 0xc
test eax, eax
jne 0x40ee85
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
or edx, 3
mov eax, dword [ebp + 8]
mov dword [eax], edx
jmp 0x40eeaf
push 0x80
push str.Service_Pack_4
lea ecx, [ebp - 0x114]
push ecx
call fcn.00422515
add esp, 0xc
test eax, eax
jne 0x40eeaf
mov edx, dword [ebp + 8]
mov eax, dword [edx]
or eax, 4
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx]
shl eax, 0x10
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
call fcn.0040ec70
test eax, eax
je 0x40ef5f
cmp dword [ebp - 0x118], 2
jne 0x40ef58
cmp dword [ebp - 0x124], 6
jne 0x40ef18
cmp dword [ebp - 0x120], 1
jne 0x40ef18
push 0xffffffffffffffff
push 0x448314
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
or edx, 9
mov eax, dword [ebp + 8]
mov dword [eax], edx
mov eax, 1
jmp 0x40f2ed
cmp dword [ebp - 0x124], 6
jne 0x40ef58
cmp dword [ebp - 0x120], 0
jne 0x40ef58
push 0xffffffffffffffff
push 0x448328
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.0040eb90
add esp, 0x10
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
or ecx, 8
mov edx, dword [ebp + 8]
mov dword [edx], ecx
mov eax, 1
jmp 0x40f2ed
xor eax, eax
jmp 0x40f2ed
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x138], eax
cmp dword [ebp - 0x138], 0
je 0x40f2c7
cmp dword [ebp - 0x138], 1
je 0x40f1ca
cmp dword [ebp - 0x138], 2
je 0x40ef93
jmp 0x40f2e8
cmp dword [ebp - 0x124], 6
jne 0x40efce
cmp dword [ebp - 0x120], 1
jne 0x40efce
push 0xffffffffffffffff
push str.Windows_7
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.0040eb90
add esp, 0x10
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
or ecx, 9
mov edx, dword [ebp + 8]
mov dword [edx], ecx
jmp 0x40f0fa
cmp dword [ebp - 0x124], 6
jne 0x40f009
cmp dword [ebp - 0x120], 0
jne 0x40f009
push 0xffffffffffffffff
push str.Windows_Vista
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0040eb90
add esp, 0x10
mov edx, dword [ebp + 8]
mov eax, dword [edx]
or eax, 8
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
jmp 0x40f0fa
cmp dword [ebp - 0x124], 5
jne 0x40f044
cmp dword [ebp - 0x120], 2
jne 0x40f044
push 0xffffffffffffffff
push str.Windows_Server_2003_
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
or edx, 7
mov eax, dword [ebp + 8]
mov dword [eax], edx
jmp 0x40f0fa
cmp dword [ebp - 0x124], 5
jne 0x40f07c
cmp dword [ebp - 0x120], 1
jne 0x40f07c
push 0xffffffffffffffff
push str.Windows_XP
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.0040eb90
add esp, 0x10
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
or ecx, 6
mov edx, dword [ebp + 8]
mov dword [edx], ecx
jmp 0x40f0fa
cmp dword [ebp - 0x124], 5
jne 0x40f0b4
cmp dword [ebp - 0x120], 0
jne 0x40f0b4
push 0xffffffffffffffff
push str.Windows_2000
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0040eb90
add esp, 0x10
mov edx, dword [ebp + 8]
mov eax, dword [edx]
or eax, 5
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
jmp 0x40f0fa
cmp dword [ebp - 0x124], 4
ja 0x40f0e3
push 0xffffffffffffffff
push str.Windows_NT
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
or edx, 4
mov eax, dword [ebp + 8]
mov dword [eax], edx
jmp 0x40f0fa
push 0xffffffffffffffff
push 0x4483f4
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.0040eb90
add esp, 0x10
cmp dword [ebp - 0x124], 4
jne 0x40f1ac
push str.Service_Pack_6
lea eax, [ebp - 0x114]
push eax
call fcn.00421e39
add esp, 8
test eax, eax
jne 0x40f1ac
mov dword [ebp - 0x130], 0
mov dword [ebp - 0x134], 0
lea ecx, [ebp - 0x130]
push ecx
push 1
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionHotfixQ246009
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x134], eax
cmp dword [ebp - 0x134], 0
jne 0x40f17a
push 0xffffffffffffffff
push str.SP6a
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
jmp 0x40f193
push 0xffffffffffffffff
lea ecx, [ebp - 0x114]
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
mov ecx, dword [ebp - 0x130]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x130], 0
jmp 0x40f1c5
push 0xffffffffffffffff
lea edx, [ebp - 0x114]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0040eb90
add esp, 0x10
jmp 0x40f2e8
cmp dword [ebp - 0x124], 4
jne 0x40f234
cmp dword [ebp - 0x120], 0
jne 0x40f234
push 0xffffffffffffffff
push str.Windows_95
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
movzx ecx, word [ebp - 0x112]
cmp ecx, 0x43
je 0x40f20b
movzx edx, word [ebp - 0x112]
cmp edx, 0x42
jne 0x40f222
push 0xffffffffffffffff
push str.OSR2
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0040eb90
add esp, 0x10
mov edx, dword [ebp + 8]
mov eax, dword [edx]
or eax, 1
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
jmp 0x40f2c5
cmp dword [ebp - 0x124], 4
jne 0x40f28f
cmp dword [ebp - 0x120], 0xa
jne 0x40f28f
push 0xffffffffffffffff
push str.Windows_98
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
movzx ecx, word [ebp - 0x112]
cmp ecx, 0x41
jne 0x40f280
push 0xffffffffffffffff
push 0x4484d8
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040eb90
add esp, 0x10
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
or edx, 2
mov eax, dword [ebp + 8]
mov dword [eax], edx
jmp 0x40f2c5
cmp dword [ebp - 0x124], 4
jne 0x40f2c5
cmp dword [ebp - 0x120], 0x5a
jne 0x40f2c5
push 0xffffffffffffffff
push str.Windows_ME
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.0040eb90
add esp, 0x10
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
or ecx, 3
mov edx, dword [ebp + 8]
mov dword [edx], ecx
jmp 0x40f2e8
push 0xffffffffffffffff
push str.Win32s
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0040eb90
add esp, 0x10
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov dword [edx], ecx
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004208a1
mov esp, ebp
pop ebp
ret