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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
mov eax, dword [0x4c6018]
xor eax, ebp
mov dword [ebp - 4], eax
xor eax, eax
push ebx
push 0x9c
push eax
mov dword [ebp - 0x118], eax
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x108], eax
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x100], eax
mov dword [ebp - 0xfc], eax
mov dword [ebp - 0xf8], eax
lea eax, [ebp - 0xf0]
push eax
mov ebx, ecx
call sub.MSVCR100.dll_memset
add esp, 0xc
lea ecx, [ebp - 0xf0]
push ecx
mov dword [ebp - 0xf0], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x406c52
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push edi
push str.GetNativeSystemInfo
push str.kernel32.dll
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
test eax, eax
je 0x406c7e
lea edx, [ebp - 0x118]
push edx
call eax
jmp 0x406c8b
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0xe0], 2
jne 0x4078ee
cmp dword [ebp - 0xec], 4
jbe 0x4078ee
push 0xb
push str.Microsoft
push ebx
call dword [sym.imp.MSVCR100.dll_strncpy]
add esp, 0xc
call fcn.00404f30
test al, al
je 0x406ce4
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406cc2
mov ecx, dword [str.Windows_10]
mov dword [eax], ecx
mov edx, dword [0x4b9f40]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9f44]
mov dword [eax + 8], ecx
cmp dword [ebp - 0xec], 6
jne 0x406e08
mov eax, dword [ebp - 0xe8]
test eax, eax
jne 0x406d85
cmp byte [ebp - 0x56], 1
lea eax, [ebx - 1]
jne 0x406d43
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d08
mov edx, dword [str.Windows_Vista]
mov dword [eax], edx
mov ecx, dword [0x4b9f4c]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9f50]
mov dword [eax + 8], edx
mov cx, word [0x4b9f54]
mov word [eax + 0xc], cx
mov dl, byte [0x4b9f56]
mov byte [eax + 0xe], dl
jmp 0x406e0e
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d43
mov ecx, dword [str.Windows_Server_2008]
mov dword [eax], ecx
mov edx, dword [0x4b9f5c]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9f60]
mov dword [eax + 8], ecx
mov edx, dword [0x4b9f64]
mov dword [eax + 0xc], edx
mov ecx, dword [0x4b9f68]
mov dword [eax + 0x10], ecx
mov dl, byte [0x4b9f6c]
mov byte [eax + 0x14], dl
jmp 0x406e0e
cmp eax, 1
jne 0x406dbf
lea eax, [ebx - 1]
lea ecx, [ecx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406d90
mov ecx, dword [str.Windows_7]
mov dword [eax], ecx
mov edx, dword [0x4b9f74]
mov dword [eax + 4], edx
mov cx, word [0x4b9f78]
mov word [eax + 8], cx
mov dl, byte [0x4b9f7a]
mov byte [eax + 0xa], dl
jmp 0x406e0e
cmp eax, 2
jne 0x406e5a
call fcn.00404f30
test al, al
jne 0x406e01
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406dd4
mov ecx, dword [str.Windows_8]
mov dword [eax], ecx
mov edx, dword [0x4b9f80]
mov dword [eax + 4], edx
mov cx, word [0x4b9f84]
mov word [eax + 8], cx
mov dl, byte [0x4b9f86]
mov byte [eax + 0xa], dl
cmp dword [ebp - 0xec], 6
jb 0x407372
push str.GetProductInfo
push str.kernel32.dll
call esi
push eax
call edi
test eax, eax
je 0x406e3c
mov edx, dword [ebp - 0xe8]
lea ecx, [ebp - 0xf4]
push ecx
mov ecx, dword [ebp - 0xec]
push 0
push 0
push edx
push ecx
call eax
mov eax, dword [ebp - 0xf4]
dec eax
cmp eax, 0x78
ja case.0x406e53.5
movzx edx, byte [eax + 0x40795c]
jmp dword [edx*4 + 0x407904]
cmp eax, 3
jne 0x406e0e
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e62
mov ecx, dword [str.Windows_8.1]
mov dword [eax], ecx
mov edx, dword [0x4b9f8c]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9f90]
mov dword [eax + 8], ecx
mov dl, byte [0x4b9f94]
mov byte [eax + 0xc], dl
jmp 0x406e0e
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406e95
mov ecx, dword [str.Ultimate_Edition]
mov dword [eax], ecx
mov edx, dword [0x4b9fac]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9fb0]
mov dword [eax + 8], ecx
mov edx, dword [0x4b9fb4]
mov dword [eax + 0xc], edx
mov cl, byte [0x4b9fb8]
mov byte [eax + 0x10], cl
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406ed1
mov edx, dword [str.Professional]
mov dword [eax], edx
mov ecx, dword [0x4b9fc0]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9fc4]
mov dword [eax + 8], edx
mov cl, byte [0x4b9fc8]
mov byte [eax + 0xc], cl
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f04
mov edx, dword [str.Home_Edition]
mov dword [eax], edx
mov ecx, dword [0x4b9fd0]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9fd4]
mov dword [eax + 8], edx
mov cl, byte [0x4b9fd8]
mov byte [eax + 0xc], cl
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f37
mov edx, dword [str.Education_Edition]
mov dword [eax], edx
mov ecx, dword [0x4b9fe0]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9fe4]
mov dword [eax + 8], edx
mov ecx, dword [0x4b9fe8]
mov dword [eax + 0xc], ecx
mov dx, word [0x4b9fec]
mov word [eax + 0x10], dx
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406f75
mov ecx, dword [str.Enterprise_Edition]
mov dword [eax], ecx
mov edx, dword [0x4b9ff4]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9ff8]
mov dword [eax + 8], ecx
mov edx, dword [0x4b9ffc]
mov dword [eax + 0xc], edx
mov cx, word [0x4ba000]
mov word [eax + 0x10], cx
mov dl, byte [0x4ba002]
mov byte [eax + 0x12], dl
jmp 0x40730d
lea eax, [ebx - 1]
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x406fc0
mov ecx, dword [str.Home_Premium_Edition]
mov dword [eax], ecx
mov edx, dword [0x4ba008]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba00c]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba010]
mov dword [eax + 0xc], edx
mov ecx, dword [0x4ba014]
mov dword [eax + 0x10], ecx
mov dl, byte [0x4ba018]
mov byte [eax + 0x14], dl
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407005
mov ecx, dword [str.Home_Basic_Edition]
mov dword [eax], ecx
mov edx, dword [0x4ba020]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba024]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba028]
mov dword [eax + 0xc], edx
mov cx, word [0x4ba02c]
mov word [eax + 0x10], cx
mov dl, byte [0x4ba02e]
mov byte [eax + 0x12], dl
jmp 0x40730d
lea eax, [ebx - 1]
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407050
jmp 0x406f7d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407060
mov ecx, dword [str.Business_Edition]
mov dword [eax], ecx
mov edx, dword [0x4ba034]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba038]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba03c]
mov dword [eax + 0xc], edx
mov cl, byte [0x4ba040]
mov byte [eax + 0x10], cl
jmp 0x40730d
lea eax, [ebx - 1]
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4070a0
mov edx, dword [str.Starter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba048]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba04c]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba050]
mov dword [eax + 0xc], ecx
jmp 0x40730d
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4070d3
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 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4070f2
mov edx, dword [str.Datacenter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba070]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba074]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba078]
mov dword [eax + 0xc], ecx
mov dx, word [0x4ba07c]
mov word [eax + 0x10], dx
mov cl, byte [0x4ba07e]
mov byte [eax + 0x12], cl
jmp 0x40730d
lea edi, [ebx - 1]
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407140
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 0x40730d
lea eax, [ebx - 1]
nop
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407160
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x4b9ff4]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9ff8]
mov dword [eax + 8], edx
mov ecx, dword [0x4b9ffc]
mov dword [eax + 0xc], ecx
mov dx, word [0x4ba000]
mov word [eax + 0x10], dx
mov cl, byte [0x4ba002]
mov byte [eax + 0x12], cl
jmp 0x40730d
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4071a7
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 0x40730d
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4071c6
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 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4071e3
mov edx, dword [str.Small_Business_Server]
mov dword [eax], edx
mov ecx, dword [0x4ba104]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba108]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba10c]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4ba110]
mov dword [eax + 0x10], edx
mov cx, word [0x4ba114]
mov word [eax + 0x14], cx
jmp 0x40730d
lea edi, [ebx - 1]
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407230
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 0x40730d
lea eax, [ebx - 1]
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407250
mov edx, dword [str.Standard_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba144]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba148]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba14c]
mov dword [eax + 0xc], ecx
mov dl, byte [0x4ba150]
mov byte [eax + 0x10], dl
jmp 0x40730d
lea edi, [ebx - 1]
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407290
mov ecx, 9
mov esi, str.Standard_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x40730d
lea eax, [ebx - 1]
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072b0
mov ecx, dword [str.Web_Server_Edition]
mov dword [eax], ecx
mov edx, dword [0x4ba180]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba184]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba188]
mov dword [eax + 0xc], edx
mov cx, word [0x4ba18c]
mov word [eax + 0x10], cx
mov dl, byte [0x4ba18e]
mov byte [eax + 0x12], dl
jmp 0x40730d
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4072f4
mov ecx, dword [str.Unknown]
mov dword [eax], ecx
mov edx, dword [0x4ba194]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x118]
cmp ax, 9
jne 0x407344
lea eax, [ebx - 1]
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407320
mov ecx, dword [str.__64_bit]
mov dword [eax], ecx
mov edx, dword [0x4ba19c]
mov dword [eax + 4], edx
mov cl, byte [0x4ba1a0]
mov byte [eax + 8], cl
jmp 0x407372
test ax, ax
jne 0x407372
lea eax, [ebx - 1]
lea esp, [esp]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407350
mov edx, dword [str.__32_bit]
mov dword [eax], edx
mov ecx, dword [0x4ba1a8]
mov dword [eax + 4], ecx
mov dl, byte [0x4ba1ac]
mov byte [eax + 8], dl
cmp dword [ebp - 0xec], 5
jne 0x407834
mov eax, dword [ebp - 0xe8]
cmp eax, 2
jne 0x4076ab
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov edx, dword [ebp - 0x118]
test eax, eax
je 0x4073bd
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4073a3
mov ecx, 6
mov esi, str.Windows_Server_2003_R2_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x407453
mov eax, 0x2000
cmp word [ebp - 0x58], ax
jne 0x4073e9
lea edi, [ebx - 1]
jmp 0x4073d0
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4073d0
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x407453
cmp byte [ebp - 0x56], 1
jne 0x407411
cmp dx, 9
jne 0x407411
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4073f8
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x407698
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407414
mov ecx, dword [str.Windows_Server_2003_]
mov dword [eax], ecx
mov ecx, dword [0x4ba210]
mov dword [eax + 4], ecx
mov ecx, dword [0x4ba214]
mov dword [eax + 8], ecx
mov ecx, dword [0x4ba218]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x4ba21c]
mov dword [eax + 0x10], ecx
mov cx, word [0x4ba220]
mov word [eax + 0x14], cx
cmp byte [ebp - 0x56], 1
je 0x407698
cmp dx, 6
jne 0x4074af
mov al, byte [ebp - 0x58]
test al, al
jns 0x40748a
lea edi, [ebx - 1]
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407470
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 0x407698
test al, 2
je 0x407698
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407495
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 0x407698
cmp dx, 9
jne 0x407547
mov al, byte [ebp - 0x58]
test al, al
jns 0x4074df
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4074c3
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 0x407698
test al, 2
je 0x407502
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4074e6
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 0x407698
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407505
mov edx, dword [str.Standard_x64_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba288]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba28c]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba290]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4ba294]
mov dword [eax + 0x10], edx
mov cl, byte [0x4ba298]
mov byte [eax + 0x14], cl
jmp 0x407698
mov eax, dword [ebp - 0x58]
test eax, 0x4000
je 0x407596
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407554
mov edx, dword [str.Compute_Cluster_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba2a0]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba2a4]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba2a8]
mov dword [eax + 0xc], ecx
mov edx, dword [0x4ba2ac]
mov dword [eax + 0x10], edx
mov ecx, dword [0x4ba2b0]
mov dword [eax + 0x14], ecx
jmp 0x407698
test al, al
jns 0x4075e4
lea eax, [ebx - 1]
lea ecx, [ecx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4075a0
mov edx, dword [str.Datacenter_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba070]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba074]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba078]
mov dword [eax + 0xc], ecx
mov dx, word [0x4ba07c]
mov word [eax + 0x10], dx
mov cl, byte [0x4ba07e]
mov byte [eax + 0x12], cl
jmp 0x407698
test al, 2
je 0x407634
lea eax, [ebx - 1]
jmp 0x4075f0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4075f0
mov edx, dword [str.Enterprise_Edition]
mov dword [eax], edx
mov ecx, dword [0x4b9ff4]
mov dword [eax + 4], ecx
mov edx, dword [0x4b9ff8]
mov dword [eax + 8], edx
mov ecx, dword [0x4b9ffc]
mov dword [eax + 0xc], ecx
mov dx, word [0x4ba000]
mov word [eax + 0x10], dx
mov cl, byte [0x4ba002]
mov byte [eax + 0x12], cl
jmp 0x407698
test eax, 0x400
lea eax, [ebx - 1]
je 0x407664
mov edi, edi
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407640
mov edx, dword [str.Web_Edition]
mov dword [eax], edx
mov ecx, dword [0x4ba2b8]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba2bc]
mov dword [eax + 8], edx
jmp 0x407698
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407664
mov ecx, dword [str.Standard_Edition]
mov dword [eax], ecx
mov edx, dword [0x4ba144]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba148]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba14c]
mov dword [eax + 0xc], edx
mov cl, byte [0x4ba150]
mov byte [eax + 0x10], cl
cmp dword [ebp - 0xec], 5
jne 0x407834
mov eax, dword [ebp - 0xe8]
cmp eax, 1
jne 0x40771f
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4076b7
test dword [ebp - 0x58], 0x200
mov edx, dword [str.Windows_XP]
mov dword [eax], edx
mov ecx, dword [0x4ba2c4]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba2c8]
mov dword [eax + 8], edx
lea eax, [ebx - 1]
je 0x407715
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4076e5
mov ecx, dword [str.Home_Edition]
mov dword [eax], ecx
mov edx, dword [0x4b9fd0]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9fd4]
mov dword [eax + 8], ecx
mov dl, byte [0x4b9fd8]
mov byte [eax + 0xc], dl
jmp 0x407834
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407715
jmp 0x40776e
test eax, eax
jne 0x407834
lea eax, [ebx - 1]
lea ebx, [ebx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407730
cmp byte [ebp - 0x56], 1
mov ecx, dword [str.Windows_2000]
mov dword [eax], ecx
mov edx, dword [0x4ba2d0]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba2d4]
mov dword [eax + 8], ecx
mov dx, word [0x4ba2d8]
mov word [eax + 0xc], dx
jne 0x407796
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407766
mov ecx, dword [str.Professional]
mov dword [eax], ecx
mov edx, dword [0x4b9fc0]
mov dword [eax + 4], edx
mov ecx, dword [0x4b9fc4]
mov dword [eax + 8], ecx
mov dl, byte [0x4b9fc8]
mov byte [eax + 0xc], dl
jmp 0x407834
mov al, byte [ebp - 0x58]
test al, al
jns 0x4077db
lea eax, [ebx - 1]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4077a0
mov ecx, dword [str.Datacenter_Server]
mov dword [eax], ecx
mov edx, dword [0x4ba2e0]
mov dword [eax + 4], edx
mov ecx, dword [0x4ba2e4]
mov dword [eax + 8], ecx
mov edx, dword [0x4ba2e8]
mov dword [eax + 0xc], edx
mov cx, word [0x4ba2ec]
mov word [eax + 0x10], cx
jmp 0x407834
test al, 2
lea eax, [ebx - 1]
je 0x407810
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4077e2
mov edx, dword [str.Advanced_Server]
mov dword [eax], edx
mov ecx, dword [0x4ba2f4]
mov dword [eax + 4], ecx
mov edx, dword [0x4ba2f8]
mov dword [eax + 8], edx
mov ecx, dword [0x4ba2fc]
mov dword [eax + 0xc], ecx
jmp 0x407834
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x407810
mov edx, dword [str.Server]
mov dword [eax], edx
mov cx, word [0x4ba304]
mov word [eax + 4], cx
mov dl, byte [0x4ba306]
mov byte [eax + 6], dl
lea eax, [ebp - 0xdc]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407840
sub eax, edx
je 0x407896
lea edi, [ebx - 1]
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x407850
mov ax, word [0x491280]
mov word [edi], ax
lea eax, [ebp - 0xdc]
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x407870
sub eax, ecx
mov esi, ecx
lea edi, [ebx - 1]
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x407880
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 [ebp - 0xe4]
push ecx
lea edx, [ebp - 0x54]
push str.__build__d_
push edx
call dword [sym.imp.MSVCR100.dll_sprintf]
lea eax, [ebp - 0x54]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4078b4
sub eax, ecx
mov esi, ecx
lea edi, [ebx - 1]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4078c2
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]
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.00449013
mov esp, ebp
pop ebp
ret