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

Disassembly:
push 0xffffffffffffffff
push 0x58975b
mov eax, dword fs:[0]
push eax
sub esp, 0x14c
mov eax, dword [0x5eb3c0]
xor eax, esp
mov dword [esp + 0x148], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5eb3c0]
xor eax, esp
push eax
lea eax, [esp + 0x160]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x170]
xor edi, edi
mov ebx, 1
mov esi, ecx
mov dword [esp + 0x14], edi
test byte [0x5f9008], bl
mov dword [esp + 0x18], esi
jne 0x545df5
mov eax, dword [0x5f7780]
mov edx, dword [eax + 0xc]
or dword [0x5f9008], ebx
mov ecx, 0x5f7780
call edx
add eax, 0x10
push 0x5a1200
mov dword [0x5f9004], eax
call fcn.005643ce
add esp, 4
mov eax, dword [0x5f9004]
cmp dword [eax - 0xc], edi
jle 0x545e1f
mov ecx, dword [0x5f8fb8]
mov dword [esi], ecx
mov eax, dword [0x5f9004]
add eax, 0xfffffff0
call fcn.00481090
add eax, 0x10
mov dword [ebp], eax
jmp 0x54606c
lea edx, [esp + 0x14]
push edx
mov ecx, str.UnKnowVersion
call fcn.00481430
xor eax, eax
mov dword [esp + 0x168], edi
push 0x11c
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 + 0x44]
push edi
push eax
call fcn.005695a0
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
add esp, 0xc
lea ecx, [esp + 0x40]
push ecx
mov dword [esp + 0x44], 0x11c
call esi
cmp eax, edi
jne 0x545ed0
lea edx, [esp + 0x40]
push edx
mov dword [esp + 0x44], 0x114
call esi
test eax, eax
jne 0x545ed0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
call fcn.00481090
add eax, 0x10
mov dword [ebp], eax
mov dword [esp + 0x168], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x546060
push str.GetNativeSystemInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x545ef4
lea ecx, [esp + 0x1c]
push ecx
call eax
jmp 0x545eff
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [esp + 0x50]
sub eax, edi
je 0x546004
sub eax, ebx
je 0x545fd6
sub eax, ebx
jne 0x546012
mov eax, dword [esp + 0x44]
cmp eax, 6
jne 0x545f7b
mov eax, dword [esp + 0x48]
cmp eax, 2
jne 0x545f37
mov edx, str.Win8
jmp 0x546009
cmp eax, ebx
jne 0x545f5c
cmp byte [esp + 0x15a], bl
lea edi, [esp + 0x14]
jne 0x545f52
mov edx, str.Win7
jmp 0x54600d
mov edx, str.WinS2008
jmp 0x54600d
cmp eax, edi
jne 0x546012
cmp byte [esp + 0x15a], bl
lea edi, [esp + 0x14]
jne 0x545f52
mov edx, str.Vista
jmp 0x54600d
cmp eax, 5
jne 0x545fca
mov eax, dword [esp + 0x48]
cmp eax, 2
jne 0x545fb4
push 0x59
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x545f9c
mov edx, str.WinS2003
jmp 0x546009
cmp byte [esp + 0x15a], bl
jne 0x545f95
cmp word [esp + 0x1c], 9
jne 0x545f95
mov edx, str.WinXP
jmp 0x546009
cmp eax, ebx
jne 0x545fbf
mov edx, str.WinXP
jmp 0x546009
cmp eax, edi
jne 0x546012
mov edx, str.Win2000
jmp 0x546009
cmp eax, 4
ja 0x546012
mov edx, str.WinNT
jmp 0x546009
cmp dword [esp + 0x44], 4
jne 0x546012
mov eax, dword [esp + 0x48]
cmp eax, edi
jne 0x545fec
mov edx, str.Win9x
jmp 0x546009
cmp eax, 0xa
jne 0x545ff8
mov edx, str.Win9x
jmp 0x546009
cmp eax, 0x5a
jne 0x546012
mov edx, str.WinME
jmp 0x546009
mov edx, str.Win32s
lea edi, [esp + 0x14]
call fcn.00481720
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov dword [0x5f8fb8], eax
lea eax, [esp + 0x14]
mov edi, 0x5f9004
call fcn.00480f90
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
call fcn.00481090
add eax, 0x10
mov dword [ebp], eax
mov dword [esp + 0x168], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x54606c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, ebp
mov ecx, dword [esp + 0x160]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x148]
xor ecx, esp
call fcn.00564207
add esp, 0x158
ret