diff --git a/src/cpu.cpp b/src/cpu.cpp
index a5f39ee..daab15b 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -34,13 +34,28 @@
     location::locationCode(result);
 }
 
-void Cpu::family(const uint8_t value)
+static constexpr uint8_t processorFamily2Indicator = 0xfe;
+void Cpu::family(const uint8_t family, const uint16_t family2)
 {
-    std::map<uint8_t, const char*>::const_iterator it = familyTable.find(value);
+    std::map<uint8_t, const char*>::const_iterator it =
+        familyTable.find(family);
     if (it == familyTable.end())
     {
         processor::family("Unknown Processor Family");
     }
+    else if (it->first == processorFamily2Indicator)
+    {
+        std::map<uint16_t, const char*>::const_iterator it2 =
+            family2Table.find(family2);
+        if (it2 == family2Table.end())
+        {
+            processor::family("Unknown Processor Family");
+        }
+        else
+        {
+            processor::family(it2->second);
+        }
+    }
     else
     {
         processor::family(it->second);
@@ -140,7 +155,7 @@
     present(true);
 
     // this class is for type CPU  //offset 5h
-    family(cpuInfo->family); // offset 6h
+    family(cpuInfo->family, cpuInfo->family2); // offset 6h and 28h
     manufacturer(cpuInfo->manufacturer, cpuInfo->length,
                  dataIn);                               // offset 7h
     id(cpuInfo->id);                                    // offset 8h
