/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20180427 (64-bit version)(RM)
 * Copyright (c) 2000 - 2018 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of SSDT-5-CpuSsdt.aml, Sat May 26 18:40:30 2018
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000017AE (6062)
 *     Revision         0x02
 *     Checksum         0xB5
 *     OEM ID           "LENOVO"
 *     OEM Table ID     "CpuSsdt"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20160527 (538314023)
 */
DefinitionBlock ("", "SSDT", 2, "LENOVO", "CpuSsdt", 0x00003000)
{
    External (_PR_.PR00, DeviceObj)    // (from opcode)
    External (_PR_.PR01, DeviceObj)    // (from opcode)
    External (_PR_.PR02, DeviceObj)    // (from opcode)
    External (_PR_.PR03, DeviceObj)    // (from opcode)
    External (_PR_.PR04, DeviceObj)    // (from opcode)
    External (_PR_.PR05, DeviceObj)    // (from opcode)
    External (_PR_.PR06, DeviceObj)    // (from opcode)
    External (_PR_.PR07, DeviceObj)    // (from opcode)
    External (_PR_.PR08, DeviceObj)    // (from opcode)
    External (_PR_.PR09, DeviceObj)    // (from opcode)
    External (_PR_.PR10, DeviceObj)    // (from opcode)
    External (_PR_.PR11, DeviceObj)    // (from opcode)
    External (_PR_.PR12, DeviceObj)    // (from opcode)
    External (_PR_.PR13, DeviceObj)    // (from opcode)
    External (_PR_.PR14, DeviceObj)    // (from opcode)
    External (_PR_.PR15, DeviceObj)    // (from opcode)
    External (_SB_.OSCP, IntObj)    // (from opcode)
    External (OSYS, UnknownObj)    // (from opcode)

    Scope (\)
    {
        Name (SSDT, Package (0x15)
        {
            "CPU0IST ", 
            0x5B51B098, 
            0x000005EE, 
            "APIST   ", 
            0x5B4A1018, 
            0x00000D14, 
            "CPU0CST ", 
            0x5B4A2698, 
            0x000003FF, 
            "APCST   ", 
            0x5B51BB18, 
            0x0000030A, 
            "CPU0HWP ", 
            0x5B51B718, 
            0x000000BA, 
            "APHWP   ", 
            0x5B4A0018, 
            0x00000317, 
            "HWPLVT  ", 
            0x5B4A2018, 
            0x00000628
        })
        Name (\PC00, 0x80000000)
        Name (\PC01, 0x80000000)
        Name (\PC02, 0x80000000)
        Name (\PC03, 0x80000000)
        Name (\PC04, 0x80000000)
        Name (\PC05, 0x80000000)
        Name (\PC06, 0x80000000)
        Name (\PC07, 0x80000000)
        Name (\PC08, 0x80000000)
        Name (\PC09, 0x80000000)
        Name (\PC10, 0x80000000)
        Name (\PC11, 0x80000000)
        Name (\PC12, 0x80000000)
        Name (\PC13, 0x80000000)
        Name (\PC14, 0x80000000)
        Name (\PC15, 0x80000000)
        Name (\SDTL, Zero)
    }

    Scope (\_PR)
    {
        Name (CTPC, Zero)
        OperationRegion (PNVS, SystemMemory, 0x4D567000, 0x006C)
        Field (PNVS, AnyAcc, Lock, Preserve)
        {
            PGRV,   8, 
            CFGD,   32, 
            Offset (0x06), 
            ACRT,   8, 
            APSV,   8, 
            AAC0,   8, 
            CPID,   32, 
            CPPC,   8, 
            CLVL,   8, 
            CBMI,   8, 
            PL10,   16, 
            PL20,   16, 
            PLW0,   8, 
            CTC0,   8, 
            TAR0,   8, 
            PPC0,   8, 
            PL11,   16, 
            PL21,   16, 
            PLW1,   8, 
            CTC1,   8, 
            TAR1,   8, 
            PPC1,   8, 
            PL12,   16, 
            PL22,   16, 
            PLW2,   8, 
            CTC2,   8, 
            TAR2,   8, 
            PPC2,   8, 
            C3MW,   8, 
            C6MW,   8, 
            C7MW,   8, 
            CDMW,   8, 
            C3LT,   16, 
            C6LT,   16, 
            C7LT,   16, 
            CDLT,   16, 
            CDLV,   16, 
            CDPW,   16, 
            MPMF,   8, 
            DTSE,   8, 
            DTS1,   8, 
            DTS2,   8, 
            DTSF,   8, 
            PDTS,   8, 
            PKGA,   8, 
            DTS3,   8, 
            DTS4,   8, 
            BGMA,   64, 
            BGMS,   8, 
            BGIA,   16, 
            BGIL,   16, 
            DSIA,   16, 
            DSIL,   8, 
            DSAE,   8, 
            EPCS,   8, 
            EMNA,   64, 
            ELNG,   64, 
            HWPV,   8, 
            HWPA,   16, 
            HWPL,   16, 
            POWS,   8, 
            HDCE,   8, 
            HWPI,   8, 
            DTSI,   8
        }

        OperationRegion (IO_D, SystemIO, \_PR.DSIA, \_PR.DSIL)
        Field (IO_D, ByteAcc, NoLock, Preserve)
        {
            TRPD,   8
        }

        OperationRegion (IO_P, SystemIO, \_PR.BGIA, \_PR.BGIL)
        Field (IO_P, ByteAcc, NoLock, Preserve)
        {
            TRPF,   8
        }
    }

    Scope (\_PR.PR00)
    {
        Name (HI0, Zero)
        Name (HC0, Zero)
        Name (HW0, Zero)
        Name (HW2, Zero)
        Method (_PDC, 1, Serialized)  // _PDC: Processor Driver Capabilities
        {
            Store (CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, Serialized)  // _OSC: Operating System Capabilities
        {
            Store (COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Name (STS0, Buffer (0x04)
        {
             0x00, 0x00, 0x00, 0x00                         
        })
        Method (CPDC, 1, Serialized)
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Concatenate (STS0, TEMP, Local2)
            Return (COSC (ToUUID ("4077a616-290c-47be-9ebd-d87058713953"), REVS, SIZE, Local2))
        }

        Name (UID0, ToUUID ("4077a616-290c-47be-9ebd-d87058713953"))
        OperationRegion (SMIP, SystemIO, 0xB2, One)
        Field (SMIP, ByteAcc, NoLock, Preserve)
        {
            IOB2,   8
        }

        Method (COSC, 4, Serialized)
        {
            CreateDWordField (Arg3, Zero, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            CreateDWordField (UID0, Zero, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, STS0)
                Return (Arg3)
            }

            If (LNotEqual (Arg1, One))
            {
                Store (0x0A, STS0)
                Return (Arg3)
            }

            If (LNot (LGreaterEqual (Arg2, 0x02)))
            {
                Store (0x02, STS0)
                Return (Arg3)
            }

            If (Not (And (STS0, One)))
            {
                If (And (CAP0, 0x2000))
                {
                    Store (Zero, \_PR.HDCE)
                }
                Else
                {
                    Store (0x28, IOB2)
                }
            }

            Return (Arg3)
        }

        Method (GCAP, 1, Serialized)
        {
            CreateDWordField (Arg0, Zero, STS0)
            CreateDWordField (Arg0, 0x04, CAP0)
            If (LOr (LEqual (STS0, 0x06), LEqual (STS0, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS0, One))
            {
                And (CAP0, 0x0BFF, CAP0)
                Return (Zero)
            }

            Or (And (PC00, 0x7FFFFFFF), CAP0, PC00)
            If (And (CFGD, 0x7A))
            {
                If (LAnd (LAnd (And (CFGD, 0x0200), And (PC00, 0x18)), LNot (And (SDTL, 0x02))))
                {
                    Or (SDTL, 0x02, SDTL)
                    OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08)))
                    Load (CST0, HC0)
                }
            }

            If (LAnd (And (CFGD, One), LNot (And (SDTL, 0x08))))
            {
                Or (SDTL, 0x08, SDTL)
                OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, One)), DerefOf (Index (SSDT, 0x02)))
                Load (IST0, HI0)
            }

            If (LGreaterEqual (OSYS, 0x07DF))
            {
                If (LAnd (And (CFGD, 0x00400000), LNot (And (SDTL, 0x40))))
                {
                    If (And (\_SB.OSCP, 0x40))
                    {
                        Or (SDTL, 0x40, SDTL)
                        OperationRegion (HWP0, SystemMemory, DerefOf (Index (SSDT, 0x0D)), DerefOf (Index (SSDT, 0x0E)))
                        Load (HWP0, HW0)
                        If (And (CFGD, 0x00800000))
                        {
                            OperationRegion (HWPL, SystemMemory, DerefOf (Index (SSDT, 0x13)), DerefOf (Index (SSDT, 0x14)))
                            Load (HWPL, HW2)
                        }
                    }

                    If (And (\_SB.OSCP, 0x20))
                    {
                        If (LNot (And (\_SB.OSCP, 0x40)))
                        {
                            Store (Zero, HWPV)
                        }
                    }

                    If (And (\_SB.OSCP, 0x40))
                    {
                        Store (0x02, HWPV)
                    }
                }
            }

            If (LNot (And (PC00, 0x1000)))
            {
                Store (0x27, IOB2)
            }

            Return (Zero)
        }
    }

    Scope (\_PR.PR01)
    {
        Name (HI1, Zero)
        Name (HC1, Zero)
        Name (HW1, Zero)
        Method (_PDC, 1, Serialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, Serialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, Serialized)
        {
            CreateDWordField (Arg0, Zero, ST01)
            CreateDWordField (Arg0, 0x04, CP01)
            If (LOr (LEqual (ST01, 0x06), LEqual (ST01, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST01, One))
            {
                And (CP01, 0x0BFF, CP01)
                Return (Zero)
            }

            Or (And (PC01, 0x7FFFFFFF), CP01, PC01)
            If (LEqual (And (PC01, 0x09), 0x09))
            {
                APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                HWPT ()
            }

            If (And (PC01, 0x18))
            {
                APCT ()
            }

            Store (PC01, PC00)
            Return (Zero)
        }

        Method (APCT, 0, Serialized)
        {
            If (LAnd (And (CFGD, 0x7A), LNot (And (SDTL, 0x20))))
            {
                Or (SDTL, 0x20, SDTL)
                OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B)))
                Load (CST1, HC1)
            }
        }

        Method (APPT, 0, Serialized)
        {
            If (LAnd (And (CFGD, One), LNot (And (SDTL, 0x10))))
            {
                Or (SDTL, 0x10, SDTL)
                OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05)))
                Load (IST1, HI1)
            }
        }

        Method (HWPT, 0, Serialized)
        {
            If (LGreaterEqual (OSYS, 0x07DF))
            {
                If (LAnd (And (CFGD, 0x00400000), LNot (And (SDTL, 0x80))))
                {
                    Or (SDTL, 0x80, SDTL)
                    OperationRegion (HWP1, SystemMemory, DerefOf (Index (SSDT, 0x10)), DerefOf (Index (SSDT, 0x11)))
                    Load (HWP1, HW1)
                }
            }
        }
    }

    Scope (\_PR.PR02)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST02)
            CreateDWordField (Arg0, 0x04, CP02)
            If (LOr (LEqual (ST02, 0x06), LEqual (ST02, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST02, One))
            {
                And (CP02, 0x0BFF, CP02)
                Return (Zero)
            }

            Or (And (PC02, 0x7FFFFFFF), CP02, PC02)
            If (LEqual (And (PC02, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC02, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC02, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR03)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST03)
            CreateDWordField (Arg0, 0x04, CP03)
            If (LOr (LEqual (ST03, 0x06), LEqual (ST03, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST03, One))
            {
                And (CP03, 0x0BFF, CP03)
                Return (Zero)
            }

            Or (And (PC03, 0x7FFFFFFF), CP03, PC03)
            If (LEqual (And (PC03, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC03, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC03, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR04)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST04)
            CreateDWordField (Arg0, 0x04, CP04)
            If (LOr (LEqual (ST04, 0x06), LEqual (ST04, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST04, One))
            {
                And (CP04, 0x0BFF, CP04)
                Return (Zero)
            }

            Or (And (PC04, 0x7FFFFFFF), CP04, PC04)
            If (LEqual (And (PC04, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC04, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC04, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR05)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST05)
            CreateDWordField (Arg0, 0x04, CP05)
            If (LOr (LEqual (ST05, 0x06), LEqual (ST05, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST05, One))
            {
                And (CP05, 0x0BFF, CP05)
                Return (Zero)
            }

            Or (And (PC05, 0x7FFFFFFF), CP05, PC05)
            If (LEqual (And (PC05, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC05, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC05, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR06)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST06)
            CreateDWordField (Arg0, 0x04, CP06)
            If (LOr (LEqual (ST06, 0x06), LEqual (ST06, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST06, One))
            {
                And (CP06, 0x0BFF, CP06)
                Return (Zero)
            }

            Or (And (PC06, 0x7FFFFFFF), CP06, PC06)
            If (LEqual (And (PC06, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC06, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC06, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR07)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST07)
            CreateDWordField (Arg0, 0x04, CP07)
            If (LOr (LEqual (ST07, 0x06), LEqual (ST07, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST07, One))
            {
                And (CP07, 0x0BFF, CP07)
                Return (Zero)
            }

            Or (And (PC07, 0x7FFFFFFF), CP07, PC07)
            If (LEqual (And (PC07, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC07, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC07, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR08)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST08)
            CreateDWordField (Arg0, 0x04, CP08)
            If (LOr (LEqual (ST08, 0x06), LEqual (ST08, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST08, One))
            {
                And (CP08, 0x0BFF, CP08)
                Return (Zero)
            }

            Or (And (PC08, 0x7FFFFFFF), CP08, PC08)
            If (LEqual (And (PC08, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC08, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC08, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR09)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST09)
            CreateDWordField (Arg0, 0x04, CP09)
            If (LOr (LEqual (ST09, 0x06), LEqual (ST09, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST09, One))
            {
                And (CP09, 0x0BFF, CP09)
                Return (Zero)
            }

            Or (And (PC09, 0x7FFFFFFF), CP09, PC09)
            If (LEqual (And (PC09, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC09, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC09, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR10)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST10)
            CreateDWordField (Arg0, 0x04, CP10)
            If (LOr (LEqual (ST10, 0x06), LEqual (ST10, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST10, One))
            {
                And (ST10, 0x0BFF, CP10)
                Return (Zero)
            }

            Or (And (PC10, 0x7FFFFFFF), CP10, PC10)
            If (LEqual (And (PC10, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC10, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC10, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR11)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST11)
            CreateDWordField (Arg0, 0x04, CP11)
            If (LOr (LEqual (ST11, 0x06), LEqual (ST11, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST11, One))
            {
                And (ST11, 0x0BFF, CP11)
                Return (Zero)
            }

            Or (And (PC11, 0x7FFFFFFF), CP11, PC11)
            If (LEqual (And (PC11, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC11, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC11, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR12)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST12)
            CreateDWordField (Arg0, 0x04, CP12)
            If (LOr (LEqual (ST12, 0x06), LEqual (ST12, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST12, One))
            {
                And (ST12, 0x0BFF, CP12)
                Return (Zero)
            }

            Or (And (PC12, 0x7FFFFFFF), CP12, PC12)
            If (LEqual (And (PC12, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC12, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC12, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR13)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST13)
            CreateDWordField (Arg0, 0x04, CP13)
            If (LOr (LEqual (ST13, 0x06), LEqual (ST13, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST13, One))
            {
                And (ST13, 0x0BFF, CP13)
                Return (Zero)
            }

            Or (And (PC13, 0x7FFFFFFF), CP13, PC13)
            If (LEqual (And (PC13, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC13, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC13, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR14)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST14)
            CreateDWordField (Arg0, 0x04, CP14)
            If (LOr (LEqual (ST14, 0x06), LEqual (ST14, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST14, One))
            {
                And (ST14, 0x0BFF, CP14)
                Return (Zero)
            }

            Or (And (PC14, 0x7FFFFFFF), CP14, PC14)
            If (LEqual (And (PC14, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC14, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC14, PC00)
            Return (Zero)
        }
    }

    Scope (\_PR.PR15)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.PR00.CPDC (Arg0), Local0)
            GCAP (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.PR00.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, ST15)
            CreateDWordField (Arg0, 0x04, CP15)
            If (LOr (LEqual (ST15, 0x06), LEqual (ST15, 0x0A)))
            {
                Return (Zero)
            }

            If (And (ST15, One))
            {
                And (ST15, 0x0BFF, CP15)
                Return (Zero)
            }

            Or (And (PC15, 0x7FFFFFFF), CP15, PC15)
            If (LEqual (And (PC15, 0x09), 0x09))
            {
                \_PR.PR01.APPT ()
            }

            If (And (\_SB.OSCP, 0x20))
            {
                \_PR.PR01.HWPT ()
            }

            If (And (PC15, 0x18))
            {
                \_PR.PR01.APCT ()
            }

            Store (PC15, PC00)
            Return (Zero)
        }
    }
}