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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e8
mov eax, dword [0x4785c0]
xor eax, ebp
mov dword [ebp - 0x38], eax
push esi
push edi
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
push 0x9c
push 0
lea ecx, [ebp - 0xd8]
push ecx
call fcn.00446170
add esp, 0xc
mov dword [ebp - 0xd8], 0x9c
lea edx, [ebp - 0xd8]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4048b2
mov eax, 1
jmp 0x405bde
push str.GetNativeSystemInfo
push 0x469ae8
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4048db
lea eax, [ebp - 0x34]
push eax
call dword [ebp - 0x10]
jmp 0x4048e5
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0xc8], 2
jne 0x405bdc
cmp dword [ebp - 0xd4], 4
jbe 0x405bdc
push 0xb
push str.Microsoft
mov edx, dword [ebp + 8]
push edx
call fcn.00443080
add esp, 0xc
cmp dword [ebp - 0xd4], 6
jne 0x40519b
cmp dword [ebp - 0xd0], 0
jne 0x4049fb
movzx eax, byte [ebp - 0x3e]
cmp eax, 1
jne 0x404995
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x130], ecx
mov edx, dword [ebp - 0x130]
mov al, byte [edx + 1]
mov byte [ebp - 0x131], al
add dword [ebp - 0x130], 1
cmp byte [ebp - 0x131], 0
jne 0x404941
mov edi, dword [ebp - 0x130]
mov ecx, dword [str.Windows_Vista]
mov dword [edi], ecx
mov edx, dword [0x469b08]
mov dword [edi + 4], edx
mov eax, dword [0x469b0c]
mov dword [edi + 8], eax
mov cx, word [0x469b10]
mov word [edi + 0xc], cx
mov dl, byte [0x469b12]
mov byte [edi + 0xe], dl
jmp 0x4049f9
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x138], eax
mov ecx, dword [ebp - 0x138]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x139], dl
add dword [ebp - 0x138], 1
cmp byte [ebp - 0x139], 0
jne 0x4049a1
mov edi, dword [ebp - 0x138]
mov eax, dword [str.Windows_Server_2008]
mov dword [edi], eax
mov ecx, dword [0x469b18]
mov dword [edi + 4], ecx
mov edx, dword [0x469b1c]
mov dword [edi + 8], edx
mov eax, dword [0x469b20]
mov dword [edi + 0xc], eax
mov ecx, dword [0x469b24]
mov dword [edi + 0x10], ecx
mov dl, byte [0x469b28]
mov byte [edi + 0x14], dl
jmp 0x404a58
cmp dword [ebp - 0xd0], 1
jne 0x404a58
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x140], eax
mov ecx, dword [ebp - 0x140]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x141], dl
add dword [ebp - 0x140], 1
cmp byte [ebp - 0x141], 0
jne 0x404a10
mov edi, dword [ebp - 0x140]
mov eax, dword [str.Windows_7]
mov dword [edi], eax
mov ecx, dword [0x469b30]
mov dword [edi + 4], ecx
mov dx, word [0x469b34]
mov word [edi + 8], dx
mov al, byte [0x469b36]
mov byte [edi + 0xa], al
push str.GetProductInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x404a87
lea ecx, [ebp - 4]
push ecx
push 0
push 0
push 0
push 6
call dword [ebp - 0xc]
mov edx, dword [ebp - 4]
mov dword [ebp - 0x148], edx
mov eax, dword [ebp - 0x148]
sub eax, 1
mov dword [ebp - 0x148], eax
cmp dword [ebp - 0x148], 0x18
ja case.0x404ab2.4
mov ecx, dword [ebp - 0x148]
jmp dword [ecx*4 + 0x405bf0]
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x14c], edx
mov eax, dword [ebp - 0x14c]
mov cl, byte [eax + 1]
mov byte [ebp - 0x14d], cl
add dword [ebp - 0x14c], 1
cmp byte [ebp - 0x14d], 0
jne 0x404ac5
mov edi, dword [ebp - 0x14c]
mov edx, dword [str.Ultimate_Edition]
mov dword [edi], edx
mov eax, dword [0x469b5c]
mov dword [edi + 4], eax
mov ecx, dword [0x469b60]
mov dword [edi + 8], ecx
mov edx, dword [0x469b64]
mov dword [edi + 0xc], edx
mov al, byte [0x469b68]
mov byte [edi + 0x10], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x154], ecx
mov edx, dword [ebp - 0x154]
mov al, byte [edx + 1]
mov byte [ebp - 0x155], al
add dword [ebp - 0x154], 1
cmp byte [ebp - 0x155], 0
jne 0x404b25
mov edi, dword [ebp - 0x154]
mov ecx, dword [str.Home_Premium_Edition]
mov dword [edi], ecx
mov edx, dword [0x469b70]
mov dword [edi + 4], edx
mov eax, dword [0x469b74]
mov dword [edi + 8], eax
mov ecx, dword [0x469b78]
mov dword [edi + 0xc], ecx
mov edx, dword [0x469b7c]
mov dword [edi + 0x10], edx
mov al, byte [0x469b80]
mov byte [edi + 0x14], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x15c], ecx
mov edx, dword [ebp - 0x15c]
mov al, byte [edx + 1]
mov byte [ebp - 0x15d], al
add dword [ebp - 0x15c], 1
cmp byte [ebp - 0x15d], 0
jne 0x404b8e
mov edi, dword [ebp - 0x15c]
mov ecx, dword [str.Home_Basic_Edition]
mov dword [edi], ecx
mov edx, dword [0x469b88]
mov dword [edi + 4], edx
mov eax, dword [0x469b8c]
mov dword [edi + 8], eax
mov ecx, dword [0x469b90]
mov dword [edi + 0xc], ecx
mov dx, word [0x469b94]
mov word [edi + 0x10], dx
mov al, byte [0x469b96]
mov byte [edi + 0x12], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x164], ecx
mov edx, dword [ebp - 0x164]
mov al, byte [edx + 1]
mov byte [ebp - 0x165], al
add dword [ebp - 0x164], 1
cmp byte [ebp - 0x165], 0
jne 0x404bf9
mov edi, dword [ebp - 0x164]
mov ecx, dword [0x469b98]
mov dword [edi], ecx
mov edx, dword [0x469b9c]
mov dword [edi + 4], edx
mov eax, dword [0x469ba0]
mov dword [edi + 8], eax
mov ecx, dword [0x469ba4]
mov dword [edi + 0xc], ecx
mov dx, word [0x469ba8]
mov word [edi + 0x10], dx
mov al, byte [0x469baa]
mov byte [edi + 0x12], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x16c], ecx
mov edx, dword [ebp - 0x16c]
mov al, byte [edx + 1]
mov byte [ebp - 0x16d], al
add dword [ebp - 0x16c], 1
cmp byte [ebp - 0x16d], 0
jne 0x404c64
mov edi, dword [ebp - 0x16c]
mov ecx, dword [str.Business_Edition]
mov dword [edi], ecx
mov edx, dword [0x469bb0]
mov dword [edi + 4], edx
mov eax, dword [0x469bb4]
mov dword [edi + 8], eax
mov ecx, dword [0x469bb8]
mov dword [edi + 0xc], ecx
mov dl, byte [0x469bbc]
mov byte [edi + 0x10], dl
jmp 0x4050f4
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x174], eax
mov ecx, dword [ebp - 0x174]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x175], dl
add dword [ebp - 0x174], 1
cmp byte [ebp - 0x175], 0
jne 0x404cc5
mov edi, dword [ebp - 0x174]
mov eax, dword [str.Starter_Edition]
mov dword [edi], eax
mov ecx, dword [0x469bc4]
mov dword [edi + 4], ecx
mov edx, dword [0x469bc8]
mov dword [edi + 8], edx
mov eax, dword [0x469bcc]
mov dword [edi + 0xc], eax
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x17c], ecx
mov edx, dword [ebp - 0x17c]
mov al, byte [edx + 1]
mov byte [ebp - 0x17d], al
add dword [ebp - 0x17c], 1
cmp byte [ebp - 0x17d], 0
jne 0x404d1c
mov edi, dword [ebp - 0x17c]
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 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x184], ecx
mov edx, dword [ebp - 0x184]
mov al, byte [edx + 1]
mov byte [ebp - 0x185], al
add dword [ebp - 0x184], 1
cmp byte [ebp - 0x185], 0
jne 0x404d61
mov edi, dword [ebp - 0x184]
mov ecx, dword [0x469be8]
mov dword [edi], ecx
mov edx, dword [0x469bec]
mov dword [edi + 4], edx
mov eax, dword [0x469bf0]
mov dword [edi + 8], eax
mov ecx, dword [0x469bf4]
mov dword [edi + 0xc], ecx
mov dx, word [0x469bf8]
mov word [edi + 0x10], dx
mov al, byte [0x469bfa]
mov byte [edi + 0x12], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x18c], ecx
mov edx, dword [ebp - 0x18c]
mov al, byte [edx + 1]
mov byte [ebp - 0x18d], al
add dword [ebp - 0x18c], 1
cmp byte [ebp - 0x18d], 0
jne 0x404dcc
mov edi, dword [ebp - 0x18c]
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 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x194], ecx
mov edx, dword [ebp - 0x194]
mov al, byte [edx + 1]
mov byte [ebp - 0x195], al
add dword [ebp - 0x194], 1
cmp byte [ebp - 0x195], 0
jne 0x404e11
mov edi, dword [ebp - 0x194]
mov ecx, dword [0x469c24]
mov dword [edi], ecx
mov edx, dword [0x469c28]
mov dword [edi + 4], edx
mov eax, dword [0x469c2c]
mov dword [edi + 8], eax
mov ecx, dword [0x469c30]
mov dword [edi + 0xc], ecx
mov dx, word [0x469c34]
mov word [edi + 0x10], dx
mov al, byte [0x469c36]
mov byte [edi + 0x12], al
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x19c], ecx
mov edx, dword [ebp - 0x19c]
mov al, byte [edx + 1]
mov byte [ebp - 0x19d], al
add dword [ebp - 0x19c], 1
cmp byte [ebp - 0x19d], 0
jne 0x404e7c
mov edi, dword [ebp - 0x19c]
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 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1a4], ecx
mov edx, dword [ebp - 0x1a4]
mov al, byte [edx + 1]
mov byte [ebp - 0x1a5], al
add dword [ebp - 0x1a4], 1
cmp byte [ebp - 0x1a5], 0
jne 0x404ec1
mov edi, dword [ebp - 0x1a4]
mov ecx, 0xb
mov esi, 0x469c60
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1ac], ecx
mov edx, dword [ebp - 0x1ac]
mov al, byte [edx + 1]
mov byte [ebp - 0x1ad], al
add dword [ebp - 0x1ac], 1
cmp byte [ebp - 0x1ad], 0
jne 0x404f04
mov edi, dword [ebp - 0x1ac]
mov ecx, dword [str.Small_Business_Server]
mov dword [edi], ecx
mov edx, dword [0x469c94]
mov dword [edi + 4], edx
mov eax, dword [0x469c98]
mov dword [edi + 8], eax
mov ecx, dword [0x469c9c]
mov dword [edi + 0xc], ecx
mov edx, dword [0x469ca0]
mov dword [edi + 0x10], edx
mov ax, word [0x469ca4]
mov word [edi + 0x14], ax
jmp 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1b4], ecx
mov edx, dword [ebp - 0x1b4]
mov al, byte [edx + 1]
mov byte [ebp - 0x1b5], al
add dword [ebp - 0x1b4], 1
cmp byte [ebp - 0x1b5], 0
jne 0x404f6f
mov edi, dword [ebp - 0x1b4]
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 0x4050f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1bc], ecx
mov edx, dword [ebp - 0x1bc]
mov al, byte [edx + 1]
mov byte [ebp - 0x1bd], al
add dword [ebp - 0x1bc], 1
cmp byte [ebp - 0x1bd], 0
jne 0x404fb3
mov edi, dword [ebp - 0x1bc]
mov ecx, dword [0x469cd0]
mov dword [edi], ecx
mov edx, dword [0x469cd4]
mov dword [edi + 4], edx
mov eax, dword [0x469cd8]
mov dword [edi + 8], eax
mov ecx, dword [0x469cdc]
mov dword [edi + 0xc], ecx
mov dl, byte [0x469ce0]
mov byte [edi + 0x10], dl
jmp 0x4050f4
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x1c4], eax
mov ecx, dword [ebp - 0x1c4]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x1c5], dl
add dword [ebp - 0x1c4], 1
cmp byte [ebp - 0x1c5], 0
jne 0x405014
mov edi, dword [ebp - 0x1c4]
mov ecx, 9
mov esi, str.Standard_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4050f4
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x1cc], eax
mov ecx, dword [ebp - 0x1cc]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x1cd], dl
add dword [ebp - 0x1cc], 1
cmp byte [ebp - 0x1cd], 0
jne 0x405057
mov edi, dword [ebp - 0x1cc]
mov eax, dword [str.Web_Server_Edition]
mov dword [edi], eax
mov ecx, dword [0x469d10]
mov dword [edi + 4], ecx
mov edx, dword [0x469d14]
mov dword [edi + 8], edx
mov eax, dword [0x469d18]
mov dword [edi + 0xc], eax
mov cx, word [0x469d1c]
mov word [edi + 0x10], cx
mov dl, byte [0x469d1e]
mov byte [edi + 0x12], dl
jmp 0x4050f4
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x1d4], eax
mov ecx, dword [ebp - 0x1d4]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x1d5], dl
add dword [ebp - 0x1d4], 1
cmp byte [ebp - 0x1d5], 0
jne 0x4050bf
mov edi, dword [ebp - 0x1d4]
mov eax, dword [str.Unknown]
mov dword [edi], eax
mov ecx, dword [0x469d24]
mov dword [edi + 4], ecx
movzx edx, word [ebp - 0x34]
cmp edx, 9
jne 0x405149
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x1dc], eax
mov ecx, dword [ebp - 0x1dc]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x1dd], dl
add dword [ebp - 0x1dc], 1
cmp byte [ebp - 0x1dd], 0
jne 0x405109
mov edi, dword [ebp - 0x1dc]
mov eax, dword [str.__64_bit]
mov dword [edi], eax
mov ecx, dword [0x469d2c]
mov dword [edi + 4], ecx
mov dl, byte [0x469d30]
mov byte [edi + 8], dl
jmp 0x40519b
movzx eax, word [ebp - 0x34]
test eax, eax
jne 0x40519b
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1e4], ecx
mov edx, dword [ebp - 0x1e4]
mov al, byte [edx + 1]
mov byte [ebp - 0x1e5], al
add dword [ebp - 0x1e4], 1
cmp byte [ebp - 0x1e5], 0
jne 0x40515d
mov edi, dword [ebp - 0x1e4]
mov ecx, dword [str.__32_bit]
mov dword [edi], ecx
mov edx, dword [0x469d38]
mov dword [edi + 4], edx
mov al, byte [0x469d3c]
mov byte [edi + 8], al
cmp dword [ebp - 0xd4], 5
jne 0x4056dd
cmp dword [ebp - 0xd0], 2
jne 0x4056dd
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x405204
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1ec], ecx
mov edx, dword [ebp - 0x1ec]
mov al, byte [edx + 1]
mov byte [ebp - 0x1ed], al
add dword [ebp - 0x1ec], 1
cmp byte [ebp - 0x1ed], 0
jne 0x4051cd
mov edi, dword [ebp - 0x1ec]
mov ecx, 6
mov esi, str.Windows_Server_2003_R2_
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x405309
movzx ecx, word [ebp - 0x40]
cmp ecx, 0x2000
jne 0x405252
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x1f4], edx
mov eax, dword [ebp - 0x1f4]
mov cl, byte [eax + 1]
mov byte [ebp - 0x1f5], cl
add dword [ebp - 0x1f4], 1
cmp byte [ebp - 0x1f5], 0
jne 0x40521c
mov edi, dword [ebp - 0x1f4]
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x405309
movzx edx, byte [ebp - 0x3e]
cmp edx, 1
jne 0x4052a3
movzx eax, word [ebp - 0x34]
cmp eax, 9
jne 0x4052a3
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x1fc], ecx
mov edx, dword [ebp - 0x1fc]
mov al, byte [edx + 1]
mov byte [ebp - 0x1fd], al
add dword [ebp - 0x1fc], 1
cmp byte [ebp - 0x1fd], 0
jne 0x405270
mov edi, dword [ebp - 0x1fc]
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x405309
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x204], ecx
mov edx, dword [ebp - 0x204]
mov al, byte [edx + 1]
mov byte [ebp - 0x205], al
add dword [ebp - 0x204], 1
cmp byte [ebp - 0x205], 0
jne 0x4052af
mov edi, dword [ebp - 0x204]
mov ecx, dword [str.Windows_Server_2003_]
mov dword [edi], ecx
mov edx, dword [0x469da0]
mov dword [edi + 4], edx
mov eax, dword [0x469da4]
mov dword [edi + 8], eax
mov ecx, dword [0x469da8]
mov dword [edi + 0xc], ecx
mov edx, dword [0x469dac]
mov dword [edi + 0x10], edx
mov ax, word [0x469db0]
mov word [edi + 0x14], ax
movzx ecx, byte [ebp - 0x3e]
cmp ecx, 1
je 0x4056dd
movzx edx, word [ebp - 0x34]
cmp edx, 6
jne 0x4053ba
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x40536e
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x20c], ecx
mov edx, dword [ebp - 0x20c]
mov al, byte [edx + 1]
mov byte [ebp - 0x20d], al
add dword [ebp - 0x20c], 1
cmp byte [ebp - 0x20d], 0
jne 0x40533a
mov edi, dword [ebp - 0x20c]
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 0x4053b5
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x4053b5
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x214], edx
mov eax, dword [ebp - 0x214]
mov cl, byte [eax + 1]
mov byte [ebp - 0x215], cl
add dword [ebp - 0x214], 1
cmp byte [ebp - 0x215], 0
jne 0x405383
mov edi, dword [ebp - 0x214]
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 0x4056dd
movzx edx, word [ebp - 0x34]
cmp edx, 9
jne 0x4054cb
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x405417
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x21c]
mov al, byte [edx + 1]
mov byte [ebp - 0x21d], al
add dword [ebp - 0x21c], 1
cmp byte [ebp - 0x21d], 0
jne 0x4053de
mov edi, dword [ebp - 0x21c]
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 0x4054c6
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x405462
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x224], edx
mov eax, dword [ebp - 0x224]
mov cl, byte [eax + 1]
mov byte [ebp - 0x225], cl
add dword [ebp - 0x224], 1
cmp byte [ebp - 0x225], 0
jne 0x40542c
mov edi, dword [ebp - 0x224]
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 0x4054c6
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x22c], edx
mov eax, dword [ebp - 0x22c]
mov cl, byte [eax + 1]
mov byte [ebp - 0x22d], cl
add dword [ebp - 0x22c], 1
cmp byte [ebp - 0x22d], 0
jne 0x40546e
mov edi, dword [ebp - 0x22c]
mov edx, dword [str.Standard_x64_Edition]
mov dword [edi], edx
mov eax, dword [0x469e48]
mov dword [edi + 4], eax
mov ecx, dword [0x469e4c]
mov dword [edi + 8], ecx
mov edx, dword [0x469e50]
mov dword [edi + 0xc], edx
mov eax, dword [0x469e54]
mov dword [edi + 0x10], eax
mov cl, byte [0x469e58]
mov byte [edi + 0x14], cl
jmp 0x4056dd
movzx edx, word [ebp - 0x40]
and edx, 0x4000
je 0x405540
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x234], eax
mov ecx, dword [ebp - 0x234]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x235], dl
add dword [ebp - 0x234], 1
cmp byte [ebp - 0x235], 0
jne 0x4054e3
mov edi, dword [ebp - 0x234]
mov eax, dword [str.Compute_Cluster_Edition]
mov dword [edi], eax
mov ecx, dword [0x469e60]
mov dword [edi + 4], ecx
mov edx, dword [0x469e64]
mov dword [edi + 8], edx
mov eax, dword [0x469e68]
mov dword [edi + 0xc], eax
mov ecx, dword [0x469e6c]
mov dword [edi + 0x10], ecx
mov edx, dword [0x469e70]
mov dword [edi + 0x14], edx
jmp 0x4056dd
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x4055b6
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x23c], ecx
mov edx, dword [ebp - 0x23c]
mov al, byte [edx + 1]
mov byte [ebp - 0x23d], al
add dword [ebp - 0x23c], 1
cmp byte [ebp - 0x23d], 0
jne 0x405557
mov edi, dword [ebp - 0x23c]
mov ecx, dword [str.Datacenter_Edition]
mov dword [edi], ecx
mov edx, dword [0x469e78]
mov dword [edi + 4], edx
mov eax, dword [0x469e7c]
mov dword [edi + 8], eax
mov ecx, dword [0x469e80]
mov dword [edi + 0xc], ecx
mov dx, word [0x469e84]
mov word [edi + 0x10], dx
mov al, byte [0x469e86]
mov byte [edi + 0x12], al
jmp 0x4056dd
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x40562a
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x244], edx
mov eax, dword [ebp - 0x244]
mov cl, byte [eax + 1]
mov byte [ebp - 0x245], cl
add dword [ebp - 0x244], 1
cmp byte [ebp - 0x245], 0
jne 0x4055cb
mov edi, dword [ebp - 0x244]
mov edx, dword [str.Enterprise_Edition]
mov dword [edi], edx
mov eax, dword [0x469e8c]
mov dword [edi + 4], eax
mov ecx, dword [0x469e90]
mov dword [edi + 8], ecx
mov edx, dword [0x469e94]
mov dword [edi + 0xc], edx
mov ax, word [0x469e98]
mov word [edi + 0x10], ax
mov cl, byte [0x469e9a]
mov byte [edi + 0x12], cl
jmp 0x4056dd
movzx edx, word [ebp - 0x40]
and edx, 0x400
je 0x405682
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x24c], eax
mov ecx, dword [ebp - 0x24c]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x24d], dl
add dword [ebp - 0x24c], 1
cmp byte [ebp - 0x24d], 0
jne 0x405642
mov edi, dword [ebp - 0x24c]
mov eax, dword [str.Web_Edition]
mov dword [edi], eax
mov ecx, dword [0x469ea0]
mov dword [edi + 4], ecx
mov edx, dword [0x469ea4]
mov dword [edi + 8], edx
jmp 0x4056dd
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x254], eax
mov ecx, dword [ebp - 0x254]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x255], dl
add dword [ebp - 0x254], 1
cmp byte [ebp - 0x255], 0
jne 0x40568e
mov edi, dword [ebp - 0x254]
mov eax, dword [str.Standard_Edition]
mov dword [edi], eax
mov ecx, dword [0x469eac]
mov dword [edi + 4], ecx
mov edx, dword [0x469eb0]
mov dword [edi + 8], edx
mov eax, dword [0x469eb4]
mov dword [edi + 0xc], eax
mov cl, byte [0x469eb8]
mov byte [edi + 0x10], cl
cmp dword [ebp - 0xd4], 5
jne 0x4057f4
cmp dword [ebp - 0xd0], 1
jne 0x4057f4
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x25c], edx
mov eax, dword [ebp - 0x25c]
mov cl, byte [eax + 1]
mov byte [ebp - 0x25d], cl
add dword [ebp - 0x25c], 1
cmp byte [ebp - 0x25d], 0
jne 0x405703
mov edi, dword [ebp - 0x25c]
mov edx, dword [str.Windows_XP]
mov dword [edi], edx
mov eax, dword [0x469ec0]
mov dword [edi + 4], eax
mov ecx, dword [0x469ec4]
mov dword [edi + 8], ecx
movzx edx, word [ebp - 0x40]
and edx, 0x200
je 0x4057a1
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x264], eax
mov ecx, dword [ebp - 0x264]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x265], dl
add dword [ebp - 0x264], 1
cmp byte [ebp - 0x265], 0
jne 0x405759
mov edi, dword [ebp - 0x264]
mov eax, dword [str.Home_Edition]
mov dword [edi], eax
mov ecx, dword [0x469ecc]
mov dword [edi + 4], ecx
mov edx, dword [0x469ed0]
mov dword [edi + 8], edx
mov al, byte [0x469ed4]
mov byte [edi + 0xc], al
jmp 0x4057f4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x26c], ecx
mov edx, dword [ebp - 0x26c]
mov al, byte [edx + 1]
mov byte [ebp - 0x26d], al
add dword [ebp - 0x26c], 1
cmp byte [ebp - 0x26d], 0
jne 0x4057ad
mov edi, dword [ebp - 0x26c]
mov ecx, dword [0x469ed8]
mov dword [edi], ecx
mov edx, dword [0x469edc]
mov dword [edi + 4], edx
mov eax, dword [0x469ee0]
mov dword [edi + 8], eax
mov cl, byte [0x469ee4]
mov byte [edi + 0xc], cl
cmp dword [ebp - 0xd4], 5
jne 0x4059db
cmp dword [ebp - 0xd0], 0
jne 0x4059db
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x274], edx
mov eax, dword [ebp - 0x274]
mov cl, byte [eax + 1]
mov byte [ebp - 0x275], cl
add dword [ebp - 0x274], 1
cmp byte [ebp - 0x275], 0
jne 0x40581a
mov edi, dword [ebp - 0x274]
mov edx, dword [str.Windows_2000]
mov dword [edi], edx
mov eax, dword [0x469eec]
mov dword [edi + 4], eax
mov ecx, dword [0x469ef0]
mov dword [edi + 8], ecx
mov dx, word [0x469ef4]
mov word [edi + 0xc], dx
movzx eax, byte [ebp - 0x3e]
cmp eax, 1
jne 0x4058c4
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x27c], ecx
mov edx, dword [ebp - 0x27c]
mov al, byte [edx + 1]
mov byte [ebp - 0x27d], al
add dword [ebp - 0x27c], 1
cmp byte [ebp - 0x27d], 0
jne 0x405878
mov edi, dword [ebp - 0x27c]
mov ecx, dword [str.Professional]
mov dword [edi], ecx
mov edx, dword [0x469efc]
mov dword [edi + 4], edx
mov eax, dword [0x469f00]
mov dword [edi + 8], eax
mov cl, byte [0x469f04]
mov byte [edi + 0xc], cl
jmp 0x4059db
movzx edx, word [ebp - 0x40]
and edx, 0x80
je 0x405932
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x284], eax
mov ecx, dword [ebp - 0x284]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x285], dl
add dword [ebp - 0x284], 1
cmp byte [ebp - 0x285], 0
jne 0x4058dc
mov edi, dword [ebp - 0x284]
mov eax, dword [str.Datacenter_Server]
mov dword [edi], eax
mov ecx, dword [0x469f0c]
mov dword [edi + 4], ecx
mov edx, dword [0x469f10]
mov dword [edi + 8], edx
mov eax, dword [0x469f14]
mov dword [edi + 0xc], eax
mov cx, word [0x469f18]
mov word [edi + 0x10], cx
jmp 0x4059db
movzx edx, word [ebp - 0x40]
and edx, 2
je 0x40598f
mov eax, dword [ebp + 8]
add eax, 0xffffffff
mov dword [ebp - 0x28c], eax
mov ecx, dword [ebp - 0x28c]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x28d], dl
add dword [ebp - 0x28c], 1
cmp byte [ebp - 0x28d], 0
jne 0x405947
mov edi, dword [ebp - 0x28c]
mov eax, dword [str.Advanced_Server]
mov dword [edi], eax
mov ecx, dword [0x469f20]
mov dword [edi + 4], ecx
mov edx, dword [0x469f24]
mov dword [edi + 8], edx
mov eax, dword [0x469f28]
mov dword [edi + 0xc], eax
jmp 0x4059db
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x294], ecx
mov edx, dword [ebp - 0x294]
mov al, byte [edx + 1]
mov byte [ebp - 0x295], al
add dword [ebp - 0x294], 1
cmp byte [ebp - 0x295], 0
jne 0x40599b
mov edi, dword [ebp - 0x294]
mov ecx, dword [str.Server]
mov dword [edi], ecx
mov dx, word [0x469f30]
mov word [edi + 4], dx
mov al, byte [0x469f32]
mov byte [edi + 6], al
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0x29c], ecx
mov edx, dword [ebp - 0x29c]
add edx, 1
mov dword [ebp - 0x2a0], edx
mov eax, dword [ebp - 0x29c]
mov cl, byte [eax]
mov byte [ebp - 0x2a1], cl
add dword [ebp - 0x29c], 1
cmp byte [ebp - 0x2a1], 0
jne 0x4059f6
mov edx, dword [ebp - 0x29c]
sub edx, dword [ebp - 0x2a0]
mov dword [ebp - 0x2a8], edx
mov eax, dword [ebp - 0x2a8]
mov dword [ebp - 0x12c], eax
cmp dword [ebp - 0x12c], 0
jbe 0x405b19
mov ecx, dword [ebp + 8]
add ecx, 0xffffffff
mov dword [ebp - 0x2ac], ecx
mov edx, dword [ebp - 0x2ac]
mov al, byte [edx + 1]
mov byte [ebp - 0x2ad], al
add dword [ebp - 0x2ac], 1
cmp byte [ebp - 0x2ad], 0
jne 0x405a4b
mov edi, dword [ebp - 0x2ac]
mov cx, word [0x469f34]
mov word [edi], cx
lea edx, [ebp - 0xc4]
mov dword [ebp - 0x2b4], edx
mov eax, dword [ebp - 0x2b4]
mov dword [ebp - 0x2b8], eax
mov ecx, dword [ebp - 0x2b4]
mov dl, byte [ecx]
mov byte [ebp - 0x2b9], dl
add dword [ebp - 0x2b4], 1
cmp byte [ebp - 0x2b9], 0
jne 0x405a92
mov eax, dword [ebp - 0x2b4]
sub eax, dword [ebp - 0x2b8]
mov ecx, dword [ebp - 0x2b8]
mov dword [ebp - 0x2c0], ecx
mov dword [ebp - 0x2c4], eax
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x2c8], edx
mov eax, dword [ebp - 0x2c8]
mov cl, byte [eax + 1]
mov byte [ebp - 0x2c9], cl
add dword [ebp - 0x2c8], 1
cmp byte [ebp - 0x2c9], 0
jne 0x405ada
mov edi, dword [ebp - 0x2c8]
mov esi, dword [ebp - 0x2c0]
mov edx, dword [ebp - 0x2c4]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0xcc]
push eax
push str.__build__d_
lea ecx, [ebp - 0x128]
push ecx
call fcn.0044294c
add esp, 0xc
lea edx, [ebp - 0x128]
mov dword [ebp - 0x2d0], edx
mov eax, dword [ebp - 0x2d0]
mov dword [ebp - 0x2d4], eax
mov ecx, dword [ebp - 0x2d0]
mov dl, byte [ecx]
mov byte [ebp - 0x2d5], dl
add dword [ebp - 0x2d0], 1
cmp byte [ebp - 0x2d5], 0
jne 0x405b4c
mov eax, dword [ebp - 0x2d0]
sub eax, dword [ebp - 0x2d4]
mov ecx, dword [ebp - 0x2d4]
mov dword [ebp - 0x2dc], ecx
mov dword [ebp - 0x2e0], eax
mov edx, dword [ebp + 8]
add edx, 0xffffffff
mov dword [ebp - 0x2e4], edx
mov eax, dword [ebp - 0x2e4]
mov cl, byte [eax + 1]
mov byte [ebp - 0x2e5], cl
add dword [ebp - 0x2e4], 1
cmp byte [ebp - 0x2e5], 0
jne 0x405b94
mov edi, dword [ebp - 0x2e4]
mov esi, dword [ebp - 0x2dc]
mov edx, dword [ebp - 0x2e0]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, 1
jmp 0x405bde
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 0x38]
xor ecx, ebp
call fcn.00441de6
mov esp, ebp
pop ebp
ret