# Path: compilertools/processors/_core.py
# class ProcessorBase(BaseClass):
#     """Base class for CPU"""
# 
#     def __init__(self, current_machine=False):
#         BaseClass.__init__(self)
#         self["current_machine"] = current_machine
#         self._default["current_machine"] = False
#         self._default["vendor"] = ""
#         self._default["brand"] = ""
#         self._default["features"] = []
# 
#     @BaseClass._memoized_property
#     def arch(self):
#         """processor architecture
# 
#         Returns
#         -------
#         str
#             Architecture name."""
#         return self.__module__.rsplit(".", 1)[-1]


from compilertools.processors import ProcessorBase as _ProcessorBase
        from platform import system
        from ctypes import (
            c_void_p,
            c_size_t,
            c_ulong,
            c_uint32,
            c_int,
            CFUNCTYPE,
            memmove,
        )
                from ctypes import windll
                from ctypes import cdll
        from struct import pack
        -------
        str
            Manufacturer ID."""
        if not self.current_machine:
            return

        reg = Cpuid()
        return Cpuid.registers_to_str(reg.ebx, reg.edx, reg.ecx)

    @_ProcessorBase._memoized_property
    def brand(self):
        """CPU's brand from CPUID

        Returns
        -------
        str
            Brand."""
        if not self.current_machine:
            return

        if self.cpuid_highest_extended_function < 0x80000004:
            return

        brand_list = []
        for eax in (0x80000002, 0x80000003, 0x80000004):
            reg = Cpuid(eax)
            brand_list += [reg.eax, reg.ebx, reg.ecx, reg.edx]
        return Cpuid.registers_to_str(*brand_list)

    @_ProcessorBase._memoized_property

# Path: compilertools/processors/_core.py
# class ProcessorBase(BaseClass):
#     """Base class for CPU"""
# 
#     def __init__(self, current_machine=False):
#         BaseClass.__init__(self)
#         self["current_machine"] = current_machine
#         self._default["current_machine"] = False
#         self._default["vendor"] = ""
#         self._default["brand"] = ""
#         self._default["features"] = []
# 
#     @BaseClass._memoized_property
#     def arch(self):
#         """processor architecture
# 
#         Returns
#         -------
#         str
#             Architecture name."""
#         return self.__module__.rsplit(".", 1)[-1]


# Path: compilertools/processors/x86_32.py
from compilertools.processors import ProcessorBase as _ProcessorBase
        from platform import system
        from ctypes import (
            c_void_p,
            c_size_t,
            c_ulong,
            c_uint32,
            c_int,
            CFUNCTYPE,
            memmove,
        )
                from ctypes import windll
                from ctypes import cdll
        from struct import pack

        -------
        str
            Manufacturer ID."""
        if not self.current_machine:
            return

        reg = Cpuid()
        return Cpuid.registers_to_str(reg.ebx, reg.edx, reg.ecx)

    @_ProcessorBase._memoized_property
    def brand(self):
        """CPU's brand from CPUID

        Returns
        -------
        str
            Brand."""
        if not self.current_machine:
            return

        if self.cpuid_highest_extended_function < 0x80000004:
            return

        brand_list = []
        for eax in (0x80000002, 0x80000003, 0x80000004):
            reg = Cpuid(eax)
            brand_list += [reg.eax, reg.ebx, reg.ecx, reg.edx]
        return Cpuid.registers_to_str(*brand_list)

    @_ProcessorBase._memoized_property

    def features(self):