diff --git a/Scylla/SystemInformation.cpp b/Scylla/SystemInformation.cpp
index c4c3f27..da8918d 100644
--- a/Scylla/SystemInformation.cpp
+++ b/Scylla/SystemInformation.cpp
@@ -1,62 +1,76 @@
 #include "SystemInformation.h"
 
 OPERATING_SYSTEM SystemInformation::currenOS = UNKNOWN_OS;
 
 bool SystemInformation::getSystemInformation()
 {
 	OSVERSIONINFOEX osvi = {0};
 	SYSTEM_INFO si = {0};
 	def_GetNativeSystemInfo _GetNativeSystemInfo = 0;
 
 	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
 	if (!GetVersionEx((OSVERSIONINFO*) &osvi))
 	{
 		return false;
 	}
 
 	if ((osvi.dwMajorVersion < 5) || ((osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion == 0)))
 	{
 		return false;
 	}
 
 	_GetNativeSystemInfo = (def_GetNativeSystemInfo)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetNativeSystemInfo");
 	if (_GetNativeSystemInfo)
 	{
 		_GetNativeSystemInfo(&si);
 	}
 	else
 	{
 		GetSystemInfo(&si);
 	}
 
-	if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 && osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
+	bool isX64 = si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64;
+	bool isX86 = si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL;
+
+	DWORD major = osvi.dwMajorVersion;
+	DWORD minor = osvi.dwMinorVersion;
+
+	if(isX64 && major == 5 && minor == 2)
+	{
+		currenOS = WIN_XP_64;
+	}
+	else if(isX86 && major == 5 && minor == 1)
+	{
+		currenOS = WIN_XP_32;
+	}
+	if(isX64 && major == 6 && minor == 0)
 	{
 		currenOS = WIN_VISTA_64;
 	}
-	else if(si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL && osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
+	else if(isX86 && major == 6 && minor == 0)
 	{
 		currenOS = WIN_VISTA_32;
 	}
-	else if(si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 && osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
+	else if(isX64 && major == 6 && minor == 1)
 	{
 		currenOS = WIN_7_64;
 	}
-	else if(si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL && osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
+	else if(isX86 && major == 6 && minor == 1)
 	{
 		currenOS = WIN_7_32;
 	}
-	else if(si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 && osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
+	else if(isX64 && major == 6 && minor == 2)
 	{
-		currenOS = WIN_XP_64;
+		currenOS = WIN_8_64;
 	}
-	else if(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
+	else if(isX86 && major == 6 && minor == 2)
 	{
-		currenOS = WIN_XP_32;
+		currenOS = WIN_8_32;
 	}
 	else
 	{
 		currenOS = UNKNOWN_OS;
 	}
 
 	return (currenOS != UNKNOWN_OS);
-}
\ No newline at end of file
+}
diff --git a/Scylla/SystemInformation.h b/Scylla/SystemInformation.h
index ccac3a4..e687a6a 100644
--- a/Scylla/SystemInformation.h
+++ b/Scylla/SystemInformation.h
@@ -1,22 +1,24 @@
 #pragma once
 
 #include <windows.h>
 
 enum OPERATING_SYSTEM {
 	UNKNOWN_OS,
 	WIN_XP_32,
 	WIN_XP_64,
 	WIN_VISTA_32,
 	WIN_VISTA_64,
 	WIN_7_32,
 	WIN_7_64,
+	WIN_8_32,
+	WIN_8_64
 };
 
 typedef void (WINAPI *def_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
 
 class SystemInformation {
 public:
 	static OPERATING_SYSTEM currenOS;
 	static bool getSystemInformation();
 private:
-};
\ No newline at end of file
+};