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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ed248
mov eax, dword fs:[0]
push eax
sub esp, 0x254
mov eax, dword [0x677010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x1f4]
push 0x11c
xorps xmm0, xmm0
mov dword [ebp - 0x240], 0
push 0
push eax
movups xmmword [ebp - 0x260], xmm0
movups xmmword [ebp - 0x250], xmm0
call fcn.005c0a60
add esp, 0xc
mov dword [ebp - 0x1f4], 0x11c
lea eax, [ebp - 0x1f4]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x434ec9
cmp dword [ebp - 0x1f0], 6
jb 0x43354c
lea eax, [ebp - 0x220]
push eax
lea edx, [ebp - 0x230]
lea ecx, [ebp - 0x22c]
call fcn.00431320
add esp, 4
test al, al
je 0x43354c
mov ecx, dword [ebp - 0x22c]
mov eax, dword [ebp - 0x230]
cmp dword [ebp - 0x1f0], ecx
jne 0x433534
cmp dword [ebp - 0x1ec], eax
je 0x43354c
mov dword [ebp - 0x1ec], eax
mov eax, dword [ebp - 0x220]
mov dword [ebp - 0x1f0], ecx
mov dword [ebp - 0x1e8], eax
push str.GetNativeSystemInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x433572
lea ecx, [ebp - 0x260]
push ecx
call eax
jmp 0x43357f
lea eax, [ebp - 0x260]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
cmp dword [ebp - 0x1e4], 2
jne 0x434ec9
cmp dword [ebp - 0x1f0], 4
jbe 0x434ec9
mov edi, str.Microsoft
mov edx, 0x100
mov ecx, esi
sub edi, esi
nop word [eax + eax]
lea eax, [edx + 0x7ffffefe]
test eax, eax
je 0x4335ce
movzx eax, word [ecx + edi]
test ax, ax
je 0x4335ce
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x4335b0
test edx, edx
lea eax, [ecx - 2]
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ax, word [ebp - 0x260]
cmp ax, 6
jne 0x433680
push ecx
push 0x11660
lea ecx, [ebp - 0xd8]
call fcn.0041f290
mov dword [ebp - 4], 0
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
lea eax, [ebp - 0x224]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0xd8]
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - method.srl::Value.virtual_0], vtable.srl::Value.0
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x116c0
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 2
call fcn.0041f290
mov byte [ebp - 4], 3
jmp 0x43370a
cmp ax, 9
jne 0x433735
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11660
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 4
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 5
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x116c1
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 6
call fcn.0041f290
mov byte [ebp - 4], 7
push 0
lea ecx, [ebp - 0x224]
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x1f0], 0xa
mov byte [ebp - 0x226], 0
mov byte [ebp - 0x225], 0
mov byte [ebp - 0x227], 0
jne 0x4337f4
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x43376e
add eax, 2
sub ecx, 1
jne 0x433760
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x43379b
push SysReAllocString
push str.Windows_10
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1175c
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 8
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 9
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x1f0], 6
jne case.0x433dab.5
cmp dword [ebp - 0x1ec], 0
jne 0x433954
cmp byte [ebp - 0xda], 1
mov ecx, 0x100
mov eax, esi
jne 0x4338c0
cmp word [eax], 0
je 0x433830
add eax, 2
sub ecx, 1
jne 0x433822
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x43385d
push SysReAllocString
push str.Windows_Vista
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11653
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0xa
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0xb
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov byte [ebp - 0x226], 1
jmp 0x43394d
cmp word [eax], 0
je 0x4338ce
add eax, 2
sub ecx, 1
jne 0x4338c0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4338fb
push SysReAllocString
push str.Windows_Server_2008
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11729
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0xc
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0xd
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x1ec], 1
jne 0x433aa4
cmp byte [ebp - 0xda], 1
mov ecx, 0x100
mov eax, esi
jne 0x433a10
cmp word [eax], 0
je 0x433983
add eax, 2
sub ecx, 1
jne 0x433975
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4339b0
push SysReAllocString
push str.Windows_7
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x116b6
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0xe
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0xf
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov byte [ebp - 0x225], 1
jmp 0x433a9d
cmp word [eax], 0
je 0x433a1e
add eax, 2
sub ecx, 1
jne 0x433a10
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433a4b
push SysReAllocString
push str.Windows_Server_2008_R2
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1172a
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x10
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x11
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x1ec], 2
jne 0x433c44
cmp byte [ebp - 0xda], 1
mov ecx, 0x100
mov eax, esi
jne 0x433bb0
cmp word [eax], 0
je 0x433ad3
add eax, 2
sub ecx, 1
jne 0x433ac5
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433b00
push SysReAllocString
push str.Windows_8
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1173c
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x12
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x13
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11745
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x14
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x15
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov byte [ebp - 0x227], 1
jmp 0x433c3d
cmp word [eax], 0
je 0x433bbe
add eax, 2
sub ecx, 1
jne 0x433bb0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433beb
push SysReAllocString
push str.Windows_Server_2012
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1173d
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x16
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x17
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x1ec], 3
jne 0x433d64
cmp byte [ebp - 0xda], 1
mov ecx, 0x100
mov eax, esi
jne 0x433cd0
cmp word [eax], 0
je 0x433c6f
add eax, 2
sub ecx, 1
jne 0x433c61
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433c9c
push SysReAllocString
push str.Windows_8.1
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1174e
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x18
call fcn.0041f290
mov byte [ebp - 4], 0x19
jmp 0x433d39
cmp word [eax], 0
je 0x433cde
add eax, 2
sub ecx, 1
jne 0x433cd0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433d0b
push SysReAllocString
push str.Windows_Server_2012_R2
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1174f
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x1a
call fcn.0041f290
mov byte [ebp - 4], 0x1b
push 0
lea ecx, [ebp - 0x224]
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
push str.GetProductInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [ebp - 0x234]
push ecx
push 0
push 0
push dword [ebp - 0x1ec]
push dword [ebp - 0x1f0]
call eax
mov eax, dword [ebp - 0x234]
dec eax
cmp eax, 0x2f
ja case.0x433dab.5
movzx eax, byte [eax + 0x434f38]
jmp dword [eax*4 + 0x434eec]
mov ecx, 0x100
mov eax, esi
nop dword [eax]
cmp word [eax], 0
je 0x433dce
add eax, 2
sub ecx, 1
jne 0x433dc0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433dfb
push SysReAllocString
push str.Professional_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x225], 0
je 0x433e37
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11738
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x1c
call fcn.0041f290
mov byte [ebp - 4], 0x1d
jmp 0x433ec4
cmp byte [ebp - 0x227], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11746
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x1e
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x1f
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 0
push 0
push 0x11745
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x20
call fcn.0041f290
mov byte [ebp - 4], 0x21
push 0
lea ecx, [ebp - 0x224]
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
jmp case.0x433dab.5
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x433f0e
add eax, 2
sub ecx, 1
jne 0x433f00
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433f3b
push SysReAllocString
push str.Ultimate_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x226], 0
je 0x433f77
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1166b
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x22
call fcn.0041f290
mov byte [ebp - 4], 0x23
jmp 0x433ec4
cmp byte [ebp - 0x225], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11735
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x24
call fcn.0041f290
mov byte [ebp - 4], 0x25
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x433fce
add eax, 2
sub ecx, 1
jne 0x433fc0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x433ffb
push SysReAllocString
push str.Home_Premium_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x226], 0
je 0x434037
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1166a
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x26
call fcn.0041f290
mov byte [ebp - 4], 0x27
jmp 0x433ec4
cmp byte [ebp - 0x225], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11739
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x28
call fcn.0041f290
mov byte [ebp - 4], 0x29
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x43408e
add eax, 2
sub ecx, 1
jne 0x434080
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4340bb
push SysReAllocString
push str.Home_Basic_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x226], 0
je 0x4340f7
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11669
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x2a
call fcn.0041f290
mov byte [ebp - 4], 0x2b
jmp 0x433ec4
cmp byte [ebp - 0x225], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1173a
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x2c
call fcn.0041f290
mov byte [ebp - 4], 0x2d
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x43414e
add eax, 2
sub ecx, 1
jne 0x434140
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x43417b
push SysReAllocString
push str.Enterprise_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x226], 0
je 0x4341b7
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11668
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x2e
call fcn.0041f290
mov byte [ebp - 4], 0x2f
jmp 0x433ec4
cmp byte [ebp - 0x225], 0
je 0x4341f3
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11737
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x30
call fcn.0041f290
mov byte [ebp - 4], 0x31
jmp 0x433ec4
cmp byte [ebp - 0x227], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11747
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x32
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x33
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 0
push 0
push 0x11745
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x34
call fcn.0041f290
mov byte [ebp - 4], 0x35
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
nop dword [eax]
cmp word [eax], 0
je 0x43429e
add eax, 2
sub ecx, 1
jne 0x434290
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4342cb
push SysReAllocString
push str.Business_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x226], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11667
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x36
call fcn.0041f290
mov byte [ebp - 4], 0x37
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434320
add eax, 2
sub ecx, 1
jne 0x434312
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x43434d
push SysReAllocString
push str.Starter_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
cmp byte [ebp - 0x225], 0
je case.0x433dab.5
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1173b
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x38
call fcn.0041f290
mov byte [ebp - 4], 0x39
jmp 0x433ec4
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x4343a2
add eax, 2
sub ecx, 1
jne 0x434394
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Cluster_Server_Edition
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x4343de
add eax, 2
sub ecx, 1
jne 0x4343d0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Datacenter_Edition
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43441e
add eax, 2
sub ecx, 1
jne 0x434410
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Datacenter_Edition__core_installation_
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43445e
add eax, 2
sub ecx, 1
jne 0x434450
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Enterprise_Edition
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43449e
add eax, 2
sub ecx, 1
jne 0x434490
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Enterprise_Edition__core_installation_
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x4344de
add eax, 2
sub ecx, 1
jne 0x4344d0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43451e
add eax, 2
sub ecx, 1
jne 0x434510
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Small_Business_Server
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43455e
add eax, 2
sub ecx, 1
jne 0x434550
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Small_Business_Server_Premium_Edition
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x43459e
add eax, 2
sub ecx, 1
jne 0x434590
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Standard_Edition
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x4345d6
add eax, 2
sub ecx, 1
jne 0x4345c8
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Standard_Edition__core_installation_
jmp 0x43462b
mov ecx, 0x100
mov eax, esi
nop dword [eax]
cmp word [eax], 0
je 0x43460e
add eax, 2
sub ecx, 1
jne 0x434600
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je case.0x433dab.5
push SysReAllocString
push str.Web_Server_Edition
mov edx, 0x100
push ecx
sub edx, edi
lea ecx, [esi + edi*2]
call fcn.00433420
cmp dword [ebp - 0x1f0], 5
jne 0x434e29
mov eax, dword [ebp - 0x1ec]
cmp eax, 2
jne 0x434bae
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x4346de
mov ecx, 0x100
mov eax, esi
nop word [eax + eax]
cmp word [eax], 0
je 0x43467e
add eax, 2
sub ecx, 1
jne 0x434670
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4346ab
push SysReAllocString
push str.Windows_Server_2003_R2_
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1165f
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x3a
call fcn.0041f290
mov byte [ebp - 4], 0x3b
jmp 0x4348db
mov eax, dword [ebp - 0xdc]
mov ecx, 0x2000
cmp ax, cx
jne 0x434763
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434703
add eax, 2
sub ecx, 1
jne 0x4346f5
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434730
push SysReAllocString
push str.Windows_Storage_Server_2003
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1165f
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x3c
call fcn.0041f290
mov byte [ebp - 4], 0x3d
jmp 0x4348db
mov ecx, 0x8000
cmp ax, cx
jne 0x4347e2
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434782
add eax, 2
sub ecx, 1
jne 0x434774
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4347af
push SysReAllocString
push str.Windows_Home_Server
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x11744
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x3e
call fcn.0041f290
mov byte [ebp - 4], 0x3f
jmp 0x4348db
cmp byte [ebp - 0xda], 1
jne 0x43486b
cmp word [ebp - 0x260], 9
jne 0x43486b
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x43480e
add eax, 2
sub ecx, 1
jne 0x434800
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x43483b
push SysReAllocString
push str.Windows_XP_Professional_x64_Edition
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1166c
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x40
call fcn.0041f290
mov byte [ebp - 4], 0x41
jmp 0x4348db
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434880
add eax, 2
sub ecx, 1
jne 0x434872
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4348ad
push SysReAllocString
push str.Windows_Server_2003_
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1165f
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x42
call fcn.0041f290
mov byte [ebp - 4], 0x43
push 0
lea ecx, [ebp - 0x224]
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
cmp byte [ebp - 0xda], 1
je 0x434b9b
mov ax, word [ebp - 0x260]
cmp ax, 6
jne 0x4349ac
mov eax, dword [ebp - 0xdc]
test al, al
jns 0x434969
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434943
add eax, 2
sub ecx, 1
jne 0x434935
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Datacenter_Edition_for_Itanium_based_Systems
jmp 0x434b8b
test al, 2
je 0x434b9b
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434986
add eax, 2
sub ecx, 1
jne 0x434978
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Enterprise_Edition_for_Itanium_based_Systems
jmp 0x434b8b
cmp ax, 9
mov ecx, 0x100
mov eax, dword [ebp - 0xdc]
jne 0x434a69
test al, al
jns 0x4349fb
mov eax, esi
cmp word [eax], 0
je 0x4349d5
add eax, 2
sub ecx, 1
jne 0x4349c7
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Datacenter_x64_Edition
jmp 0x434b8b
test al, 2
mov eax, esi
je 0x434a35
cmp word [eax], 0
je 0x434a0f
add eax, 2
sub ecx, 1
jne 0x434a01
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Enterprise_x64_Edition
jmp 0x434b8b
cmp word [eax], 0
je 0x434a43
add eax, 2
sub ecx, 1
jne 0x434a35
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Standard_x64_Edition
jmp 0x434b8b
test eax, 0x4000
je 0x434aa6
mov eax, esi
cmp word [eax], 0
je 0x434a80
add eax, 2
sub ecx, 1
jne 0x434a72
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Compute_Cluster_Edition
jmp 0x434b8b
test al, al
jns 0x434ae4
mov eax, esi
nop dword [eax]
cmp word [eax], 0
je 0x434abe
add eax, 2
sub ecx, 1
jne 0x434ab0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Datacenter_Edition
jmp 0x434b8b
test al, 2
je 0x434b21
mov eax, esi
nop word [eax + eax]
cmp word [eax], 0
je 0x434afe
add eax, 2
sub ecx, 1
jne 0x434af0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Enterprise_Edition
jmp 0x434b8b
test eax, 0x400
mov eax, esi
je 0x434b60
nop word [eax + eax]
cmp word [eax], 0
je 0x434b3e
add eax, 2
sub ecx, 1
jne 0x434b30
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Web_Edition
jmp 0x434b8b
cmp word [eax], 0
je 0x434b6e
add eax, 2
sub ecx, 1
jne 0x434b60
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434b9b
push SysReAllocString
push str.Standard_Edition
mov edx, 0x100
push ecx
sub edx, edi
lea ecx, [esi + edi*2]
call fcn.00433420
cmp dword [ebp - 0x1f0], 5
jne 0x434e29
mov eax, dword [ebp - 0x1ec]
cmp eax, 1
jne 0x434ce2
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x434bce
add eax, 2
sub ecx, 1
jne 0x434bc0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434bfb
push SysReAllocString
push str.Windows_XP
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x220], 1
push 0
push 0x1166c
lea ecx, [ebp - 0xd8]
mov dword [ebp - 4], 0x44
call fcn.0041f290
push 0
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 0x45
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0xd8], vtable.srl::GroupID.0
call fcn.004075ab
mov dword [ebp - 4], 0xffffffff
mov ecx, 0x100
test dword [ebp - 0xdc], 0x200
mov eax, esi
je 0x434c94
cmp word [eax], 0
je 0x434c75
add eax, 2
sub ecx, 1
jne 0x434c67
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434ccf
push SysReAllocString
push str.Home_Edition
jmp 0x434cbf
cmp word [eax], 0
je 0x434ca2
add eax, 2
sub ecx, 1
jne 0x434c94
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434ccf
push SysReAllocString
push str.Professional
mov edx, 0x100
push ecx
sub edx, edi
lea ecx, [esi + edi*2]
call fcn.00433420
cmp dword [ebp - 0x1f0], 5
jne 0x434e29
mov eax, dword [ebp - 0x1ec]
test eax, eax
jne 0x434e29
mov ecx, 0x100
mov eax, esi
cmp word [eax], 0
je 0x434cff
add eax, 2
sub ecx, 1
jne 0x434cf1
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434d2c
push SysReAllocString
push str.Windows_2000
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
mov dword [ebp - method.srl::Exists.virtual_0], vtable.srl::Exists.0
mov byte [ebp - 0x238], 1
push 0
push 0x1165e
lea ecx, [ebp - 0x21c]
mov dword [ebp - 4], 0x46
call fcn.0041f290
push 0
lea ecx, [ebp - 0x23c]
mov byte [ebp - 4], 0x47
push ecx
push eax
call fcn.0044ade0
lea ecx, [ebp - 0x214]
mov dword [ebp - method.srl::GroupID.virtual_0], vtable.srl::GroupID.0
call fcn.004075ab
cmp byte [ebp - 0xda], 1
jne 0x434dbd
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x434d9e
add eax, 2
sub ecx, 1
jne 0x434d90
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434e29
push SysReAllocString
push str.Professional
jmp 0x434dfb
mov eax, dword [ebp - 0xdc]
test al, al
jns 0x434e0d
mov ecx, 0x100
mov eax, esi
nop
cmp word [eax], 0
je 0x434dde
add eax, 2
sub ecx, 1
jne 0x434dd0
mov eax, 0x100
mov edi, ecx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x434e29
push SysReAllocString
push str.Datacenter_Server
push ecx
mov edx, 0x100
lea ecx, [esi + edi*2]
sub edx, edi
call fcn.00433420
jmp 0x434e29
mov edx, 0x100
mov ecx, esi
test al, 2
je 0x434e1f
push str.Advanced_Server
jmp 0x434e24
push str.Server
call fcn.00433320
lea ecx, [ebp - 0x1e0]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x434e32
sub ecx, edx
sar ecx, 1
je 0x434e67
push 0x63ab0c
mov edx, 0x100
mov ecx, esi
call fcn.00433320
lea eax, [ebp - 0x1e0]
mov edx, 0x100
push eax
mov ecx, esi
call fcn.00433320
push dword [ebp - 0x1e8]
lea eax, [ebp - 0xb0]
push str.__build__d_
push 0x50
push eax
call fcn.004333a0
add esp, 0x10
lea eax, [ebp - 0xb0]
mov edx, 0x100
mov ecx, esi
push eax
call fcn.00433320
cmp dword [ebp - 0x1f0], 6
jb 0x434ec9
mov ax, word [ebp - 0x260]
cmp ax, 9
jne 0x434eb3
push str.__64_bit
jmp 0x434ebd
test ax, ax
jne 0x434ec9
push str.__32_bit
mov edx, 0x100
mov ecx, esi
call fcn.00433320
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005bc745
mov esp, ebp
pop ebp
ret 4