Function at 0x54508220
Capabilities:
Check os version

Disassembly:
sub esp, 0x1a4
mov eax, dword [0x5454141c]
xor eax, esp
mov dword [esp + 0x1a0], eax
push ebp
mov ebp, dword [esp + 0x1ac]
push esi
push edi
push 0x9c
lea eax, [esp + 0x10]
push 0
push eax
call fcn.54516b80
mov ecx, dword [str.OS:]
mov dl, byte [0x54533920]
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
add esp, 0xc
lea eax, [esp + 0xc]
push eax
mov dword [esp + 0xac], ecx
mov byte [esp + 0xb0], dl
mov dword [esp + 0x10], 0x9c
call esi
mov edi, eax
test edi, edi
jne 0x5450829e
lea ecx, [esp + 0xc]
push ecx
mov dword [esp + 0x10], 0x94
call esi
test eax, eax
je 0x5450875b
mov eax, dword [esp + 0x1c]
sub eax, 2
jne 0x5450872e
mov esi, dword [esp + 0x10]
cmp esi, 4
ja 0x545082e6
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov edi, edi
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545082c0
mov edx, dword [str.WinNT]
mov cx, word [0x54533918]
mov dword [eax], edx
mov dl, byte [0x5453391a]
mov word [eax + 4], cx
mov byte [eax + 6], dl
cmp esi, 5
mov edx, dword [esp + 0x14]
jne 0x545083a6
test edx, edx
jne 0x5450832a
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508301
mov ecx, dword [str.Win2000]
mov dword [eax], ecx
mov ecx, dword [0x5453390c]
mov dword [eax + 4], ecx
mov cl, byte [0x54533910]
mov byte [eax + 8], cl
jmp 0x5450841d
cmp edx, 1
jne 0x5450836b
lea eax, [esp + 0xa8]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508340
mov ecx, dword [str.WinXP]
mov dword [eax], ecx
mov cx, word [0x54533904]
mov word [eax + 4], cx
mov cl, byte [0x54533906]
mov byte [eax + 6], cl
jmp 0x5450841d
cmp edx, 2
jne 0x5450841d
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov edi, edi
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508380
mov ecx, dword [str.Win2003]
mov dword [eax], ecx
mov ecx, dword [0x545338f8]
mov dword [eax + 4], ecx
mov cl, byte [0x545338fc]
mov byte [eax + 8], cl
jmp 0x5450841d
cmp esi, 6
jne 0x5450841d
test edx, edx
jne 0x545083e8
lea eax, [esp + 0xa8]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545083c0
mov ecx, dword [str.VISTA]
mov dword [eax], ecx
mov cx, word [0x545338f0]
mov word [eax + 4], cx
mov cl, byte [0x545338f2]
mov byte [eax + 6], cl
jmp 0x5450841d
cmp edx, 1
jne 0x5450841d
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545083f7
mov ecx, dword [str.Windows7]
mov dword [eax], ecx
mov ecx, dword [0x545338e4]
mov dword [eax + 4], ecx
mov cx, word [0x545338e8]
mov word [eax + 8], cx
test edi, edi
je 0x5450872e
mov al, byte [esp + 0xa6]
cmp al, 1
jne 0x545084b6
cmp esi, 4
jne 0x5450845a
lea edi, [esp + 0xa8]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x54508443
mov edx, dword [0x545338dc]
mov dword [edi], edx
jmp 0x5450872e
test dword [esp + 0xa4], 0x200
je 0x54508491
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508471
mov ecx, dword [str.Home]
mov dl, byte [0x545338d8]
mov dword [eax], ecx
mov byte [eax + 4], dl
jmp 0x5450872e
lea edi, [esp + 0xa8]
add edi, 0xffffffff
jmp 0x545084a0
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x545084a0
mov eax, dword [0x545338d0]
mov dword [edi], eax
jmp 0x5450872e
cmp al, 3
jne 0x5450872e
cmp esi, 5
jne 0x545086d0
cmp edx, 2
jne 0x5450860b
mov eax, dword [esp + 0xa4]
test al, al
jns 0x5450852b
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545084e5
mov ecx, dword [str.Datacenter_Edition]
mov edx, dword [0x545338c0]
mov dword [eax], ecx
mov ecx, dword [0x545338c4]
mov dword [eax + 4], edx
mov edx, dword [0x545338c8]
mov dword [eax + 8], ecx
mov cx, word [0x545338cc]
mov dword [eax + 0xc], edx
mov dl, byte [0x545338ce]
mov word [eax + 0x10], cx
mov byte [eax + 0x12], dl
jmp 0x5450872e
test al, 2
je 0x54508586
lea eax, [esp + 0xa8]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508540
mov ecx, dword [str.Enterprise_Edition]
mov edx, dword [0x545338ac]
mov dword [eax], ecx
mov ecx, dword [0x545338b0]
mov dword [eax + 4], edx
mov edx, dword [0x545338b4]
mov dword [eax + 8], ecx
mov cx, word [0x545338b8]
mov dword [eax + 0xc], edx
mov dl, byte [0x545338ba]
mov word [eax + 0x10], cx
mov byte [eax + 0x12], dl
jmp 0x5450872e
cmp ax, 0x400
lea eax, [esp + 0xa8]
jne 0x545085ca
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508596
mov ecx, dword [str.WebEdition]
mov edx, dword [0x545338a0]
mov dword [eax], ecx
mov cx, word [0x545338a4]
mov dword [eax + 4], edx
mov dl, byte [0x545338a6]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
jmp 0x5450872e
add eax, 0xffffffff
lea ecx, [ecx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545085d0
mov ecx, dword [str.Standard_Edition]
mov edx, dword [0x5453388c]
mov dword [eax], ecx
mov ecx, dword [0x54533890]
mov dword [eax + 4], edx
mov edx, dword [0x54533894]
mov dword [eax + 8], ecx
mov cl, byte [0x54533898]
mov dword [eax + 0xc], edx
mov byte [eax + 0x10], cl
jmp 0x5450872e
test edx, edx
jne 0x545086d0
mov al, byte [esp + 0xa4]
test al, al
jns 0x54508665
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508628
mov edx, dword [str.Datacenter_Server]
mov ecx, dword [0x54533878]
mov dword [eax], edx
mov edx, dword [0x5453387c]
mov dword [eax + 4], ecx
mov ecx, dword [0x54533880]
mov dword [eax + 8], edx
mov dx, word [0x54533884]
mov dword [eax + 0xc], ecx
mov word [eax + 0x10], dx
jmp 0x5450872e
test al, 2
lea eax, [esp + 0xa8]
je 0x545086a5
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508673
mov ecx, dword [str.Advanced_Server]
mov edx, dword [0x54533868]
mov dword [eax], ecx
mov ecx, dword [0x5453386c]
mov dword [eax + 4], edx
mov edx, dword [0x54533870]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
jmp 0x5450872e
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x545086a8
mov ecx, dword [str.Server]
mov dx, word [0x54533860]
mov dword [eax], ecx
mov cl, byte [0x54533862]
mov word [eax + 4], dx
mov byte [eax + 6], cl
jmp 0x5450872e
test byte [esp + 0xa4], 2
je 0x545086fe
lea edi, [esp + 0xa8]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x545086e4
mov ecx, 7
mov esi, str.Server4.0__Enterprise_Edition
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x5450872e
lea eax, [esp + 0xa8]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x54508708
mov edx, dword [str.Server4.0]
mov ecx, dword [0x54533834]
mov dword [eax], edx
mov dx, word [0x54533838]
mov dword [eax + 4], ecx
mov word [eax + 8], dx
mov eax, dword [esp + 0x18]
movzx ecx, word [esp + 0xa2]
movzx edx, word [esp + 0xa0]
push eax
push ecx
push edx
lea eax, [esp + 0xb4]
push eax
push str._s_SP_d._d__d_
push ebp
call fcn.54516af4
add esp, 0x18
mov ecx, dword [esp + 0x1ac]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.54516b6f
add esp, 0x1a4
ret