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

Disassembly:
sub esp, 0x124
mov eax, dword [0x4a55d0]
xor eax, esp
mov dword [esp + 0x120], eax
xor eax, eax
push ebx
push 0x9c
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x40]
push eax
mov ebx, ecx
call fcn.0043abe0
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
mov dword [esp + 0x3c], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x406862
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043675a
add esp, 0x124
ret
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push edi
push str.GetNativeSystemInfo
push str.kernel32.dll
call ebp
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
test eax, eax
je 0x40688c
lea edx, [esp + 0x1c]
push edx
call eax
jmp 0x406897
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [esp + 0x50], 2
jne 0x4076a6
cmp dword [esp + 0x44], 4
jbe 0x4076a6
push esi
push 0xb
push str.Microsoft
push ebx
call fcn.004373e0
add esp, 0xc
cmp dword [esp + 0x48], 6
jne case.0x406c50.5
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x406962
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406920
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4068e2
mov ecx, dword [str.Windows_Vista]
mov dword [eax], ecx
mov edx, dword [0x49548c]
mov dword [eax + 4], edx
mov ecx, dword [0x495490]
mov dword [eax + 8], ecx
mov dx, word [0x495494]
mov word [eax + 0xc], dx
mov cl, byte [0x495496]
mov byte [eax + 0xe], cl
jmp 0x406c13
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406920
mov edx, dword [str.Windows_Server_2008]
mov dword [eax], edx
mov ecx, dword [0x49549c]
mov dword [eax + 4], ecx
mov edx, dword [0x4954a0]
mov dword [eax + 8], edx
mov ecx, dword [0x4954a4]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4954a8]
mov dword [eax + 0x10], edx
mov cl, byte [0x4954ac]
mov byte [eax + 0x14], cl
jmp 0x406c13
cmp eax, 1
jne 0x4069f2
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x4069b0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406978
mov edx, dword [str.Windows_7]
mov dword [eax], edx
mov ecx, dword [0x4954b4]
mov dword [eax + 4], ecx
mov dx, word [0x4954b8]
mov word [eax + 8], dx
mov cl, byte [0x4954ba]
mov byte [eax + 0xa], cl
jmp 0x406c13
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4069b0
mov edx, dword [str.Windows_Server_2008_R2]
mov dword [eax], edx
mov ecx, dword [0x4954c0]
mov dword [eax + 4], ecx
mov edx, dword [0x4954c4]
mov dword [eax + 8], edx
mov ecx, dword [0x4954c8]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4954cc]
mov dword [eax + 0x10], edx
mov ecx, dword [0x4954d0]
mov dword [eax + 0x14], ecx
jmp 0x406c13
cmp eax, 2
jne 0x406c13
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x406b9a
push str.RtlGetNtVersionNumbers
push esi
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 2
mov dword [esp + 0x18], 0x23f0
call edi
test eax, eax
je 0x406a45
lea edx, [esp + 0x10]
push edx
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
call eax
mov eax, dword [esp + 0x18]
cmp eax, 3
jne 0x406af1
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406aa0
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a60
mov ecx, dword [str.Windows_8.1]
mov dword [eax], ecx
mov edx, dword [0x4954fc]
mov dword [eax + 4], edx
mov ecx, dword [0x495500]
mov dword [eax + 8], ecx
mov dl, byte [0x495504]
mov byte [eax + 0xc], dl
mov edx, dword [esp + 0x10]
push esi
mov dword [esp + 0x54], edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x406c13
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406aa0
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x49550c]
mov dword [eax + 4], edx
mov ecx, dword [0x495510]
mov dword [eax + 8], ecx
mov edx, dword [0x495514]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495518]
mov dword [eax + 0x10], ecx
mov dl, byte [0x49551c]
mov byte [eax + 0x14], dl
mov edx, dword [esp + 0x10]
push esi
mov dword [esp + 0x54], edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x406c13
cmp eax, 4
jge 0x406b61
cmp dword [esp + 0x14], 0xa
je 0x406b61
cmp eax, 2
jne 0x406b86
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406b54
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b13
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495530]
mov dword [eax + 4], edx
mov cx, word [0x495534]
mov word [eax + 8], cx
mov dl, byte [0x495536]
mov byte [eax + 0xa], dl
mov edx, dword [esp + 0x10]
push esi
mov dword [esp + 0x54], edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x406c13
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b54
jmp 0x406aa8
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b64
mov ecx, dword [str.Windows_10]
mov dword [eax], ecx
mov edx, dword [0x495524]
mov dword [eax + 4], edx
mov ecx, dword [0x495528]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x10]
push esi
mov dword [esp + 0x54], edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x406c13
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406bd6
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ba7
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495530]
mov dword [eax + 4], edx
mov cx, word [0x495534]
mov word [eax + 8], cx
mov dl, byte [0x495536]
mov byte [eax + 0xa], dl
jmp 0x406c13
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406bd6
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x49550c]
mov dword [eax + 4], edx
mov ecx, dword [0x495510]
mov dword [eax + 8], ecx
mov edx, dword [0x495514]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495518]
mov dword [eax + 0x10], ecx
mov dl, byte [0x49551c]
mov byte [eax + 0x14], dl
push str.GetProductInfo
push str.kernel32.dll
call ebp
push eax
call edi
test eax, eax
je 0x406c3b
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x4c]
push 0
push 0
push edx
push ecx
call eax
mov eax, dword [esp + 0x1c]
dec eax
cmp eax, 0x2f
ja case.0x406c50.5
movzx edx, byte [eax + 0x40770c]
jmp dword [edx*4 + 0x4076c0]
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406c60
mov ecx, dword [str.Ultimate_Edition]
mov dword [eax], ecx
mov edx, dword [0x49554c]
mov dword [eax + 4], edx
mov ecx, dword [0x495550]
mov dword [eax + 8], ecx
mov edx, dword [0x495554]
mov dword [eax + 0xc], edx
mov cl, byte [0x495558]
mov byte [eax + 0x10], cl
jmp case.0x406c50.5
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ca0
mov edx, dword [str.Professional]
mov dword [eax], edx
mov ecx, dword [0x495560]
mov dword [eax + 4], ecx
mov edx, dword [0x495564]
mov dword [eax + 8], edx
mov cl, byte [0x495568]
mov byte [eax + 0xc], cl
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406cd3
mov edx, dword [str.Home_Premium_Edition]
mov dword [eax], edx
mov ecx, dword [0x495570]
mov dword [eax + 4], ecx
mov edx, dword [0x495574]
mov dword [eax + 8], edx
mov ecx, dword [0x495578]
mov dword [eax + 0xc], ecx
mov edx, dword [0x49557c]
mov dword [eax + 0x10], edx
mov cl, byte [0x495580]
mov byte [eax + 0x14], cl
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d18
mov edx, dword [str.Home_Basic_Edition]
mov dword [eax], edx
mov ecx, dword [0x495588]
mov dword [eax + 4], ecx
mov edx, dword [0x49558c]
mov dword [eax + 8], edx
mov ecx, dword [0x495590]
mov dword [eax + 0xc], ecx
mov dx, word [0x495594]
mov word [eax + 0x10], dx
mov cl, byte [0x495596]
jmp 0x40702c
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d60
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x49559c]
mov dword [eax + 4], ecx
mov edx, dword [0x4955a0]
mov dword [eax + 8], edx
mov ecx, dword [0x4955a4]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955a8]
mov word [eax + 0x10], dx
mov cl, byte [0x4955aa]
jmp 0x40702c
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406da4
mov edx, dword [str.Business_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955b0]
mov dword [eax + 4], ecx
mov edx, dword [0x4955b4]
mov dword [eax + 8], edx
mov ecx, dword [0x4955b8]
mov dword [eax + 0xc], ecx
mov dl, byte [0x4955bc]
mov byte [eax + 0x10], dl
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406de0
mov ecx, dword [str.Starter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955c4]
mov dword [eax + 4], edx
mov ecx, dword [0x4955c8]
mov dword [eax + 8], ecx
mov edx, dword [0x4955cc]
mov dword [eax + 0xc], edx
jmp case.0x406c50.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406e13
mov ecx, 5
mov esi, str.Cluster_Server_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e32
mov ecx, dword [str.Datacenter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955ec]
mov dword [eax + 4], edx
mov ecx, dword [0x4955f0]
mov dword [eax + 8], ecx
mov edx, dword [0x4955f4]
mov dword [eax + 0xc], edx
mov cx, word [0x4955f8]
mov word [eax + 0x10], cx
mov dl, byte [0x4955fa]
mov byte [eax + 0x12], dl
jmp case.0x406c50.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406e80
mov ecx, 9
mov esi, str.Datacenter_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp case.0x406c50.5
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ea0
mov ecx, dword [str.Enterprise_Edition]
mov dword [eax], ecx
mov edx, dword [0x49559c]
mov dword [eax + 4], edx
mov ecx, dword [0x4955a0]
mov dword [eax + 8], ecx
mov edx, dword [0x4955a4]
mov dword [eax + 0xc], edx
mov cx, word [0x4955a8]
mov word [eax + 0x10], cx
mov dl, byte [0x4955aa]
mov byte [eax + 0x12], dl
jmp case.0x406c50.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406ee7
mov ecx, 9
mov esi, str.Enterprise_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp case.0x406c50.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406f06
mov ecx, 0xb
mov esi, str.Enterprise_Edition_for_Itanium_based_Systems
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f23
mov ecx, dword [str.Small_Business_Server]
mov dword [eax], ecx
mov edx, dword [0x495680]
mov dword [eax + 4], edx
mov ecx, dword [0x495684]
mov dword [eax + 8], ecx
mov edx, dword [0x495688]
mov dword [eax + 0xc], edx
mov ecx, dword [0x49568c]
mov dword [eax + 0x10], ecx
mov dx, word [0x495690]
mov word [eax + 0x14], dx
jmp case.0x406c50.5
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406f70
mov ecx, 9
mov esi, str.Small_Business_Server_Premium_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp case.0x406c50.5
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f90
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956c0]
mov dword [eax + 4], edx
mov ecx, dword [0x4956c4]
mov dword [eax + 8], ecx
mov edx, dword [0x4956c8]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956cc]
mov byte [eax + 0x10], cl
jmp case.0x406c50.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406fd0
mov ecx, 9
mov esi, str.Standard_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp case.0x406c50.5
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ff0
mov edx, dword [str.Web_Server_Edition]
mov dword [eax], edx
mov ecx, dword [0x4956fc]
mov dword [eax + 4], ecx
mov edx, dword [0x495700]
mov dword [eax + 8], edx
mov ecx, dword [0x495704]
mov dword [eax + 0xc], ecx
mov dx, word [0x495708]
mov word [eax + 0x10], dx
mov cl, byte [0x49570a]
mov byte [eax + 0x12], cl
cmp dword [esp + 0x48], 5
jne 0x407564
mov eax, dword [esp + 0x4c]
cmp eax, 2
jne 0x4073c8
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edx, dword [esp + 0x20]
test eax, eax
je 0x40707c
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407060
mov ecx, 5
mov esi, str.Windows_Server_2003_R2
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp 0x40715f
mov eax, dword [esp + 0xdc]
test eax, 0x2000
je 0x4070a9
mov edi, ebx
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407090
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x40715f
test eax, 0x8000
je 0x4070ec
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4070b3
mov ecx, dword [str.Windows_Home_Server]
mov dword [eax], ecx
mov ecx, dword [0x495744]
mov dword [eax + 4], ecx
mov ecx, dword [0x495748]
mov dword [eax + 8], ecx
mov ecx, dword [0x49574c]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495750]
mov dword [eax + 0x10], ecx
jmp 0x40715f
cmp byte [esp + 0xde], 1
jne 0x407119
cmp dx, 9
jne 0x407119
mov edi, ebx
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407100
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x4073b9
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407120
mov ecx, dword [str.Windows_Server_2003_]
mov dword [eax], ecx
mov ecx, dword [0x49577c]
mov dword [eax + 4], ecx
mov ecx, dword [0x495780]
mov dword [eax + 8], ecx
mov ecx, dword [0x495784]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495788]
mov dword [eax + 0x10], ecx
mov cx, word [0x49578c]
mov word [eax + 0x14], cx
cmp byte [esp + 0xde], 1
je 0x4073b9
cmp dx, 6
jne 0x4071c0
mov al, byte [esp + 0xdc]
test al, al
jns 0x40719b
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407181
mov ecx, 0xb
mov esi, str.Datacenter_Edition_for_Itanium_based_Systems
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4073b9
test al, 2
je 0x4073b9
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4071a6
mov ecx, 0xb
mov esi, str.Enterprise_Edition_for_Itanium_based_Systems
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4073b9
cmp dx, 9
jne 0x407262
mov al, byte [esp + 0xdc]
test al, al
jns 0x4071f4
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4071d8
mov ecx, 5
mov esi, str.Datacenter_x64_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4073b9
test al, 2
je 0x40721c
mov edi, ebx
dec edi
jmp 0x407200
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407200
mov ecx, 5
mov esi, str.Enterprise_x64_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4073b9
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407220
mov edx, dword [str.Standard_x64_Edition]
mov dword [eax], edx
mov ecx, dword [0x4957f4]
mov dword [eax + 4], ecx
mov edx, dword [0x4957f8]
mov dword [eax + 8], edx
mov ecx, dword [0x4957fc]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495800]
mov dword [eax + 0x10], edx
mov cl, byte [0x495804]
mov byte [eax + 0x14], cl
jmp 0x4073b9
mov eax, dword [esp + 0xdc]
test eax, 0x4000
je 0x4072b5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407273
mov edx, dword [str.Compute_Cluster_Edition]
mov dword [eax], edx
mov ecx, dword [0x49580c]
mov dword [eax + 4], ecx
mov edx, dword [0x495810]
mov dword [eax + 8], edx
mov ecx, dword [0x495814]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495818]
mov dword [eax + 0x10], edx
mov ecx, dword [0x49581c]
mov dword [eax + 0x14], ecx
jmp 0x4073b9
test al, al
jns 0x407304
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072c0
mov edx, dword [str.Datacenter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955ec]
mov dword [eax + 4], ecx
mov edx, dword [0x4955f0]
mov dword [eax + 8], edx
mov ecx, dword [0x4955f4]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955f8]
mov word [eax + 0x10], dx
mov cl, byte [0x4955fa]
mov byte [eax + 0x12], cl
jmp 0x4073b9
test al, 2
je 0x407351
mov eax, ebx
dec eax
jmp 0x407310
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407310
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x49559c]
mov dword [eax + 4], ecx
mov edx, dword [0x4955a0]
mov dword [eax + 8], edx
mov ecx, dword [0x4955a4]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955a8]
mov word [eax + 0x10], dx
mov cl, byte [0x4955aa]
mov byte [eax + 0x12], cl
jmp 0x4073b9
test eax, 0x400
mov eax, ebx
je 0x407384
dec eax
jmp 0x407360
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407360
mov edx, dword [str.Web_Edition]
mov dword [eax], edx
mov ecx, dword [0x495824]
mov dword [eax + 4], ecx
mov edx, dword [0x495828]
mov dword [eax + 8], edx
jmp 0x4073b9
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407385
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956c0]
mov dword [eax + 4], edx
mov ecx, dword [0x4956c4]
mov dword [eax + 8], ecx
mov edx, dword [0x4956c8]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956cc]
mov byte [eax + 0x10], cl
cmp dword [esp + 0x48], 5
jne 0x407564
mov eax, dword [esp + 0x4c]
cmp eax, 1
jne 0x407440
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4073d4
mov edx, dword [str.Windows_XP]
mov dword [eax], edx
mov ecx, dword [0x495830]
mov dword [eax + 4], ecx
mov edx, dword [0x495834]
mov dword [eax + 8], edx
mov eax, ebx
dec eax
test dword [esp + 0xdc], 0x200
je 0x407436
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407406
mov ecx, dword [str.Home_Edition]
mov dword [eax], ecx
mov edx, dword [0x49583c]
mov dword [eax + 4], edx
mov ecx, dword [0x495840]
mov dword [eax + 8], ecx
mov dl, byte [0x495844]
mov byte [eax + 0xc], dl
jmp 0x407564
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407436
jmp 0x407498
test eax, eax
jne 0x407564
mov eax, ebx
dec eax
jmp 0x407450
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407450
cmp byte [esp + 0xde], 1
mov ecx, dword [str.Windows_2000]
mov dword [eax], ecx
mov edx, dword [0x49584c]
mov dword [eax + 4], edx
mov ecx, dword [0x495850]
mov dword [eax + 8], ecx
mov dx, word [0x495854]
mov word [eax + 0xc], dx
jne 0x4074c0
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407490
mov ecx, dword [str.Professional]
mov dword [eax], ecx
mov edx, dword [0x495560]
mov dword [eax + 4], edx
mov ecx, dword [0x495564]
mov dword [eax + 8], ecx
mov dl, byte [0x495568]
mov byte [eax + 0xc], dl
jmp 0x407564
mov al, byte [esp + 0xdc]
test al, al
jns 0x407508
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4074d0
mov ecx, dword [str.Datacenter_Server]
mov dword [eax], ecx
mov edx, dword [0x49585c]
mov dword [eax + 4], edx
mov ecx, dword [0x495860]
mov dword [eax + 8], ecx
mov edx, dword [0x495864]
mov dword [eax + 0xc], edx
mov cx, word [0x495868]
mov word [eax + 0x10], cx
jmp 0x407564
test al, 2
mov eax, ebx
je 0x40753d
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407510
mov edx, dword [str.Advanced_Server]
mov dword [eax], edx
mov ecx, dword [0x495870]
mov dword [eax + 4], ecx
mov edx, dword [0x495874]
mov dword [eax + 8], edx
mov ecx, dword [0x495878]
mov dword [eax + 0xc], ecx
jmp 0x407564
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407540
mov edx, dword [str.Server]
mov dword [eax], edx
mov cx, word [0x495880]
mov word [eax + 4], cx
mov dl, byte [0x495882]
mov byte [eax + 6], dl
lea eax, [esp + 0x58]
lea edx, [eax + 1]
jmp 0x407570
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407570
sub eax, edx
je 0x4075bb
mov edi, ebx
dec edi
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407580
mov ax, word [0x495884]
mov word [edi], ax
lea eax, [esp + 0x58]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x407597
mov edi, ebx
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4075a5
mov ecx, eax
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 + 0x50]
push ecx
lea edx, [esp + 0xe4]
push str.__build__d_
push edx
call fcn.0043728a
lea eax, [esp + 0xec]
add esp, 0xc
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4075e0
mov edi, ebx
sub eax, ecx
mov esi, ecx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4075f0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp dword [esp + 0x48], 6
rep movsb byte es:[edi], byte [esi]
pop esi
jb 0x407689
mov eax, dword [esp + 0x1c]
cmp ax, 9
jne 0x40765f
dec ebx
mov eax, ebx
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407620
mov ecx, dword [str.__64_bit]
mov dword [eax], ecx
mov edx, dword [0x495898]
mov dword [eax + 4], edx
mov cl, byte [0x49589c]
pop edi
pop ebp
mov byte [eax + 8], cl
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043675a
add esp, 0x124
ret
test ax, ax
jne 0x407689
dec ebx
mov eax, ebx
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407667
mov edx, dword [str.__32_bit]
mov dword [eax], edx
mov ecx, dword [0x4958a4]
mov dword [eax + 4], ecx
mov dl, byte [0x4958a8]
mov byte [eax + 8], dl
pop edi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043675a
add esp, 0x124
ret
mov ecx, dword [esp + 0x12c]
pop edi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.0043675a
add esp, 0x124
ret