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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x144
mov eax, dword [0x10036040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x98
xorps xmm0, xmm0
mov dword [ebp - 0x124], 0
lea eax, [ebp - 0x11c]
push 0
push eax
movups xmmword [ebp - 0x144], xmm0
movups xmmword [ebp - 0x134], xmm0
call fcn.1000ea10
add esp, 0xc
mov dword [ebp - 0x120], 0x9c
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x100065df
push dword [ebp - 0x118]
push dword [ebp - 0x11c]
push str.UNKNOWN
push 0x10031d78
push 0x80
push 0x1003ceb0
call fcn.10001250
add esp, 0x18
jmp 0x10006bff
push str.GetNativeSystemInfo
push 0x10031d98
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x10006605
lea ecx, [ebp - 0x144]
push ecx
call eax
jmp 0x10006612
lea eax, [ebp - 0x144]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [ebp - 0x11c]
cmp ecx, 0xa
jne 0x100066c0
mov eax, dword [ebp - 0x118]
test eax, eax
jne 0x10006b3c
cmp byte [ebp - 0x86], 1
lea edx, [ecx + 0x76]
mov ecx, 0x1003ceb0
jne 0x10006680
mov esi, str.WIN_10
sub esi, ecx
nop word [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006650
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov esi, str.SERVER_2016
sub esi, 0x1003ceb0
nop dword [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [ecx + esi]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006690
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
cmp ecx, 6
jne 0x10006910
mov eax, dword [ebp - 0x118]
cmp eax, 3
jne 0x10006760
cmp byte [ebp - 0x86], 1
lea edx, [ecx + 0x7a]
mov ecx, 0x1003ceb0
jne 0x10006720
mov esi, str.WIN_8.1
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [ecx + esi]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x100066f0
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov esi, str.SERVER_2012_R2
sub esi, 0x1003ceb0
nop dword [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [ecx + esi]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006730
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
cmp eax, 2
jne 0x100067f0
cmp byte [ebp - 0x86], 1
lea edx, [eax + 0x7e]
mov ecx, 0x1003ceb0
jne 0x100067b1
mov esi, str.WIN_8
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [ecx + esi]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006781
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov esi, str.SERVER_2012
sub esi, 0x1003ceb0
nop dword [eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [ecx + esi]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x100067c0
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
cmp eax, 1
jne 0x10006880
lea edx, [eax + 0x7f]
mov ecx, 0x1003ceb0
cmp byte [ebp - 0x86], al
jne 0x10006840
mov esi, str.WIN_7
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006810
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov esi, str.SERVER_2008_R2
sub esi, 0x1003ceb0
nop dword [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006850
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
test eax, eax
jne 0x10006b3c
cmp byte [ebp - 0x86], 1
mov edx, 0x80
mov ecx, 0x1003ceb0
je 0x100068d2
mov esi, str.SERVER_2008
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x100068a2
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov esi, str.VISTA
sub esi, 0x1003ceb0
nop dword [eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x100068e0
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
cmp ecx, 5
jne 0x10006b36
mov eax, dword [ebp - 0x118]
cmp eax, 2
jne 0x10006ac0
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x59
call esi
test eax, eax
je 0x10006980
mov ecx, 0x1003ceb0
mov esi, str.SERVER_2003_R2
mov edx, 0x80
sub esi, ecx
nop word [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006950
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov ecx, dword [ebp - 0x11c]
cmp ecx, 5
jne 0x10006b36
mov eax, dword [ebp - 0x118]
cmp eax, 2
jne 0x10006ac0
mov eax, 0x2000
cmp word [ebp - 0x88], ax
jne 0x100069f0
mov ecx, 0x1003ceb0
mov esi, str.HOME_SERVER
mov edx, 0x80
sub esi, ecx
nop dword [eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x100069c0
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
push 0x59
call esi
test eax, eax
jne 0x10006a40
mov ecx, 0x1003ceb0
mov esi, str.SERVER_2003
mov edx, 0x80
sub esi, ecx
nop dword [eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006a10
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
mov ecx, dword [ebp - 0x11c]
cmp ecx, 5
jne 0x10006b36
mov eax, dword [ebp - 0x118]
cmp eax, 2
jne 0x10006ac0
cmp byte [ebp - 0x86], 1
jne 0x10006b3c
cmp word [ebp - 0x144], 9
jne 0x10006b3c
mov ecx, 0x1003ceb0
mov esi, str.XP_x64
mov edx, 0x80
sub esi, ecx
nop word [eax + eax]
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006a90
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
cmp eax, 1
jne 0x10006afb
mov ecx, 0x1003ceb0
mov esi, 0x10031d68
mov edx, 0x80
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006ad6
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], dl
jmp 0x10006b5a
test eax, eax
jne 0x10006b3c
mov ecx, 0x1003ceb0
mov esi, str.WIN_2000
mov edx, 0x80
sub esi, ecx
lea eax, [edx + 0x7fffff7e]
test eax, eax
je 0x10006b29
mov al, byte [esi + ecx]
test al, al
je 0x10006b29
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10006b10
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], 0
jmp 0x10006b5a
mov eax, dword [ebp - 0x118]
push eax
push ecx
push str.UNKNOWN
push str._s__1d._2d
push 0x80
push 0x1003ceb0
call fcn.10001250
add esp, 0x18
push 0x80
lea eax, [ebp - 0x84]
push 0
push eax
call fcn.1000ea10
sub esp, 0x90
lea esi, [ebp - 0x120]
mov ecx, 0x27
mov edi, esp
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x84]
call fcn.10005d00
add esp, 0x9c
mov ecx, 0x80
mov eax, 0x1003ceb0
nop dword [eax]
cmp byte [eax], 0
je 0x10006bab
inc eax
sub ecx, 1
jne 0x10006ba0
mov eax, 0x80
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x10006bff
mov edx, 0x80
lea ecx, [esi + 0x1003ceb0]
sub edx, esi
je 0x10006bf4
lea esi, [ebp - 0x84]
mov eax, bind
sub esi, ecx
nop word [eax + eax]
test eax, eax
je 0x10006bf4
mov bl, byte [esi + ecx]
test bl, bl
je 0x10006bf4
mov byte [ecx], bl
dec eax
inc ecx
sub edx, 1
jne 0x10006be0
test edx, edx
lea eax, [ecx - 1]
cmovne eax, ecx
mov byte [eax], 0
cmp dword [0x1003cbb0], 1
mov ecx, str._32_
mov eax, str._64_
mov edx, 0x80
cmovne eax, ecx
mov ecx, 0x1003ceb0
push eax
call fcn.100011a0
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1000d0c5
mov esp, ebp
pop ebp
ret