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

Disassembly:
sub esp, 0x404
mov eax, dword [0x4f87d8]
xor eax, esp
mov dword [esp + 0x3fc], eax
push ebx
xor eax, eax
push ebp
push esi
push edi
push 0x11c
push 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
mov dword [esp + 0x40], eax
lea eax, [esp + 0x60]
mov edi, ecx
push eax
mov dword [esp + 0x1c], edi
call fcn.004b1550
add esp, 0xc
lea ecx, [esp + 0x58]
push ecx
mov dword [esp + 0x5c], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push str.GetNativeSystemInfo
push str.kernel32.dll
call ebp
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x41c1a0
lea edx, [esp + 0x18]
push edx
call eax
jmp 0x41c1ab
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
push 0x1ea
lea ecx, [esp + 0x17e]
push 0
push ecx
mov word [esp + 0x184], 0
call fcn.004b1550
mov eax, dword [esp + 0x74]
add esp, 0xc
cmp eax, 1
je 0x41c1e8
cmp eax, 2
jne 0x41c1e1
cmp dword [esp + 0x5c], 4
ja 0x41c1e8
xor al, al
jmp 0x41cfdf
push 0xf6
lea edx, [esp + 0x17c]
push str.Microsoft
push edx
call fcn.004ab3f8
add esp, 0xc
cmp dword [esp + 0x68], 1
jne 0x41c333
mov eax, dword [esp + 0x60]
cmp eax, 0x5a
mov byte [edi + 0x12c], 1
jne 0x41c270
lea eax, [esp + 0x178]
add eax, 0xfffffffe
jmp 0x41c230
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c230
mov ecx, dword [str.Windows_Me]
mov edx, dword [0x4d9448]
mov dword [eax], ecx
mov ecx, dword [0x4d944c]
mov dword [eax + 4], edx
mov edx, dword [0x4d9450]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d9454]
mov dword [eax + 0xc], edx
mov edx, dword [0x4d9458]
jmp 0x41c2fb
cmp eax, 0xa
lea eax, [esp + 0x178]
jne 0x41c2bd
add eax, 0xfffffffe
nop
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c280
mov ecx, dword [str.Windows_98]
mov edx, dword [0x4d9460]
mov dword [eax], ecx
mov ecx, dword [0x4d9464]
mov dword [eax + 4], edx
mov edx, dword [0x4d9468]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d946c]
mov dword [eax + 0xc], edx
mov edx, dword [0x4d9470]
jmp 0x41c2fb
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c2c0
mov ecx, dword [str.Windows_95]
mov edx, dword [0x4d9478]
mov dword [eax], ecx
mov ecx, dword [0x4d947c]
mov dword [eax + 4], edx
mov edx, dword [0x4d9480]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d9484]
mov dword [eax + 0xc], edx
mov edx, dword [0x4d9488]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
lea eax, [esp + 0x178]
lea edx, [eax + 2]
jmp 0x41c310
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41c310
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x17c]
push eax
lea esi, [edi + 0x110]
jmp 0x41cfd8
mov eax, dword [esp + 0x5c]
cmp eax, 6
mov esi, 8
jb 0x41c9fe
mov bl, 0x40
jne 0x41c4ee
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x41c3af
mov byte [edi + 0x12c], 0x10
lea edi, [esp + 0x178]
add edi, 0xfffffffe
cmp byte [esp + 0x172], 1
jne 0x41c390
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c370
mov ecx, 7
mov esi, str.Windows_Vista
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c565
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c390
mov ecx, 0xa
mov esi, str.Windows_Server_2008
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c565
cmp eax, 1
jne 0x41c40d
lea eax, [esp + 0x178]
mov byte [edi + 0x12c], 0x20
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c3c5
mov ecx, dword [str.Windows_7]
mov edx, dword [0x4d94dc]
mov dword [eax], ecx
mov ecx, dword [0x4d94e0]
mov dword [eax + 4], edx
mov edx, dword [0x4d94e4]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d94e8]
mov dword [eax + 0xc], edx
mov dx, word [0x4d94ec]
mov dword [eax + 0x10], ecx
mov word [eax + 0x14], dx
jmp 0x41c565
cmp eax, 2
jne 0x41c46a
lea eax, [esp + 0x178]
mov byte [edi + 0x12c], bl
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c422
mov ecx, dword [str.Windows_8]
mov edx, dword [0x4d94f4]
mov dword [eax], ecx
mov ecx, dword [0x4d94f8]
mov dword [eax + 4], edx
mov edx, dword [0x4d94fc]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d9500]
mov dword [eax + 0xc], edx
mov dx, word [0x4d9504]
mov dword [eax + 0x10], ecx
mov word [eax + 0x14], dx
jmp 0x41c565
cmp eax, 3
jne 0x41c4a0
mov eax, edi
lea edi, [esp + 0x178]
mov byte [eax + 0x12c], bl
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c481
mov ecx, 6
mov esi, str.Windows_8.1
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c565
push 6
lea ecx, [esp + 0x40]
push str.Windows__d
push ecx
call fcn.0041acf0
add esp, 0xc
cmp dword [eax + 0x18], esi
jb 0x41c4be
mov eax, dword [eax + 4]
jmp 0x41c4c1
add eax, 4
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41c4c3
lea edi, [esp + 0x178]
sub eax, edx
add edi, 0xfffffffe
lea ebx, [ebx]
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x41c4e0
jmp 0x41c54c
cmp eax, 0xa
jne 0x41c4fa
mov byte [edi + 0x12c], 0x80
push eax
lea edx, [esp + 0x40]
push str.Windows__d
push edx
call fcn.0041acf0
add esp, 0xc
cmp dword [eax + 0x18], esi
jb 0x41c517
mov eax, dword [eax + 4]
jmp 0x41c51a
add eax, 4
mov edx, eax
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41c520
lea edi, [esp + 0x178]
sub eax, edx
add edi, 0xfffffffe
jmp 0x41c540
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x41c540
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea esi, [esp + 0x3c]
call fcn.004159c0
push str.GetProductInfo
push str.kernel32.dll
mov dword [esp + 0x1c], 0
call ebp
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x41c59b
mov edx, dword [esp + 0x64]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x64]
push edx
push ecx
push ecx
mov ecx, dword [esp + 0x6c]
push ecx
call eax
mov eax, dword [esp + 0x14]
add eax, 0xffffffff
cmp eax, 0x30
ja case.0x41c5b2.4
movzx edx, byte [eax + 0x41d044]
jmp dword [edx*4 + 0x41cff8]
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c5c3
mov ecx, 8
mov esi, str.Ultimate_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c5f0
mov ecx, 0xa
mov esi, str.Home_Premium_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c620
mov ecx, 9
mov esi, str.Home_Basic_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c650
mov ecx, 9
mov esi, str.Enterprise_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c680
mov ecx, 8
mov esi, str.Business_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c6b0
mov ecx, 8
mov esi, str.Starter_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
jmp 0x41c6e0
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c6e0
mov ecx, 0xb
mov esi, str.Cluster_Server_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c710
mov ecx, 9
mov esi, str.Datacenter_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c740
mov ecx, 0x13
mov esi, str.Datacenter_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c770
mov ecx, 9
mov esi, str.Enterprise_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c7a0
mov ecx, 0x13
mov esi, str.Enterprise_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c7d0
mov ecx, 0x16
mov esi, str.Enterprise_Edition_for_Itanium_based_Systems
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c800
mov ecx, 0xb
mov esi, str.Small_Business_Server
rep movsd dword es:[edi], dword [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
jmp 0x41c830
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c830
mov ecx, 0x13
mov esi, str.Small_Business_Server_Premium_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
jmp 0x41c860
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c860
mov ecx, 8
mov esi, str.Standard_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c890
mov ecx, 0x12
mov esi, str.Standard_Edition__core_installation_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c8c0
mov ecx, 9
mov esi, str.Web_Server_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41c8e6
mov ecx, 0xa
mov esi, str.Professional_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41c94f
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x12c], bl
je 0x41c94f
lea eax, [esp + 0x178]
add eax, 0xfffffffe
jmp 0x41c920
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c920
mov ecx, dword [str.Unknown]
mov edx, dword [0x4d98c4]
mov dword [eax], ecx
mov ecx, dword [0x4d98c8]
mov dword [eax + 4], edx
mov edx, dword [0x4d98cc]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov eax, dword [esp + 0x18]
cmp ax, 9
jne 0x41c9ac
mov eax, dword [esp + 0x10]
mov byte [eax + 0x12d], 1
lea eax, [esp + 0x178]
add eax, 0xfffffffe
mov edi, edi
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c970
mov ecx, dword [str.__64_bit]
mov edx, dword [0x4d98d4]
mov dword [eax], ecx
mov ecx, dword [0x4d98d8]
mov dword [eax + 4], edx
mov edx, dword [0x4d98dc]
mov dword [eax + 8], ecx
mov cx, word [0x4d98e0]
mov dword [eax + 0xc], edx
mov word [eax + 0x10], cx
jmp 0x41c9fa
test ax, ax
jne 0x41c9fa
lea eax, [esp + 0x178]
add eax, 0xfffffffe
jmp 0x41c9c0
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41c9c0
mov edx, dword [str.__32_bit]
mov ecx, dword [0x4d98e8]
mov dword [eax], edx
mov edx, dword [0x4d98ec]
mov dword [eax + 4], ecx
mov ecx, dword [0x4d98f0]
mov dword [eax + 8], edx
mov dx, word [0x4d98f4]
mov dword [eax + 0xc], ecx
mov word [eax + 0x10], dx
mov eax, dword [esp + 0x5c]
cmp eax, 5
jne 0x41cec5
mov eax, dword [esp + 0x60]
cmp eax, 2
jne 0x41cd92
mov eax, dword [esp + 0x10]
push 0x59
mov byte [eax + 0x12c], 8
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x170]
je 0x41ca5f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ca40
mov ecx, 0xc
mov esi, str.Windows_Server_2003_R2_
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41cae8
cmp bx, 0x2000
jne 0x41ca88
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ca70
mov ecx, 0xe
mov esi, str.Windows_Storage_Server_2003
jmp 0x41cae6
cmp byte [esp + 0x172], 1
jne 0x41cabf
cmp dx, 9
jne 0x41cabf
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41caa2
mov ecx, 0x12
mov esi, str.Windows_XP_Professional_x64_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x41ccea
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cad0
mov ecx, 0xb
mov esi, str.Windows_Server_2003_
rep movsd dword es:[edi], dword [esi]
cmp byte [esp + 0x172], 1
je 0x41ccea
cmp dx, 6
jne 0x41cb5e
test bl, bl
mov ecx, dword [esp + 0x10]
mov byte [ecx + 0x12d], 1
jns 0x41cb30
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cb15
mov ecx, 0x16
mov esi, str.Datacenter_Edition_for_Itanium_based_Systems
jmp 0x41cce6
test bl, 2
je 0x41ccea
lea edi, [esp + 0x178]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cb43
mov ecx, 0x16
mov esi, str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x41cce6
cmp dx, 9
jne 0x41cbdb
mov edx, dword [esp + 0x10]
lea edi, [esp + 0x178]
add edi, 0xfffffffe
test bl, bl
mov byte [edx + 0x12d], 1
jns 0x41cb9b
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cb80
mov ecx, 0xb
mov esi, str.Datacenter_x64_Edition
jmp 0x41cce6
test bl, 2
je 0x41cbc0
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cba0
mov ecx, 0xb
mov esi, str.Enterprise_x64_Edition
jmp 0x41cce6
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cbc0
mov ecx, 0xa
mov esi, str.Standard_x64_Edition
jmp 0x41cce6
test ebx, 0x4000
je 0x41cc0d
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cbf0
mov ecx, 0xc
mov esi, str.Compute_Cluster_Edition
rep movsd dword es:[edi], dword [esi]
jmp 0x41ccea
test bl, bl
jns 0x41cc3b
lea edi, [esp + 0x178]
add edi, 0xfffffffe
jmp 0x41cc20
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cc20
mov ecx, 9
mov esi, str.Datacenter_Edition
jmp 0x41cce6
test bl, 2
je 0x41cc6b
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea ebx, [ebx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cc50
mov ecx, 9
mov esi, str.Enterprise_Edition
jmp 0x41cce6
test ebx, 0x400
je 0x41ccc3
lea eax, [esp + 0x178]
add eax, 0xfffffffe
lea ecx, [ecx]
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41cc80
mov ecx, dword [str.Web_Edition]
mov edx, dword [0x4d9afc]
mov dword [eax], ecx
mov ecx, dword [0x4d9b00]
mov dword [eax + 4], edx
mov edx, dword [0x4d9b04]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d9b08]
mov dword [eax + 0xc], edx
mov edx, dword [0x4d9b0c]
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
jmp 0x41ccea
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ccd0
mov ecx, 8
mov esi, str.Standard_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
cmp dword [esp + 0x5c], 5
jne 0x41cec5
mov eax, dword [esp + 0x60]
cmp eax, 1
jne 0x41cdbf
mov eax, dword [esp + 0x10]
mov byte [eax + 0x12c], 4
lea eax, [esp + 0x178]
add eax, 0xfffffffe
jmp 0x41cd20
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41cd20
mov ecx, dword [str.Windows_XP]
mov edx, dword [0x4d9b14]
mov dword [eax], ecx
mov ecx, dword [0x4d9b18]
mov dword [eax + 4], edx
mov edx, dword [0x4d9b1c]
mov dword [eax + 8], ecx
mov ecx, dword [0x4d9b20]
mov dword [eax + 0xc], edx
mov edx, dword [0x4d9b24]
lea edi, [esp + 0x178]
add edi, 0xfffffffe
test ebx, 0x200
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
je 0x41cda0
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cd73
mov ecx, 6
mov esi, str.Home_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41cec5
mov ebx, dword [esp + 0x170]
jmp 0x41ccf9
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cda0
mov ecx, 6
mov esi, str.Professional
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41cec5
test eax, eax
jne 0x41cec5
mov eax, dword [esp + 0x10]
lea edi, [esp + 0x178]
mov byte [eax + 0x12c], 2
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cde0
cmp byte [esp + 0x172], 1
mov ecx, 7
mov esi, str.Windows_2000
rep movsd dword es:[edi], dword [esi]
jne 0x41ce2f
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ce10
mov ecx, 6
mov esi, str.Professional
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x41cec5
test bl, bl
jns 0x41ce5a
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ce40
mov ecx, 9
mov esi, str.Datacenter_Server
rep movsd dword es:[edi], dword [esi]
jmp 0x41cec5
test bl, 2
je 0x41ce8a
lea edi, [esp + 0x178]
add edi, 0xfffffffe
lea esp, [esp]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41ce70
mov ecx, 8
mov esi, str.Advanced_Server
rep movsd dword es:[edi], dword [esi]
jmp 0x41cec5
lea eax, [esp + 0x178]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x41ce94
mov ecx, dword [str.Server]
mov edx, dword [0x4d9bc4]
mov dword [eax], ecx
mov ecx, dword [0x4d9bc8]
mov dword [eax + 4], edx
mov dx, word [0x4d9bcc]
mov dword [eax + 8], ecx
mov word [eax + 0xc], dx
lea eax, [esp + 0x6c]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41ced0
sub eax, edx
sar eax, 1
je 0x41cf4c
lea edi, [esp + 0x178]
add edi, 0xfffffffe
jmp 0x41cef0
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x41cef0
mov eax, dword [0x4d9094]
mov dword [edi], eax
lea eax, [esp + 0x6c]
mov edx, eax
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41cf10
lea edi, [esp + 0x178]
sub eax, edx
add edi, 0xfffffffe
jmp 0x41cf30
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x41cf30
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x64]
push ecx
push str.__build__d_
lea edx, [esp + 0x370]
call fcn.0041d130
lea eax, [esp + 0x370]
add esp, 8
mov edx, eax
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41cf70
lea edi, [esp + 0x178]
sub eax, edx
add edi, 0xfffffffe
jmp 0x41cf90
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x41cf90
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [esp + 0x178]
rep movsb byte es:[edi], byte [esi]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x41cfb6
mov esi, dword [esp + 0x10]
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x17c]
push edx
add esi, 0x110
call fcn.00405810
mov al, 1
mov ecx, dword [esp + 0x40c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004a85d7
add esp, 0x404
ret