Function at 0x406710
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.0043abc0
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 0x406792
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.00436738
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 0x4067bc
lea edx, [esp + 0x1c]
push edx
call eax
jmp 0x4067c7
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [esp + 0x50], 2
jne 0x4075e6
cmp dword [esp + 0x44], 4
jbe 0x4075e6
push esi
push 0xb
push str.Microsoft
push ebx
call fcn.004373c0
add esp, 0xc
cmp dword [esp + 0x48], 6
jne case.0x406baa.5
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x406892
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406850
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406812
mov ecx, dword [str.Windows_Vista]
mov dword [eax], ecx
mov edx, dword [0x495494]
mov dword [eax + 4], edx
mov ecx, dword [0x495498]
mov dword [eax + 8], ecx
mov dx, word [0x49549c]
mov word [eax + 0xc], dx
mov cl, byte [0x49549e]
mov byte [eax + 0xe], cl
jmp 0x406b6d
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406850
mov edx, dword [str.Windows_Server_2008]
mov dword [eax], edx
mov ecx, dword [0x4954a4]
mov dword [eax + 4], ecx
mov edx, dword [0x4954a8]
mov dword [eax + 8], edx
mov ecx, dword [0x4954ac]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4954b0]
mov dword [eax + 0x10], edx
mov cl, byte [0x4954b4]
mov byte [eax + 0x14], cl
jmp 0x406b6d
cmp eax, 1
jne 0x406922
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x4068e0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4068a8
mov edx, dword [str.Windows_7]
mov dword [eax], edx
mov ecx, dword [0x4954bc]
mov dword [eax + 4], ecx
mov dx, word [0x4954c0]
mov word [eax + 8], dx
mov cl, byte [0x4954c2]
mov byte [eax + 0xa], cl
jmp 0x406b6d
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4068e0
mov edx, dword [str.Windows_Server_2008_R2]
mov dword [eax], edx
mov ecx, dword [0x4954c8]
mov dword [eax + 4], ecx
mov edx, dword [0x4954cc]
mov dword [eax + 8], edx
mov ecx, dword [0x4954d0]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4954d4]
mov dword [eax + 0x10], edx
mov ecx, dword [0x4954d8]
mov dword [eax + 0x14], ecx
jmp 0x406b6d
cmp eax, 2
jne 0x406b6d
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x406af1
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 0x406975
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 0x406a02
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x4069c0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406990
mov edx, dword [str.Windows_8.1]
mov dword [eax], edx
mov ecx, dword [0x495504]
mov dword [eax + 4], ecx
mov edx, dword [0x495508]
mov dword [eax + 8], edx
mov cl, byte [0x49550c]
mov byte [eax + 0xc], cl
jmp 0x406ad4
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4069c0
mov edx, dword [str.Windows_Server_2012]
mov dword [eax], edx
mov ecx, dword [0x495514]
mov dword [eax + 4], ecx
mov edx, dword [0x495518]
mov dword [eax + 8], edx
mov ecx, dword [0x49551c]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495520]
mov dword [eax + 0x10], edx
mov cl, byte [0x495524]
mov byte [eax + 0x14], cl
jmp 0x406ad4
mov edx, 4
cmp dx, ax
jle 0x406aaf
mov ecx, 0xa
cmp cx, word [esp + 0x10]
je 0x406aaf
mov edx, 2
cmp dx, ax
jne 0x406ad4
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406a70
jmp 0x406a40
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a40
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495538]
mov dword [eax + 4], edx
mov cx, word [0x49553c]
mov word [eax + 8], cx
mov dl, byte [0x49553e]
mov byte [eax + 0xa], dl
jmp 0x406ad4
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406a70
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x495514]
mov dword [eax + 4], edx
mov ecx, dword [0x495518]
mov dword [eax + 8], ecx
mov edx, dword [0x49551c]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495520]
mov dword [eax + 0x10], ecx
mov dl, byte [0x495524]
mov byte [eax + 0x14], dl
jmp 0x406ad4
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ab2
mov ecx, dword [str.Windows_10]
mov dword [eax], ecx
mov edx, dword [0x49552c]
mov dword [eax + 4], edx
mov ecx, dword [0x495530]
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 0x406b6d
mov eax, ebx
dec eax
cmp byte [esp + 0xde], 1
jne 0x406b30
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b00
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x495538]
mov dword [eax + 4], edx
mov cx, word [0x49553c]
mov word [eax + 8], cx
mov dl, byte [0x49553e]
mov byte [eax + 0xa], dl
jmp 0x406b6d
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406b30
mov ecx, dword [str.Windows_Server_2012]
mov dword [eax], ecx
mov edx, dword [0x495514]
mov dword [eax + 4], edx
mov ecx, dword [0x495518]
mov dword [eax + 8], ecx
mov edx, dword [0x49551c]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495520]
mov dword [eax + 0x10], ecx
mov dl, byte [0x495524]
mov byte [eax + 0x14], dl
push str.GetProductInfo
push str.kernel32.dll
call ebp
push eax
call edi
test eax, eax
je 0x406b95
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.0x406baa.5
movzx edx, byte [eax + 0x40764c]
jmp dword [edx*4 + 0x407600]
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406bb4
mov ecx, dword [str.Ultimate_Edition]
mov dword [eax], ecx
mov edx, dword [0x495554]
mov dword [eax + 4], edx
mov ecx, dword [0x495558]
mov dword [eax + 8], ecx
mov edx, dword [0x49555c]
mov dword [eax + 0xc], edx
mov cl, byte [0x495560]
mov byte [eax + 0x10], cl
jmp case.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406bf0
mov edx, dword [str.Professional]
mov dword [eax], edx
mov ecx, dword [0x495568]
mov dword [eax + 4], ecx
mov edx, dword [0x49556c]
mov dword [eax + 8], edx
mov cl, byte [0x495570]
mov byte [eax + 0xc], cl
jmp case.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406c23
mov edx, dword [str.Home_Premium_Edition]
mov dword [eax], edx
mov ecx, dword [0x495578]
mov dword [eax + 4], ecx
mov edx, dword [0x49557c]
mov dword [eax + 8], edx
mov ecx, dword [0x495580]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495584]
mov dword [eax + 0x10], edx
mov cl, byte [0x495588]
mov byte [eax + 0x14], cl
jmp case.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406c68
mov edx, dword [str.Home_Basic_Edition]
mov dword [eax], edx
mov ecx, dword [0x495590]
mov dword [eax + 4], ecx
mov edx, dword [0x495594]
mov dword [eax + 8], edx
mov ecx, dword [0x495598]
mov dword [eax + 0xc], ecx
mov dx, word [0x49559c]
mov word [eax + 0x10], dx
mov cl, byte [0x49559e]
jmp 0x406f7c
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406cb0
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955a4]
mov dword [eax + 4], ecx
mov edx, dword [0x4955a8]
mov dword [eax + 8], edx
mov ecx, dword [0x4955ac]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955b0]
mov word [eax + 0x10], dx
mov cl, byte [0x4955b2]
jmp 0x406f7c
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406cf4
mov edx, dword [str.Business_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955b8]
mov dword [eax + 4], ecx
mov edx, dword [0x4955bc]
mov dword [eax + 8], edx
mov ecx, dword [0x4955c0]
mov dword [eax + 0xc], ecx
mov dl, byte [0x4955c4]
mov byte [eax + 0x10], dl
jmp case.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d30
mov ecx, dword [str.Starter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955cc]
mov dword [eax + 4], edx
mov ecx, dword [0x4955d0]
mov dword [eax + 8], ecx
mov edx, dword [0x4955d4]
mov dword [eax + 0xc], edx
jmp case.0x406baa.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406d63
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.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d82
mov ecx, dword [str.Datacenter_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955f4]
mov dword [eax + 4], edx
mov ecx, dword [0x4955f8]
mov dword [eax + 8], ecx
mov edx, dword [0x4955fc]
mov dword [eax + 0xc], edx
mov cx, word [0x495600]
mov word [eax + 0x10], cx
mov dl, byte [0x495602]
mov byte [eax + 0x12], dl
jmp case.0x406baa.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406dd0
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.0x406baa.5
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406df0
mov ecx, dword [str.Enterprise_Edition]
mov dword [eax], ecx
mov edx, dword [0x4955a4]
mov dword [eax + 4], edx
mov ecx, dword [0x4955a8]
mov dword [eax + 8], ecx
mov edx, dword [0x4955ac]
mov dword [eax + 0xc], edx
mov cx, word [0x4955b0]
mov word [eax + 0x10], cx
mov dl, byte [0x4955b2]
mov byte [eax + 0x12], dl
jmp case.0x406baa.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406e37
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.0x406baa.5
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406e56
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.0x406baa.5
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e73
mov ecx, dword [str.Small_Business_Server]
mov dword [eax], ecx
mov edx, dword [0x495688]
mov dword [eax + 4], edx
mov ecx, dword [0x49568c]
mov dword [eax + 8], ecx
mov edx, dword [0x495690]
mov dword [eax + 0xc], edx
mov ecx, dword [0x495694]
mov dword [eax + 0x10], ecx
mov dx, word [0x495698]
mov word [eax + 0x14], dx
jmp case.0x406baa.5
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406ec0
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.0x406baa.5
mov eax, ebx
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ee0
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956c8]
mov dword [eax + 4], edx
mov ecx, dword [0x4956cc]
mov dword [eax + 8], ecx
mov edx, dword [0x4956d0]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956d4]
mov byte [eax + 0x10], cl
jmp case.0x406baa.5
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406f20
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.0x406baa.5
mov eax, ebx
dec eax
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f40
mov edx, dword [str.Web_Server_Edition]
mov dword [eax], edx
mov ecx, dword [0x495704]
mov dword [eax + 4], ecx
mov edx, dword [0x495708]
mov dword [eax + 8], edx
mov ecx, dword [0x49570c]
mov dword [eax + 0xc], ecx
mov dx, word [0x495710]
mov word [eax + 0x10], dx
mov cl, byte [0x495712]
mov byte [eax + 0x12], cl
cmp dword [esp + 0x48], 5
jne 0x4074a4
mov eax, dword [esp + 0x4c]
cmp eax, 2
jne 0x407318
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edx, dword [esp + 0x20]
test eax, eax
je 0x406fcc
mov edi, ebx
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406fb0
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 0x4070af
mov eax, dword [esp + 0xdc]
test eax, 0x2000
je 0x406ff9
mov edi, ebx
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406fe0
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x4070af
test eax, 0x8000
je 0x407039
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407003
mov ecx, dword [str.Windows_Home_Server]
mov dword [eax], ecx
mov ecx, dword [0x49574c]
mov dword [eax + 4], ecx
mov ecx, dword [0x495750]
mov dword [eax + 8], ecx
mov ecx, dword [0x495754]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495758]
mov dword [eax + 0x10], ecx
jmp 0x4070af
cmp byte [esp + 0xde], 1
jne 0x407069
cmp dx, 9
jne 0x407069
mov edi, ebx
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407050
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x407309
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407070
mov ecx, dword [str.Windows_Server_2003_]
mov dword [eax], ecx
mov ecx, dword [0x495784]
mov dword [eax + 4], ecx
mov ecx, dword [0x495788]
mov dword [eax + 8], ecx
mov ecx, dword [0x49578c]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x495790]
mov dword [eax + 0x10], ecx
mov cx, word [0x495794]
mov word [eax + 0x14], cx
cmp byte [esp + 0xde], 1
je 0x407309
cmp dx, 6
jne 0x407110
mov al, byte [esp + 0xdc]
test al, al
jns 0x4070eb
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4070d1
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 0x407309
test al, 2
je 0x407309
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4070f6
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 0x407309
cmp dx, 9
jne 0x4071b2
mov al, byte [esp + 0xdc]
test al, al
jns 0x407144
mov edi, ebx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407128
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 0x407309
test al, 2
je 0x40716c
mov edi, ebx
dec edi
jmp 0x407150
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407150
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 0x407309
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407170
mov edx, dword [str.Standard_x64_Edition]
mov dword [eax], edx
mov ecx, dword [0x4957fc]
mov dword [eax + 4], ecx
mov edx, dword [0x495800]
mov dword [eax + 8], edx
mov ecx, dword [0x495804]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495808]
mov dword [eax + 0x10], edx
mov cl, byte [0x49580c]
mov byte [eax + 0x14], cl
jmp 0x407309
mov eax, dword [esp + 0xdc]
test eax, 0x4000
je 0x407205
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4071c3
mov edx, dword [str.Compute_Cluster_Edition]
mov dword [eax], edx
mov ecx, dword [0x495814]
mov dword [eax + 4], ecx
mov edx, dword [0x495818]
mov dword [eax + 8], edx
mov ecx, dword [0x49581c]
mov dword [eax + 0xc], ecx
mov edx, dword [0x495820]
mov dword [eax + 0x10], edx
mov ecx, dword [0x495824]
mov dword [eax + 0x14], ecx
jmp 0x407309
test al, al
jns 0x407254
mov eax, ebx
dec eax
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407210
mov edx, dword [str.Datacenter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955f4]
mov dword [eax + 4], ecx
mov edx, dword [0x4955f8]
mov dword [eax + 8], edx
mov ecx, dword [0x4955fc]
mov dword [eax + 0xc], ecx
mov dx, word [0x495600]
mov word [eax + 0x10], dx
mov cl, byte [0x495602]
mov byte [eax + 0x12], cl
jmp 0x407309
test al, 2
je 0x4072a1
mov eax, ebx
dec eax
jmp 0x407260
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407260
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x4955a4]
mov dword [eax + 4], ecx
mov edx, dword [0x4955a8]
mov dword [eax + 8], edx
mov ecx, dword [0x4955ac]
mov dword [eax + 0xc], ecx
mov dx, word [0x4955b0]
mov word [eax + 0x10], dx
mov cl, byte [0x4955b2]
mov byte [eax + 0x12], cl
jmp 0x407309
test eax, 0x400
mov eax, ebx
je 0x4072d4
dec eax
jmp 0x4072b0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072b0
mov edx, dword [str.Web_Edition]
mov dword [eax], edx
mov ecx, dword [0x49582c]
mov dword [eax + 4], ecx
mov edx, dword [0x495830]
mov dword [eax + 8], edx
jmp 0x407309
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072d5
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4956c8]
mov dword [eax + 4], edx
mov ecx, dword [0x4956cc]
mov dword [eax + 8], ecx
mov edx, dword [0x4956d0]
mov dword [eax + 0xc], edx
mov cl, byte [0x4956d4]
mov byte [eax + 0x10], cl
cmp dword [esp + 0x48], 5
jne 0x4074a4
mov eax, dword [esp + 0x4c]
cmp eax, 1
jne 0x40738c
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407320
mov edx, dword [str.Windows_XP]
mov dword [eax], edx
mov ecx, dword [0x495838]
mov dword [eax + 4], ecx
mov edx, dword [0x49583c]
mov dword [eax + 8], edx
mov eax, ebx
dec eax
test dword [esp + 0xdc], 0x200
je 0x407382
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407352
mov ecx, dword [str.Home_Edition]
mov dword [eax], ecx
mov edx, dword [0x495844]
mov dword [eax + 4], edx
mov ecx, dword [0x495848]
mov dword [eax + 8], ecx
mov dl, byte [0x49584c]
mov byte [eax + 0xc], dl
jmp 0x4074a4
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407382
jmp 0x4073d9
test eax, eax
jne 0x4074a4
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407397
cmp byte [esp + 0xde], 1
mov ecx, dword [str.Windows_2000]
mov dword [eax], ecx
mov edx, dword [0x495854]
mov dword [eax + 4], edx
mov ecx, dword [0x495858]
mov dword [eax + 8], ecx
mov dx, word [0x49585c]
mov word [eax + 0xc], dx
jne 0x407401
mov eax, ebx
dec eax
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4073d1
mov ecx, dword [str.Professional]
mov dword [eax], ecx
mov edx, dword [0x495568]
mov dword [eax + 4], edx
mov ecx, dword [0x49556c]
mov dword [eax + 8], ecx
mov dl, byte [0x495570]
mov byte [eax + 0xc], dl
jmp 0x4074a4
mov al, byte [esp + 0xdc]
test al, al
jns 0x407448
mov eax, ebx
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407410
mov ecx, dword [str.Datacenter_Server]
mov dword [eax], ecx
mov edx, dword [0x495864]
mov dword [eax + 4], edx
mov ecx, dword [0x495868]
mov dword [eax + 8], ecx
mov edx, dword [0x49586c]
mov dword [eax + 0xc], edx
mov cx, word [0x495870]
mov word [eax + 0x10], cx
jmp 0x4074a4
test al, 2
mov eax, ebx
je 0x40747d
dec eax
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407450
mov edx, dword [str.Advanced_Server]
mov dword [eax], edx
mov ecx, dword [0x495878]
mov dword [eax + 4], ecx
mov edx, dword [0x49587c]
mov dword [eax + 8], edx
mov ecx, dword [0x495880]
mov dword [eax + 0xc], ecx
jmp 0x4074a4
dec eax
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407480
mov edx, dword [str.Server]
mov dword [eax], edx
mov cx, word [0x495888]
mov word [eax + 4], cx
mov dl, byte [0x49588a]
mov byte [eax + 6], dl
lea eax, [esp + 0x58]
lea edx, [eax + 1]
jmp 0x4074b0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4074b0
sub eax, edx
je 0x4074fb
mov edi, ebx
dec edi
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4074c0
mov ax, word [0x49588c]
mov word [edi], ax
lea eax, [esp + 0x58]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4074d7
mov edi, ebx
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4074e5
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.00437268
lea eax, [esp + 0xec]
add esp, 0xc
mov ecx, eax
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x407520
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 0x407530
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 0x4075c9
mov eax, dword [esp + 0x1c]
cmp ax, 9
jne 0x40759f
dec ebx
mov eax, ebx
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407560
mov ecx, dword [str.__64_bit]
mov dword [eax], ecx
mov edx, dword [0x4958a0]
mov dword [eax + 4], edx
mov cl, byte [0x4958a4]
pop edi
pop ebp
mov byte [eax + 8], cl
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.00436738
add esp, 0x124
ret
test ax, ax
jne 0x4075c9
dec ebx
mov eax, ebx
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4075a7
mov edx, dword [str.__32_bit]
mov dword [eax], edx
mov ecx, dword [0x4958ac]
mov dword [eax + 4], ecx
mov dl, byte [0x4958b0]
mov byte [eax + 8], dl
pop edi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x120]
xor ecx, esp
call fcn.00436738
add esp, 0x124
ret
mov ecx, dword [esp + 0x12c]
pop edi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00436738
add esp, 0x124
ret