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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2e8
mov eax, dword [0x4724e4]
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.004463a0
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 0x4068d2
mov eax, 1
jmp 0x407bfe
push 0x4649b0
push 0x4649c4
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 0x4068fb
lea eax, [ebp - 0x34]
push eax
call dword [ebp - 0x10]
jmp 0x406905
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0xc8], 2
jne 0x407bfc
cmp dword [ebp - 0xd4], 4
jbe 0x407bfc
push 0xb
push str.Microsoft
mov edx, dword [ebp + 8]
push edx
call fcn.00443b00
add esp, 0xc
cmp dword [ebp - 0xd4], 6
jne 0x4071bb
cmp dword [ebp - 0xd0], 0
jne 0x406a1b
movzx eax, byte [ebp - 0x3e]
cmp eax, 1
jne 0x4069b5
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 0x406961
mov edi, dword [ebp - 0x130]
mov ecx, dword [str.Windows_Vista]
mov dword [edi], ecx
mov edx, dword [0x4649e4]
mov dword [edi + 4], edx
mov eax, dword [0x4649e8]
mov dword [edi + 8], eax
mov cx, word [0x4649ec]
mov word [edi + 0xc], cx
mov dl, byte [0x4649ee]
mov byte [edi + 0xe], dl
jmp 0x406a19
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 0x4069c1
mov edi, dword [ebp - 0x138]
mov eax, dword [str.Windows_Server_2008]
mov dword [edi], eax
mov ecx, dword [0x4649f4]
mov dword [edi + 4], ecx
mov edx, dword [0x4649f8]
mov dword [edi + 8], edx
mov eax, dword [0x4649fc]
mov dword [edi + 0xc], eax
mov ecx, dword [0x464a00]
mov dword [edi + 0x10], ecx
mov dl, byte [0x464a04]
mov byte [edi + 0x14], dl
jmp 0x406a78
cmp dword [ebp - 0xd0], 1
jne 0x406a78
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 0x406a30
mov edi, dword [ebp - 0x140]
mov eax, dword [str.Windows_7]
mov dword [edi], eax
mov ecx, dword [0x464a0c]
mov dword [edi + 4], ecx
mov dx, word [0x464a10]
mov word [edi + 8], dx
mov al, byte [0x464a12]
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 0x406aa7
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.0x406ad2.4
mov ecx, dword [ebp - 0x148]
jmp dword [ecx*4 + 0x407c10]
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 0x406ae5
mov edi, dword [ebp - 0x14c]
mov edx, dword [str.Ultimate_Edition]
mov dword [edi], edx
mov eax, dword [0x464a38]
mov dword [edi + 4], eax
mov ecx, dword [0x464a3c]
mov dword [edi + 8], ecx
mov edx, dword [0x464a40]
mov dword [edi + 0xc], edx
mov al, byte [0x464a44]
mov byte [edi + 0x10], al
jmp 0x407114
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 0x406b45
mov edi, dword [ebp - 0x154]
mov ecx, dword [str.Home_Premium_Edition]
mov dword [edi], ecx
mov edx, dword [0x464a4c]
mov dword [edi + 4], edx
mov eax, dword [0x464a50]
mov dword [edi + 8], eax
mov ecx, dword [0x464a54]
mov dword [edi + 0xc], ecx
mov edx, dword [0x464a58]
mov dword [edi + 0x10], edx
mov al, byte [0x464a5c]
mov byte [edi + 0x14], al
jmp 0x407114
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 0x406bae
mov edi, dword [ebp - 0x15c]
mov ecx, dword [str.Home_Basic_Edition]
mov dword [edi], ecx
mov edx, dword [0x464a64]
mov dword [edi + 4], edx
mov eax, dword [0x464a68]
mov dword [edi + 8], eax
mov ecx, dword [0x464a6c]
mov dword [edi + 0xc], ecx
mov dx, word [0x464a70]
mov word [edi + 0x10], dx
mov al, byte [0x464a72]
mov byte [edi + 0x12], al
jmp 0x407114
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 0x406c19
mov edi, dword [ebp - 0x164]
mov ecx, dword [0x464a74]
mov dword [edi], ecx
mov edx, dword [0x464a78]
mov dword [edi + 4], edx
mov eax, dword [0x464a7c]
mov dword [edi + 8], eax
mov ecx, dword [0x464a80]
mov dword [edi + 0xc], ecx
mov dx, word [0x464a84]
mov word [edi + 0x10], dx
mov al, byte [0x464a86]
mov byte [edi + 0x12], al
jmp 0x407114
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 0x406c84
mov edi, dword [ebp - 0x16c]
mov ecx, dword [str.Business_Edition]
mov dword [edi], ecx
mov edx, dword [0x464a8c]
mov dword [edi + 4], edx
mov eax, dword [0x464a90]
mov dword [edi + 8], eax
mov ecx, dword [0x464a94]
mov dword [edi + 0xc], ecx
mov dl, byte [0x464a98]
mov byte [edi + 0x10], dl
jmp 0x407114
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 0x406ce5
mov edi, dword [ebp - 0x174]
mov eax, dword [str.Starter_Edition]
mov dword [edi], eax
mov ecx, dword [0x464aa0]
mov dword [edi + 4], ecx
mov edx, dword [0x464aa4]
mov dword [edi + 8], edx
mov eax, dword [0x464aa8]
mov dword [edi + 0xc], eax
jmp 0x407114
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 0x406d3c
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 0x407114
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 0x406d81
mov edi, dword [ebp - 0x184]
mov ecx, dword [0x464ac4]
mov dword [edi], ecx
mov edx, dword [0x464ac8]
mov dword [edi + 4], edx
mov eax, dword [0x464acc]
mov dword [edi + 8], eax
mov ecx, dword [0x464ad0]
mov dword [edi + 0xc], ecx
mov dx, word [0x464ad4]
mov word [edi + 0x10], dx
mov al, byte [0x464ad6]
mov byte [edi + 0x12], al
jmp 0x407114
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 0x406dec
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 0x407114
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 0x406e31
mov edi, dword [ebp - 0x194]
mov ecx, dword [0x464b00]
mov dword [edi], ecx
mov edx, dword [0x464b04]
mov dword [edi + 4], edx
mov eax, dword [0x464b08]
mov dword [edi + 8], eax
mov ecx, dword [0x464b0c]
mov dword [edi + 0xc], ecx
mov dx, word [0x464b10]
mov word [edi + 0x10], dx
mov al, byte [0x464b12]
mov byte [edi + 0x12], al
jmp 0x407114
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 0x406e9c
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 0x407114
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 0x406ee1
mov edi, dword [ebp - 0x1a4]
mov ecx, 0xb
mov esi, 0x464b3c
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x407114
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 0x406f24
mov edi, dword [ebp - 0x1ac]
mov ecx, dword [str.Small_Business_Server]
mov dword [edi], ecx
mov edx, dword [0x464b70]
mov dword [edi + 4], edx
mov eax, dword [0x464b74]
mov dword [edi + 8], eax
mov ecx, dword [0x464b78]
mov dword [edi + 0xc], ecx
mov edx, dword [0x464b7c]
mov dword [edi + 0x10], edx
mov ax, word [0x464b80]
mov word [edi + 0x14], ax
jmp 0x407114
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 0x406f8f
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 0x407114
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 0x406fd3
mov edi, dword [ebp - 0x1bc]
mov ecx, dword [0x464bac]
mov dword [edi], ecx
mov edx, dword [0x464bb0]
mov dword [edi + 4], edx
mov eax, dword [0x464bb4]
mov dword [edi + 8], eax
mov ecx, dword [0x464bb8]
mov dword [edi + 0xc], ecx
mov dl, byte [0x464bbc]
mov byte [edi + 0x10], dl
jmp 0x407114
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 0x407034
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 0x407114
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 0x407077
mov edi, dword [ebp - 0x1cc]
mov eax, dword [str.Web_Server_Edition]
mov dword [edi], eax
mov ecx, dword [0x464bec]
mov dword [edi + 4], ecx
mov edx, dword [0x464bf0]
mov dword [edi + 8], edx
mov eax, dword [0x464bf4]
mov dword [edi + 0xc], eax
mov cx, word [0x464bf8]
mov word [edi + 0x10], cx
mov dl, byte [0x464bfa]
mov byte [edi + 0x12], dl
jmp 0x407114
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 0x4070df
mov edi, dword [ebp - 0x1d4]
mov eax, dword [str.Unknown]
mov dword [edi], eax
mov ecx, dword [0x464c00]
mov dword [edi + 4], ecx
movzx edx, word [ebp - 0x34]
cmp edx, 9
jne 0x407169
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 0x407129
mov edi, dword [ebp - 0x1dc]
mov eax, dword [str.__64_bit]
mov dword [edi], eax
mov ecx, dword [0x464c08]
mov dword [edi + 4], ecx
mov dl, byte [0x464c0c]
mov byte [edi + 8], dl
jmp 0x4071bb
movzx eax, word [ebp - 0x34]
test eax, eax
jne 0x4071bb
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 0x40717d
mov edi, dword [ebp - 0x1e4]
mov ecx, dword [str.__32_bit]
mov dword [edi], ecx
mov edx, dword [0x464c14]
mov dword [edi + 4], edx
mov al, byte [0x464c18]
mov byte [edi + 8], al
cmp dword [ebp - 0xd4], 5
jne 0x4076fd
cmp dword [ebp - 0xd0], 2
jne 0x4076fd
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x407224
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 0x4071ed
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 0x407329
movzx ecx, word [ebp - 0x40]
cmp ecx, 0x2000
jne 0x407272
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 0x40723c
mov edi, dword [ebp - 0x1f4]
mov ecx, 7
mov esi, str.Windows_Storage_Server_2003
rep movsd dword es:[edi], dword [esi]
jmp 0x407329
movzx edx, byte [ebp - 0x3e]
cmp edx, 1
jne 0x4072c3
movzx eax, word [ebp - 0x34]
cmp eax, 9
jne 0x4072c3
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 0x407290
mov edi, dword [ebp - 0x1fc]
mov ecx, 9
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x407329
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 0x4072cf
mov edi, dword [ebp - 0x204]
mov ecx, dword [str.Windows_Server_2003_]
mov dword [edi], ecx
mov edx, dword [0x464c7c]
mov dword [edi + 4], edx
mov eax, dword [0x464c80]
mov dword [edi + 8], eax
mov ecx, dword [0x464c84]
mov dword [edi + 0xc], ecx
mov edx, dword [0x464c88]
mov dword [edi + 0x10], edx
mov ax, word [0x464c8c]
mov word [edi + 0x14], ax
movzx ecx, byte [ebp - 0x3e]
cmp ecx, 1
je 0x4076fd
movzx edx, word [ebp - 0x34]
cmp edx, 6
jne 0x4073da
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x40738e
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 0x40735a
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 0x4073d5
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x4073d5
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 0x4073a3
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 0x4076fd
movzx edx, word [ebp - 0x34]
cmp edx, 9
jne 0x4074eb
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x407437
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 0x4073fe
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 0x4074e6
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x407482
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 0x40744c
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 0x4074e6
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 0x40748e
mov edi, dword [ebp - 0x22c]
mov edx, dword [str.Standard_x64_Edition]
mov dword [edi], edx
mov eax, dword [0x464d24]
mov dword [edi + 4], eax
mov ecx, dword [0x464d28]
mov dword [edi + 8], ecx
mov edx, dword [0x464d2c]
mov dword [edi + 0xc], edx
mov eax, dword [0x464d30]
mov dword [edi + 0x10], eax
mov cl, byte [0x464d34]
mov byte [edi + 0x14], cl
jmp 0x4076fd
movzx edx, word [ebp - 0x40]
and edx, 0x4000
je 0x407560
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 0x407503
mov edi, dword [ebp - 0x234]
mov eax, dword [str.Compute_Cluster_Edition]
mov dword [edi], eax
mov ecx, dword [0x464d3c]
mov dword [edi + 4], ecx
mov edx, dword [0x464d40]
mov dword [edi + 8], edx
mov eax, dword [0x464d44]
mov dword [edi + 0xc], eax
mov ecx, dword [0x464d48]
mov dword [edi + 0x10], ecx
mov edx, dword [0x464d4c]
mov dword [edi + 0x14], edx
jmp 0x4076fd
movzx eax, word [ebp - 0x40]
and eax, 0x80
je 0x4075d6
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 0x407577
mov edi, dword [ebp - 0x23c]
mov ecx, dword [str.Datacenter_Edition]
mov dword [edi], ecx
mov edx, dword [0x464d54]
mov dword [edi + 4], edx
mov eax, dword [0x464d58]
mov dword [edi + 8], eax
mov ecx, dword [0x464d5c]
mov dword [edi + 0xc], ecx
mov dx, word [0x464d60]
mov word [edi + 0x10], dx
mov al, byte [0x464d62]
mov byte [edi + 0x12], al
jmp 0x4076fd
movzx ecx, word [ebp - 0x40]
and ecx, 2
je 0x40764a
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 0x4075eb
mov edi, dword [ebp - 0x244]
mov edx, dword [str.Enterprise_Edition]
mov dword [edi], edx
mov eax, dword [0x464d68]
mov dword [edi + 4], eax
mov ecx, dword [0x464d6c]
mov dword [edi + 8], ecx
mov edx, dword [0x464d70]
mov dword [edi + 0xc], edx
mov ax, word [0x464d74]
mov word [edi + 0x10], ax
mov cl, byte [0x464d76]
mov byte [edi + 0x12], cl
jmp 0x4076fd
movzx edx, word [ebp - 0x40]
and edx, 0x400
je 0x4076a2
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 0x407662
mov edi, dword [ebp - 0x24c]
mov eax, dword [str.Web_Edition]
mov dword [edi], eax
mov ecx, dword [0x464d7c]
mov dword [edi + 4], ecx
mov edx, dword [0x464d80]
mov dword [edi + 8], edx
jmp 0x4076fd
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 0x4076ae
mov edi, dword [ebp - 0x254]
mov eax, dword [str.Standard_Edition]
mov dword [edi], eax
mov ecx, dword [0x464d88]
mov dword [edi + 4], ecx
mov edx, dword [0x464d8c]
mov dword [edi + 8], edx
mov eax, dword [0x464d90]
mov dword [edi + 0xc], eax
mov cl, byte [0x464d94]
mov byte [edi + 0x10], cl
cmp dword [ebp - 0xd4], 5
jne 0x407814
cmp dword [ebp - 0xd0], 1
jne 0x407814
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 0x407723
mov edi, dword [ebp - 0x25c]
mov edx, dword [str.Windows_XP]
mov dword [edi], edx
mov eax, dword [0x464d9c]
mov dword [edi + 4], eax
mov ecx, dword [0x464da0]
mov dword [edi + 8], ecx
movzx edx, word [ebp - 0x40]
and edx, 0x200
je 0x4077c1
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 0x407779
mov edi, dword [ebp - 0x264]
mov eax, dword [str.Home_Edition]
mov dword [edi], eax
mov ecx, dword [0x464da8]
mov dword [edi + 4], ecx
mov edx, dword [0x464dac]
mov dword [edi + 8], edx
mov al, byte [0x464db0]
mov byte [edi + 0xc], al
jmp 0x407814
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 0x4077cd
mov edi, dword [ebp - 0x26c]
mov ecx, dword [0x464db4]
mov dword [edi], ecx
mov edx, dword [0x464db8]
mov dword [edi + 4], edx
mov eax, dword [0x464dbc]
mov dword [edi + 8], eax
mov cl, byte [0x464dc0]
mov byte [edi + 0xc], cl
cmp dword [ebp - 0xd4], 5
jne 0x4079fb
cmp dword [ebp - 0xd0], 0
jne 0x4079fb
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 0x40783a
mov edi, dword [ebp - 0x274]
mov edx, dword [str.Windows_2000]
mov dword [edi], edx
mov eax, dword [0x464dc8]
mov dword [edi + 4], eax
mov ecx, dword [0x464dcc]
mov dword [edi + 8], ecx
mov dx, word [0x464dd0]
mov word [edi + 0xc], dx
movzx eax, byte [ebp - 0x3e]
cmp eax, 1
jne 0x4078e4
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 0x407898
mov edi, dword [ebp - 0x27c]
mov ecx, dword [str.Professional]
mov dword [edi], ecx
mov edx, dword [0x464dd8]
mov dword [edi + 4], edx
mov eax, dword [0x464ddc]
mov dword [edi + 8], eax
mov cl, byte [0x464de0]
mov byte [edi + 0xc], cl
jmp 0x4079fb
movzx edx, word [ebp - 0x40]
and edx, 0x80
je 0x407952
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 0x4078fc
mov edi, dword [ebp - 0x284]
mov eax, dword [str.Datacenter_Server]
mov dword [edi], eax
mov ecx, dword [0x464de8]
mov dword [edi + 4], ecx
mov edx, dword [0x464dec]
mov dword [edi + 8], edx
mov eax, dword [0x464df0]
mov dword [edi + 0xc], eax
mov cx, word [0x464df4]
mov word [edi + 0x10], cx
jmp 0x4079fb
movzx edx, word [ebp - 0x40]
and edx, 2
je 0x4079af
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 0x407967
mov edi, dword [ebp - 0x28c]
mov eax, dword [str.Advanced_Server]
mov dword [edi], eax
mov ecx, dword [0x464dfc]
mov dword [edi + 4], ecx
mov edx, dword [0x464e00]
mov dword [edi + 8], edx
mov eax, dword [0x464e04]
mov dword [edi + 0xc], eax
jmp 0x4079fb
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 0x4079bb
mov edi, dword [ebp - 0x294]
mov ecx, dword [str.Server]
mov dword [edi], ecx
mov dx, word [0x464e0c]
mov word [edi + 4], dx
mov al, byte [0x464e0e]
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 0x407a16
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 0x407b39
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 0x407a6b
mov edi, dword [ebp - 0x2ac]
mov cx, word [0x464e10]
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 0x407ab2
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 0x407afa
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.00442e8c
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 0x407b6c
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 0x407bb4
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 0x407bfe
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 0x38]
xor ecx, ebp
call fcn.00441f6e
mov esp, ebp
pop ebp
ret