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

Disassembly:
sub esp, 0x148
mov eax, dword [0x1004f860]
xor eax, esp
mov dword [esp + 0x144], eax
cmp dword [0x1004fcf8], 0
push ebx
mov ebx, dword [esp + 0x150]
push ebp
mov ebp, dword [sym.imp.USER32.dll_wsprintfW]
push esi
mov esi, dword [esp + 0x160]
mov dword [esp + 0xc], esi
jne 0x10027914
push 0x11c
lea eax, [esp + 0x38]
push 0
push eax
call sub.MSVCR100.dll_memset
add esp, 0xc
mov dword [esp + 0x34], 0x11c
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.win32]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x100275b0
mov esi, dword [sym.imp.kernel32.dll_GetVersionExW]
lea ecx, [esp + 0x34]
push ecx
call esi
test eax, eax
jne 0x100275e6
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x38], 0x114
call esi
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x3c]
push edi
mov edi, dword [esp + 0x3c]
cmp eax, 2
jne 0x10027758
cmp edi, 4
jne 0x1002762b
xor eax, eax
jmp 0x10027610
movzx ecx, word [eax + str.winnt]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027610
jmp 0x100277ca
cmp edi, 6
jne 0x100276db
test esi, esi
jne 0x1002768b
xor eax, eax
cmp byte [esp + 0x152], 1
jne 0x10027670
jmp 0x10027650
movzx ecx, word [eax + str.winvista]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027650
jmp 0x10027818
movzx ecx, word [eax + str.winlong]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027670
jmp 0x10027818
cmp esi, 1
jne 0x100277ca
xor eax, eax
cmp byte [esp + 0x152], 1
jne 0x100276c0
movzx ecx, word [eax + str.win7]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x100276a0
jmp 0x100277ce
movzx ecx, word [eax + str.win2008R2]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x100276c0
jmp 0x100277ce
cmp edi, 5
jne 0x100277c6
test esi, esi
jne 0x1002770b
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.win2000]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x100276f0
jmp 0x10027818
cmp esi, 1
jne 0x1002772d
xor eax, eax
movzx ecx, word [eax + str.winxp]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027712
jmp 0x100277ce
cmp esi, 2
jne 0x100277ca
xor eax, eax
jmp 0x10027740
movzx ecx, word [eax + str.win2003]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027740
jmp 0x100277ce
cmp eax, 1
jne 0x100277c6
cmp edi, 4
jne 0x100277a8
cmp esi, 0xa
jne 0x10027788
xor eax, eax
lea esp, [esp]
movzx ecx, word [eax + str.win98]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027770
jmp 0x100277ce
cmp esi, 0x5a
jne 0x100277a8
xor eax, eax
nop
movzx ecx, word [eax + str.winme]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x10027790
jmp 0x100277ce
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.win95]
mov word [eax + 0x1004fcd0], cx
add eax, 2
test cx, cx
jne 0x100277b0
test edi, edi
je 0x10027818
test esi, esi
je 0x10027818
mov ecx, str.win32
mov eax, 0x1004fcd0
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x100277fe
test dx, dx
je 0x100277fa
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x100277fe
add eax, 4
add ecx, 4
test dx, dx
jne 0x100277d8
xor eax, eax
jmp 0x10027803
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10027818
push esi
push edi
push str._d._d
push 0x1004fcd0
call ebp
add esp, 0x10
movzx eax, word [esp + 0x14c]
xor ecx, ecx
mov dword [0x1004fccc], eax
mov word [esp + 0x14], cx
xor eax, eax
pop edi
nop
movzx ecx, word [eax + str.Unknown]
mov word [eax + 0x1004fca4], cx
add eax, 2
test cx, cx
jne 0x10027830
push 0x1003af40
call fcn.10004550
mov esi, eax
add esp, 4
test esi, esi
je 0x10027872
push 0x10044390
push esi
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10027872
lea edx, [esp + 0x10]
push edx
call eax
jmp 0x1002787d
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.kernel32.dll_GetSystemInfo]
test esi, esi
je 0x10027888
push esi
call dword [sym.imp.kernel32.dll_FreeLibrary]
movzx eax, word [esp + 0x10]
test eax, eax
je 0x100278e8
cmp eax, 6
je 0x100278c8
cmp eax, 9
je 0x100278ad
push eax
push 0x10044388
push 0x1004fca4
call ebp
add esp, 0xc
jmp 0x10027906
xor eax, eax
nop
movzx ecx, word [eax + str.amd64]
mov word [eax + 0x1004fca4], cx
add eax, 2
test cx, cx
jne 0x100278b0
jmp 0x10027906
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.ia64]
mov word [eax + 0x1004fca4], cx
add eax, 2
test cx, cx
jne 0x100278d0
jmp 0x10027906
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.i586]
mov word [eax + 0x1004fca4], cx
add eax, 2
test cx, cx
jne 0x100278f0
mov esi, dword [esp + 0xc]
mov dword [0x1004fcf8], 1
mov eax, dword [0x1004fccc]
test eax, eax
je 0x10027930
push eax
push 0x1004fcd0
push str._s_sp_d
push ebx
call ebp
add esp, 0x10
jmp 0x10027940
push 0x1004fcd0
push 0x1003c898
push ebx
call ebp
add esp, 0xc
test esi, esi
je 0x10027954
push 0x1004fca4
push 0x1003c898
push esi
call ebp
add esp, 0xc
mov ecx, dword [esp + 0x150]
pop esi
pop ebp
pop ebx
xor ecx, esp
mov eax, 1
call fcn.1003779c
add esp, 0x148
ret