Function at 0x4066a0
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.0043aba0
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 0x406722
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043671a
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 0x40674c
lea edx, [esp + 0x1c]
push edx
call eax
jmp 0x406757
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [esp + 0x50], 2
jne 0x407576
cmp dword [esp + 0x44], 4
jbe 0x407576
push esi
push 0xb
push str.Microsoft
push ebx
call fcn.004373a0
add esp, 0xc
cmp dword [esp + 0x48], 6
jne case.0x406b3a.5
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x406822
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x4067e0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4067a2
mov ecx, dword [str.Windows_Vista]
mov dword [eax], ecx
mov edx, dword [0x495474]
mov dword [eax + 4], edx
mov ecx, dword [0x495478]
mov dword [eax + 8], ecx
mov dx, word [0x49547c]
mov word [eax + 0xc], dx
mov cl, byte [0x49547e]
mov byte [eax + 0xe], cl
jmp 0x406afd
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4067e0
mov edx, dword [str.Windows_Server_2008]
mov dword [eax], edx
mov ecx, dword [0x495484]
mov dword [eax + 4], ecx
mov edx, dword [0x495488]
mov dword [eax + 8], edx
mov ecx, dword [0x49548c]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495490]
mov dword [eax + 0x10], edx
mov cl, byte [0x495494]
mov byte [eax + 0x14], cl
jmp 0x406afd
cmp eax, 1
jne 0x4068b2
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406870
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406838
mov edx, dword [str.Windows_7]
mov dword [eax], edx
mov ecx, dword [0x49549c]
mov dword [eax + 4], ecx
mov dx, word [0x4954a0]
mov word [eax + 8], dx
mov cl, byte [0x4954a2]
mov byte [eax + 0xa], cl
jmp 0x406afd
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406870
mov edx, dword [str.Windows_Server_2008_R2]
mov dword [eax], edx
mov ecx, dword [0x4954a8]
mov dword [eax + 4], ecx
mov edx, dword [0x4954ac]
mov dword [eax + 8], edx
mov ecx, dword [0x4954b0]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4954b4]
mov dword [eax + 0x10], edx
mov ecx, dword [0x4954b8]
mov dword [eax + 0x14], ecx
jmp 0x406afd
cmp eax, 2
jne 0x406afd
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x406a81
push str.RtlGetNtVersionNumbers
push esi
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 2
mov dword [esp + 0x1c], 0x23f0
call edi
test eax, eax
je 0x406905
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x18]
push edx
call eax
mov eax, dword [esp + 0x18]
mov ecx, 3
cmp cx, ax
jne 0x406992
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406950
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406920
mov edx, dword [str.Windows_8.1]
mov dword [eax], edx
mov ecx, dword [0x4954e4]
mov dword [eax + 4], ecx
mov edx, dword [0x4954e8]
mov dword [eax + 8], edx
mov cl, byte [0x4954ec]
mov byte [eax + 0xc], cl
jmp 0x406a64
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406950
mov edx, dword [str.Windows_Server_2012]
mov dword [eax], edx
mov ecx, dword [0x4954f4]
mov dword [eax + 4], ecx
mov edx, dword [0x4954f8]
mov dword [eax + 8], edx
mov ecx, dword [0x4954fc]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495500]
mov dword [eax + 0x10], edx
mov cl, byte [0x495504]
mov byte [eax + 0x14], cl
jmp 0x406a64
mov edx, 4
cmp dx, ax
jle 0x406a3f
mov ecx, 0xa
cmp cx, word [esp + 0x10]
je 0x406a3f
mov edx, 2
cmp dx, ax
jne 0x406a64
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406a00
jmp 0x4069d0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4069d0
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495518]
mov dword [eax + 4], edx
mov cx, word [0x49551c]
mov word [eax + 8], cx
mov dl, byte [0x49551e]
mov byte [eax + 0xa], dl
jmp 0x406a64
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a00
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x4954f4]
mov dword [eax + 4], edx
mov ecx, dword [0x4954f8]
mov dword [eax + 8], ecx
mov edx, dword [0x4954fc]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495500]
mov dword [eax + 0x10], ecx
mov dl, byte [0x495504]
mov byte [eax + 0x14], dl
jmp 0x406a64
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a42
mov ecx, dword [str.Windows_10]
mov dword [eax], ecx
mov edx, dword [0x49550c]
mov dword [eax + 4], edx
mov ecx, dword [0x495510]
mov dword [eax + 8], ecx
movsx edx, word [esp + 0x14]
push esi
mov dword [esp + 0x54], edx
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x406afd
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406ac0
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a90
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495518]
mov dword [eax + 4], edx
mov cx, word [0x49551c]
mov word [eax + 8], cx
mov dl, byte [0x49551e]
mov byte [eax + 0xa], dl
jmp 0x406afd
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ac0
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x4954f4]
mov dword [eax + 4], edx
mov ecx, dword [0x4954f8]
mov dword [eax + 8], ecx
mov edx, dword [0x4954fc]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495500]
mov dword [eax + 0x10], ecx
mov dl, byte [0x495504]
mov byte [eax + 0x14], dl
push str.GetProductInfo
push str.kernel32.dll
call ebp
push eax
call edi
test eax, eax
je 0x406b25
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.0x406b3a.5
movzx edx, byte [eax + 0x4075dc]
jmp dword [edx*4 + 0x407590]
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b44
mov ecx, dword [str.Ultimate_Edition]
mov dword [eax], ecx
mov edx, dword [0x495534]
mov dword [eax + 4], edx
mov ecx, dword [0x495538]
mov dword [eax + 8], ecx
mov edx, dword [0x49553c]
mov dword [eax + 0xc], edx
mov cl, byte [0x495540]
mov byte [eax + 0x10], cl
jmp case.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b80
mov edx, dword [str.Professional]
mov dword [eax], edx
mov ecx, dword [0x495548]
mov dword [eax + 4], ecx
mov edx, dword [0x49554c]
mov dword [eax + 8], edx
mov cl, byte [0x495550]
mov byte [eax + 0xc], cl
jmp case.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406bb3
mov edx, dword [str.Home_Premium_Edition]
mov dword [eax], edx
mov ecx, dword [0x495558]
mov dword [eax + 4], ecx
mov edx, dword [0x49555c]
mov dword [eax + 8], edx
mov ecx, dword [0x495560]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495564]
mov dword [eax + 0x10], edx
mov cl, byte [0x495568]
mov byte [eax + 0x14], cl
jmp case.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406bf8
mov edx, dword [str.Home_Basic_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 dx, word [0x49557c]
mov word [eax + 0x10], dx
mov cl, byte [0x49557e]
jmp 0x406f0c
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406c40
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x495584]
mov dword [eax + 4], ecx
mov edx, dword [0x495588]
mov dword [eax + 8], edx
mov ecx, dword [0x49558c]
mov dword [eax + 0xc], ecx
mov dx, word [0x495590]
mov word [eax + 0x10], dx
mov cl, byte [0x495592]
jmp 0x406f0c
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406c84
mov edx, dword [str.Business_Edition]
mov dword [eax], edx
mov ecx, dword [0x495598]
mov dword [eax + 4], ecx
mov edx, dword [0x49559c]
mov dword [eax + 8], edx
mov ecx, dword [0x4955a0]
mov dword [eax + 0xc], ecx
mov dl, byte [0x4955a4]
mov byte [eax + 0x10], dl
jmp case.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406cc0
mov ecx, dword [str.Starter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955ac]
mov dword [eax + 4], edx
mov ecx, dword [0x4955b0]
mov dword [eax + 8], ecx
mov edx, dword [0x4955b4]
mov dword [eax + 0xc], edx
jmp case.0x406b3a.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406cf3
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.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d12
mov ecx, dword [str.Datacenter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955d4]
mov dword [eax + 4], edx
mov ecx, dword [0x4955d8]
mov dword [eax + 8], ecx
mov edx, dword [0x4955dc]
mov dword [eax + 0xc], edx
mov cx, word [0x4955e0]
mov word [eax + 0x10], cx
mov dl, byte [0x4955e2]
mov byte [eax + 0x12], dl
jmp case.0x406b3a.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406d60
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.0x406b3a.5
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d80
mov ecx, dword [str.Enterprise_Edition]
mov dword [eax], ecx
mov edx, dword [0x495584]
mov dword [eax + 4], edx
mov ecx, dword [0x495588]
mov dword [eax + 8], ecx
mov edx, dword [0x49558c]
mov dword [eax + 0xc], edx
mov cx, word [0x495590]
mov word [eax + 0x10], cx
mov dl, byte [0x495592]
mov byte [eax + 0x12], dl
jmp case.0x406b3a.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406dc7
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.0x406b3a.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406de6
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.0x406b3a.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e03
mov ecx, dword [str.Small_Business_Server]
mov dword [eax], ecx
mov edx, dword [0x495668]
mov dword [eax + 4], edx
mov ecx, dword [0x49566c]
mov dword [eax + 8], ecx
mov edx, dword [0x495670]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495674]
mov dword [eax + 0x10], ecx
mov dx, word [0x495678]
mov word [eax + 0x14], dx
jmp case.0x406b3a.5
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406e50
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.0x406b3a.5
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e70
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956a8]
mov dword [eax + 4], edx
mov ecx, dword [0x4956ac]
mov dword [eax + 8], ecx
mov edx, dword [0x4956b0]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956b4]
mov byte [eax + 0x10], cl
jmp case.0x406b3a.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406eb0
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.0x406b3a.5
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ed0
mov edx, dword [str.Web_Server_Edition]
mov dword [eax], edx
mov ecx, dword [0x4956e4]
mov dword [eax + 4], ecx
mov edx, dword [0x4956e8]
mov dword [eax + 8], edx
mov ecx, dword [0x4956ec]
mov dword [eax + 0xc], ecx
mov dx, word [0x4956f0]
mov word [eax + 0x10], dx
mov cl, byte [0x4956f2]
mov byte [eax + 0x12], cl
cmp dword [esp + 0x48], 5
jne 0x407434
mov eax, dword [esp + 0x4c]
cmp eax, 2
jne 0x4072a8
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edx, dword [esp + 0x20]
test eax, eax
je 0x406f5c
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406f40
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 0x40703f
mov eax, dword [esp + 0xdc]
test eax, 0x2000
je 0x406f89
mov edi, ebx
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406f70
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x40703f
test eax, 0x8000
je 0x406fc9
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f93
mov ecx, dword [str.Windows_Home_Server]
mov dword [eax], ecx
mov ecx, dword [0x49572c]
mov dword [eax + 4], ecx
mov ecx, dword [0x495730]
mov dword [eax + 8], ecx
mov ecx, dword [0x495734]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495738]
mov dword [eax + 0x10], ecx
jmp 0x40703f
cmp byte [esp + 0xde], 1
jne 0x406ff9
cmp dx, 9
jne 0x406ff9
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406fe0
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x407299
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407000
mov ecx, dword [str.Windows_Server_2003_]
mov dword [eax], ecx
mov ecx, dword [0x495764]
mov dword [eax + 4], ecx
mov ecx, dword [0x495768]
mov dword [eax + 8], ecx
mov ecx, dword [0x49576c]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495770]
mov dword [eax + 0x10], ecx
mov cx, word [0x495774]
mov word [eax + 0x14], cx
cmp byte [esp + 0xde], 1
je 0x407299
cmp dx, 6
jne 0x4070a0
mov al, byte [esp + 0xdc]
test al, al
jns 0x40707b
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407061
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 0x407299
test al, 2
je 0x407299
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407086
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 0x407299
cmp dx, 9
jne 0x407142
mov al, byte [esp + 0xdc]
test al, al
jns 0x4070d4
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4070b8
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 0x407299
test al, 2
je 0x4070fc
mov edi, ebx
dec edi
jmp 0x4070e0
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4070e0
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 0x407299
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407100
mov edx, dword [str.Standard_x64_Edition]
mov dword [eax], edx
mov ecx, dword [0x4957dc]
mov dword [eax + 4], ecx
mov edx, dword [0x4957e0]
mov dword [eax + 8], edx
mov ecx, dword [0x4957e4]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4957e8]
mov dword [eax + 0x10], edx
mov cl, byte [0x4957ec]
mov byte [eax + 0x14], cl
jmp 0x407299
mov eax, dword [esp + 0xdc]
test eax, 0x4000
je 0x407195
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407153
mov edx, dword [str.Compute_Cluster_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 ecx, dword [0x495804]
mov dword [eax + 0x14], ecx
jmp 0x407299
test al, al
jns 0x4071e4
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4071a0
mov edx, dword [str.Datacenter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955d4]
mov dword [eax + 4], ecx
mov edx, dword [0x4955d8]
mov dword [eax + 8], edx
mov ecx, dword [0x4955dc]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955e0]
mov word [eax + 0x10], dx
mov cl, byte [0x4955e2]
mov byte [eax + 0x12], cl
jmp 0x407299
test al, 2
je 0x407231
mov eax, ebx
dec eax
jmp 0x4071f0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4071f0
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x495584]
mov dword [eax + 4], ecx
mov edx, dword [0x495588]
mov dword [eax + 8], edx
mov ecx, dword [0x49558c]
mov dword [eax + 0xc], ecx
mov dx, word [0x495590]
mov word [eax + 0x10], dx
mov cl, byte [0x495592]
mov byte [eax + 0x12], cl
jmp 0x407299
test eax, 0x400
mov eax, ebx
je 0x407264
dec eax
jmp 0x407240
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407240
mov edx, dword [str.Web_Edition]
mov dword [eax], edx
mov ecx, dword [0x49580c]
mov dword [eax + 4], ecx
mov edx, dword [0x495810]
mov dword [eax + 8], edx
jmp 0x407299
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407265
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956a8]
mov dword [eax + 4], edx
mov ecx, dword [0x4956ac]
mov dword [eax + 8], ecx
mov edx, dword [0x4956b0]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956b4]
mov byte [eax + 0x10], cl
cmp dword [esp + 0x48], 5
jne 0x407434
mov eax, dword [esp + 0x4c]
cmp eax, 1
jne 0x40731c
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072b0
mov edx, dword [str.Windows_XP]
mov dword [eax], edx
mov ecx, dword [0x495818]
mov dword [eax + 4], ecx
mov edx, dword [0x49581c]
mov dword [eax + 8], edx
mov eax, ebx
dec eax
test dword [esp + 0xdc], 0x200
je 0x407312
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072e2
mov ecx, dword [str.Home_Edition]
mov dword [eax], ecx
mov edx, dword [0x495824]
mov dword [eax + 4], edx
mov ecx, dword [0x495828]
mov dword [eax + 8], ecx
mov dl, byte [0x49582c]
mov byte [eax + 0xc], dl
jmp 0x407434
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407312
jmp 0x407369
test eax, eax
jne 0x407434
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407327
cmp byte [esp + 0xde], 1
mov ecx, dword [str.Windows_2000]
mov dword [eax], ecx
mov edx, dword [0x495834]
mov dword [eax + 4], edx
mov ecx, dword [0x495838]
mov dword [eax + 8], ecx
mov dx, word [0x49583c]
mov word [eax + 0xc], dx
jne 0x407391
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407361
mov ecx, dword [str.Professional]
mov dword [eax], ecx
mov edx, dword [0x495548]
mov dword [eax + 4], edx
mov ecx, dword [0x49554c]
mov dword [eax + 8], ecx
mov dl, byte [0x495550]
mov byte [eax + 0xc], dl
jmp 0x407434
mov al, byte [esp + 0xdc]
test al, al
jns 0x4073d8
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4073a0
mov ecx, dword [str.Datacenter_Server]
mov dword [eax], ecx
mov edx, dword [0x495844]
mov dword [eax + 4], edx
mov ecx, dword [0x495848]
mov dword [eax + 8], ecx
mov edx, dword [0x49584c]
mov dword [eax + 0xc], edx
mov cx, word [0x495850]
mov word [eax + 0x10], cx
jmp 0x407434
test al, 2
mov eax, ebx
je 0x40740d
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4073e0
mov edx, dword [str.Advanced_Server]
mov dword [eax], edx
mov ecx, dword [0x495858]
mov dword [eax + 4], ecx
mov edx, dword [0x49585c]
mov dword [eax + 8], edx
mov ecx, dword [0x495860]
mov dword [eax + 0xc], ecx
jmp 0x407434
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407410
mov edx, dword [str.Server]
mov dword [eax], edx
mov cx, word [0x495868]
mov word [eax + 4], cx
mov dl, byte [0x49586a]
mov byte [eax + 6], dl
lea eax, [esp + 0x58]
lea edx, [eax + 1]
jmp 0x407440
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407440
sub eax, edx
je 0x40748b
mov edi, ebx
dec edi
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407450
mov ax, word [0x49586c]
mov word [edi], ax
lea eax, [esp + 0x58]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x407467
mov edi, ebx
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x407475
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.0043724a
lea eax, [esp + 0xec]
add esp, 0xc
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4074b0
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 0x4074c0
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 0x407559
mov eax, dword [esp + 0x1c]
cmp ax, 9
jne 0x40752f
dec ebx
mov eax, ebx
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4074f0
mov ecx, dword [str.__64_bit]
mov dword [eax], ecx
mov edx, dword [0x495880]
mov dword [eax + 4], edx
mov cl, byte [0x495884]
pop edi
pop ebp
mov byte [eax + 8], cl
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043671a
add esp, 0x124
ret
test ax, ax
jne 0x407559
dec ebx
mov eax, ebx
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407537
mov edx, dword [str.__32_bit]
mov dword [eax], edx
mov ecx, dword [0x49588c]
mov dword [eax + 4], ecx
mov dl, byte [0x495890]
mov byte [eax + 8], dl
pop edi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.0043671a
add esp, 0x124
ret
mov ecx, dword [esp + 0x12c]
pop edi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.0043671a
add esp, 0x124
ret