/*
  RSD PTR: OEM=PTLTD, ACPI_Rev=1.0x (0)
	RSDT=0xbff25717, cksum=26
 */
/*
  RSDT: Length=64, Revision=1, Checksum=174,
	OEMID=PTLTD, OEM Table ID=  RSDT, OEM Revision=0x6040000,
	Creator ID= LTP, Creator Revision=0x0
	Entries={ 0xbff28abe, 0xbff28b32, 0xbff28d9a, 0xbff28eaa, 0xbff28efa, 0xbff28f9c, 0xbff28fd8 }
 */
/*
  FACP: Length=116, Revision=1, Checksum=60,
	OEMID=NVIDIA, OEM Table ID=CK8S, OEM Revision=0x6040000,
	Creator ID=PTL_, Creator Revision=0xf4240
 	FACS=0xbff29fc0, DSDT=0xbff25757
	INT_MODEL=PIC
	Preferred_PM_Profile=Unspecified (0)
	SCI_INT=9
	SMI_CMD=0x842e, ACPI_ENABLE=0xf0, ACPI_DISABLE=0xf1, S4BIOS_REQ=0x0
	PSTATE_CNT=0x0
	PM1a_EVT_BLK=0x8000-0x8003
	PM1a_CNT_BLK=0x8004-0x8005
	PM2_CNT_BLK=0x801c-0x801c
	PM_TMR_BLK=0x8008-0x800b
	GPE0_BLK=0x8020-0x8027
	P_LVL2_LAT=65535 us, P_LVL3_LAT=65535 us
	FLUSH_SIZE=0, FLUSH_STRIDE=0
	DUTY_OFFSET=1, DUTY_WIDTH=0
	DAY_ALRM=125, MON_ALRM=126, CENTURY=50
	IAPC_BOOT_ARCH={8042}
	Flags={WBINVD,PROC_C1,SLP_BUTTON,RTC_S4}
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=0
 */
/*
  DSDT: Length=13159, Revision=1, Checksum=219,
	OEMID=NVIDIA, OEM Table ID=CK8, OEM Revision=0x6040000,
	Creator ID=MSFT, Creator Revision=0x100000b
 */
/*
  SSDT: Length=616, Revision=1, Checksum=29,
	OEMID=PTLTD, OEM Table ID=POWERNOW, OEM Revision=0x6040000,
	Creator ID= LTP, Creator Revision=0x1
 */
/*
  SRAT: Length=272, Revision=1, Checksum=69,
	OEMID=AMD, OEM Table ID=HAMMER, OEM Revision=0x6040000,
	Creator ID=AMD, Creator Revision=0x1
 */
/*
  SPCR: Length=80, Revision=1, Checksum=160,
	OEMID=PTLTD, OEM Table ID=$UCRTBL$, OEM Revision=0x6040000,
	Creator ID=PTL, Creator Revision=0x1
 */
/*
  APIC: Length=162, Revision=1, Checksum=42,
	OEMID=PTLTD, OEM Table ID=	 APIC, OEM Revision=0x6040000,
	Creator ID= LTP, Creator Revision=0x0
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

	Type=Local APIC
	ACPI CPU=0
	Flags={ENABLED}
	APIC ID=0

	Type=Local APIC
	ACPI CPU=1
	Flags={ENABLED}
	APIC ID=1

	Type=Local APIC
	ACPI CPU=2
	Flags={ENABLED}
	APIC ID=2

	Type=Local APIC
	ACPI CPU=3
	Flags={ENABLED}
	APIC ID=3

	Type=IO APIC
	APIC ID=4
	INT BASE=0
	ADDR=0x00000000fec00000

	Type=IO APIC
	APIC ID=5
	INT BASE=24
	ADDR=0x00000000d9000000

	Type=IO APIC
	APIC ID=6
	INT BASE=31
	ADDR=0x00000000d9001000

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-lo, Trigger=level}

	Type=NMI
	INTR=28
	Flags={Polarity=active-hi, Trigger=edge}

	Type=NMI
	INTR=35
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=0
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=1
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=2
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=3
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}
 */
/*
  MCFG: Length=60, Revision=1, Checksum=232,
	OEMID=PTLTD, OEM Table ID=  MCFG, OEM Revision=0x6040000,
	Creator ID= LTP, Creator Revision=0x0

	Base Address= 0x00000000e0000000
	Segment Group= 0x0000
	Start Bus= 0
	End Bus= 127
 */
/*
  BOOT: Length=40, Revision=1, Checksum=164,
	OEMID=PTLTD, OEM Table ID=$SBFTBL$, OEM Revision=0x6040000,
	Creator ID= LTP, Creator Revision=0x1
 */
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20051021
 *
 * Disassembly of /tmp/acpidump.Zj20eQ, Wed Aug  9 22:13:04 2006
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "NVIDIA", "CK8", 0x06040000)
{
    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S1, Package (0x04)
    {
        0x01, 
        0x01, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x06, 
        0x06, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x07, 
        0x00, 
        0x00
    })
    Name (SX, 0x00)
    Method (\_PTS, 1, NotSerialized)
    {
        Store (0xBB, DBUG)
        And (PM1S, 0x7FFF, PM1S)
        Store (0xFFFFFFFF, GP0S)
        If (LEqual (Arg0, 0x01))
        {
            Store (PMES, Local0)
            Or (Local0, PMES, PMES)
            Store (PM0S, Local0)
            Or (Local0, PM0S, PM0S)
            Store (0x01, PME0)
            Or (0x18, KB0A, KB0A)
            Store (0x00012029, GP0E)
            \_SB.PCI0.LPC0.SIO.ENFG ()
            Store (0x07, \_SB.PCI0.LPC0.SIO.LDN)
            Store (\_SB.PCI0.LPC0.SIO.CRF0, Local0)
            And (Local0, 0x9F, Local0)
            Store (\_SB.PCI0.LPC0.KBC0.SLEP, Local1)
            Store (\_SB.PCI0.LPC0.MSE0.SLEP, Local2)
            If (LAnd (LEqual (Local1, 0x00), LEqual (Local2, 0x01)))
            {
                Or (Local0, 0x40, Local0)
            }

            If (LAnd (LEqual (Local1, 0x01), LEqual (Local2, 0x00)))
            {
                Or (Local0, 0x20, Local0)
            }

            Store (Local0, \_SB.PCI0.LPC0.SIO.CRF0)
            \_SB.PCI0.LPC0.SIO.EXFG ()
            Store (0x01, LED1)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (0x00, LED1)
        }

        If (LEqual (Arg0, 0x05))
        {
            Store (0x00, LED1)
        }
    }

    Method (\_WAK, 1, NotSerialized)
    {
        Store (Arg0, DBUG)
        If (LEqual (Arg0, 0x01))
        {
            \_SB.PCI0.LPC0.SIO.ENFG ()
            Store (0x07, \_SB.PCI0.LPC0.SIO.LDN)
            And (0x9F, \_SB.PCI0.LPC0.SIO.CRF0, \_SB.PCI0.LPC0.SIO.CRF0)
            \_SB.PCI0.LPC0.SIO.EXFG ()
            Store (0x03, LED1)
            And (0xFFFFFFFE, GP0E, GP0E)
        }

        Store (0x00, \_SB.PCI0.SMB0.SMPM)
    }

    Scope (\_PR)
    {
        Processor (CPU0, 0x00, 0x00008010, 0x06) {}
        Processor (CPU1, 0x01, 0x00000000, 0x00) {}
        Processor (CPU2, 0x02, 0x00000000, 0x00) {}
        Processor (CPU3, 0x03, 0x00000000, 0x00) {}
    }

    OperationRegion (MAPS, SystemIO, 0x8000, 0x02)
    Field (MAPS, ByteAcc, NoLock, Preserve)
    {
        PM1S,   16
    }

    OperationRegion (MAPE, SystemIO, 0x8002, 0x02)
    Field (MAPE, ByteAcc, NoLock, Preserve)
    {
        PM1E,   16
    }

    OperationRegion (MAGS, SystemIO, 0x8020, 0x04)
    Field (MAGS, ByteAcc, NoLock, Preserve)
    {
        GP0S,   32
    }

    OperationRegion (MAGE, SystemIO, 0x8024, 0x04)
    Field (MAGE, ByteAcc, NoLock, Preserve)
    {
        GP0E,   32
    }

    OperationRegion (Z000, SystemIO, 0x0600, 0x01)
    Field (Z000, ByteAcc, NoLock, Preserve)
    {
        PM0S,   8
    }

    OperationRegion (Z001, SystemIO, 0x0602, 0x01)
    Field (Z001, ByteAcc, NoLock, Preserve)
    {
        PME0,   8
    }

    OperationRegion (Z002, SystemIO, 0x0604, 0x01)
    Field (Z002, ByteAcc, NoLock, Preserve)
    {
        PMES,   8
    }

    OperationRegion (Z003, SystemIO, 0x0605, 0x01)
    Field (Z003, ByteAcc, NoLock, Preserve)
    {
        PMS2,   8
    }

    OperationRegion (Z004, SystemIO, 0x0606, 0x01)
    Field (Z004, ByteAcc, NoLock, Preserve)
    {
        PMS3,   8
    }

    OperationRegion (Z005, SystemIO, 0x0607, 0x01)
    Field (Z005, ByteAcc, NoLock, Preserve)
    {
        PMS4,   8
    }

    OperationRegion (Z006, SystemIO, 0x0608, 0x01)
    Field (Z006, ByteAcc, NoLock, Preserve)
    {
        PMS5,   8
    }

    OperationRegion (KBCS, SystemIO, 0x060A, 0x01)
    Field (KBCS, ByteAcc, NoLock, Preserve)
    {
        KB0A,   8
    }

    OperationRegion (Z05D, SystemIO, 0x065D, 0x01)
    Field (Z05D, ByteAcc, NoLock, Preserve)
    {
        LED1,   8
    }

    OperationRegion (PCIE, SystemIO, 0x0CF8, 0x08)
    Field (PCIE, ByteAcc, NoLock, Preserve)
    {
        XIND,   32, 
        XDAT,   32
    }

    Scope (\_SI)
    {
        Method (_MSG, 1, NotSerialized)
        {
        }

        Method (_SST, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x01))
            {
                Store (0xAA, DBUG)
                And (PM1S, 0x7FFF, PM1S)
                Notify (\_SB.PWRB, 0x02)
            }

            If (LEqual (Arg0, 0x04)) {}
        }
    }

    Name (OSYS, 0x00)
    Scope (\_GPE)
    {
        Method (_L00, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.P2P0, 0x02)
            Notify (\_SB.PWRB, 0x02)
        }

        Method (_L03, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.LPC0.SIO.COM1, 0x02)
        }

        Method (_L05, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB2, 0x02)
        }

        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB0, 0x02)
        }

        Method (_L10, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.LPC0.KBC0, 0x02)
            Notify (\_SB.PCI0.LPC0.MSE0, 0x02)
            Notify (\_SB.PWRB, 0x02)
        }

        Method (_L11, 0, NotSerialized)
        {
            Store (0x11, DBUG)
            Notify (\_SB.PCI0.XVR0, 0x02)
            Notify (\_SB.PCI0.XVR1, 0x02)
            Notify (\_SB.PCI0.XVR2, 0x02)
            Notify (\_SB.PWRB, 0x02)
            And (GP0E, 0xFFFDFFFF, GP0E)
            Store (0x8002004C, XIND)
            Store (XDAT, XDAT)
            Store (0x8003004C, XIND)
            Store (XDAT, XDAT)
            Store (0x00020000, GP0S)
            Store (0x4000, PM1S)
        }
    }

    Scope (\_SB)
    {
        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Method (_STA, 0, NotSerialized)
            {
                Return (0x0B)
            }
        }

        Device (PCI0)
        {
            Method (_INI, 0, NotSerialized)
            {
                If (LEqual (SizeOf (_OS), 0x14))
                {
                    Store (0x07D0, OSYS)
                }
                Else
                {
                    If (LEqual (SizeOf (_OS), 0x27))
                    {
                        Store (0x07CF, OSYS)
                    }
                    Else
                    {
                        Store (0x07CE, OSYS)
                    }
                }
            }

            Name (_ADR, 0x00)
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x01)
            Method (_S3D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }

            Scope (\_SB)
            {
                OperationRegion (ASLD, SystemMemory, 0xBFF29DBC, 0x00000100)
                Field (ASLD, AnyAcc, NoLock, Preserve)
                {
                    TOM,    32
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (CBUF, ResourceTemplate ()
                {
                    WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x007F,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0080,             // Address Length
                        ,,)
                    IO (Decode16,
                        0x0CF8,             // Address Range Minimum
                        0x0CF8,             // Address Range Maximum
                        0x01,               // Address Alignment
                        0x08,               // Address Length
                        )
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x0CF7,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0CF8,             // Address Length
                        ,,, TypeStatic)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0D00,             // Address Range Minimum
                        0xFFFF,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0xF300,             // Address Length
                        ,,, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Address Space Granularity
                        0x000A0000,         // Address Range Minimum
                        0x000BFFFF,         // Address Range Maximum
                        0x00000000,         // Address Translation Offset
                        0x00020000,         // Address Length
                        ,,, AddressRangeMemory, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Address Space Granularity
                        0x000C0000,         // Address Range Minimum
                        0x000DFFFF,         // Address Range Maximum
                        0x00000000,         // Address Translation Offset
                        0x00020000,         // Address Length
                        ,,, AddressRangeMemory, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Address Space Granularity
                        0x00000000,         // Address Range Minimum
                        0x00000000,         // Address Range Maximum
                        0x00000000,         // Address Translation Offset
                        0x00000000,         // Address Length
                        ,,, AddressRangeMemory, TypeStatic)
                })
                CreateWordField (CBUF, 0x30, PIMN)
                CreateWordField (CBUF, 0x36, PILN)
                CreateWordField (CBUF, 0x32, PIMX)
                CreateDWordField (CBUF, 0x76, PMMN)
                CreateDWordField (CBUF, 0x82, PMLN)
                CreateDWordField (CBUF, 0x7A, PMMX)
                Multiply (\_SB.TOM, 0x00100000, PMMN)
                And (\_SB.PCI0.K801.PMB1, 0xFFFFFF00, Local0)
                Multiply (Local0, 0x0100, Local0)
                Store (Decrement (Local0), PMMX)
                Subtract (PMMX, PMMN, PMLN)
                Increment (PMLN)
                Store (0x0D00, PIMN)
                Or (\_SB.PCI0.K801.PIL0, 0x0FFF, PIMX)
                Subtract (PIMX, PIMN, PILN)
                Increment (PILN)
                Return (CBUF)
            }

            Name (_PRT, Package (0x06)
            {
                Package (0x04)
                {
                    0x0001FFFF, 
                    0x00, 
                    \_SB.PCI0.LSMB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x01, 
                    \_SB.PCI0.LSMB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    \_SB.PCI0.LUS0, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x01, 
                    \_SB.PCI0.LUS2, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0006FFFF, 
                    0x00, 
                    \_SB.PCI0.LPID, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0008FFFF, 
                    0x00, 
                    \_SB.PCI0.LSI1, 
                    0x00
                }
            })
            Name (_PRW, Package (0x02)
            {
                0x00, 
                0x05
            })
            Device (LPC0)
            {
                Name (_ADR, 0x00010000)
                OperationRegion (P60, PCI_Config, 0x60, 0x02)
                Field (P60, AnyAcc, NoLock, Preserve)
                {
                    PMBR,   16
                }

                OperationRegion (P64, PCI_Config, 0x64, 0x02)
                Field (P64, AnyAcc, NoLock, Preserve)
                {
                    NVSB,   16
                }

                OperationRegion (P68, PCI_Config, 0x68, 0x02)
                Field (P68, AnyAcc, NoLock, Preserve)
                {
                    ANLG,   16
                }

                OperationRegion (P44, PCI_Config, 0x44, 0x04)
                Field (P44, AnyAcc, NoLock, Preserve)
                {
                    MTBA,   32
                }

                Device (PMIO)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x03)
                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (IODM, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x00,               // Address Alignment
                                0x00,               // Address Length
                                )
                        })
                        Name (IORT, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x80,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x40,               // Address Length
                                )
                            IO (Decode16,
                                0x0000,             // Address Range Minimum
                                0x0000,             // Address Range Maximum
                                0x01,               // Address Alignment
                                0x40,               // Address Length
                                )
                        })
                        CreateWordField (IORT, 0x02, I1MN)
                        CreateWordField (IORT, 0x04, I1MX)
                        CreateWordField (IORT, 0x0A, I2MN)
                        CreateWordField (IORT, 0x0C, I2MX)
                        CreateWordField (IORT, 0x12, I3MN)
                        CreateWordField (IORT, 0x14, I3MX)
                        CreateWordField (IORT, 0x1A, I4MN)
                        CreateWordField (IORT, 0x1C, I4MX)
                        CreateWordField (IORT, 0x22, I5MN)
                        CreateWordField (IORT, 0x24, I5MX)
                        CreateWordField (IORT, 0x2A, I6MN)
                        CreateWordField (IORT, 0x2C, I6MX)
                        CreateWordField (IORT, 0x32, I7MN)
                        CreateWordField (IORT, 0x34, I7MX)
                        CreateWordField (IORT, 0x3A, I8MN)
                        CreateWordField (IORT, 0x3C, I8MX)
                        And (PMBR, 0xFFFC, I1MN)
                        Store (I1MN, I1MX)
                        Add (I1MN, 0x80, Local0)
                        Store (Local0, I2MN)
                        Store (Local0, I2MX)
                        And (NVSB, 0xFFFC, I3MN)
                        Store (I3MN, I3MX)
                        Add (I3MN, 0x80, Local0)
                        Store (Local0, I4MN)
                        Store (Local0, I4MX)
                        And (ANLG, 0xFFFC, I5MN)
                        Store (I5MN, I5MX)
                        Add (I5MN, 0x80, Local0)
                        Store (Local0, I6MN)
                        Store (Local0, I6MX)
                        And (\_SB.PCI0.SMB0.SB50, 0xFFFC, I7MN)
                        Store (I7MN, I7MX)
                        And (\_SB.PCI0.SMB0.SB54, 0xFFFC, I8MN)
                        Store (I8MN, I8MX)
                        If (I1MN)
                        {
                            Store (IORT, Local0)
                        }
                        Else
                        {
                            Store (IODM, Local0)
                        }

                        Return (Local0)
                    }
                }

                Device (SYS0)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x01)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Address Range Minimum
                            0x0010,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0022,             // Address Range Minimum
                            0x0022,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x0044,             // Address Range Minimum
                            0x0044,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x1C,               // Address Length
                            )
                        IO (Decode16,
                            0x0062,             // Address Range Minimum
                            0x0062,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0065,             // Address Range Minimum
                            0x0065,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x0B,               // Address Length
                            )
                        IO (Decode16,
                            0x0072,             // Address Range Minimum
                            0x0072,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0074,             // Address Range Minimum
                            0x0074,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x0C,               // Address Length
                            )
                        IO (Decode16,
                            0x0091,             // Address Range Minimum
                            0x0091,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0097,             // Address Range Minimum
                            0x0097,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x09,               // Address Length
                            )
                        IO (Decode16,
                            0x00A2,             // Address Range Minimum
                            0x00A2,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x1E,               // Address Length
                            )
                        IO (Decode16,
                            0x00E0,             // Address Range Minimum
                            0x00E0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x04D0,             // Address Range Minimum
                            0x04D0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0080,             // Address Range Minimum
                            0x0080,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0600,             // Address Range Minimum
                            0x0600,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0x0CA2,             // Address Range Minimum
                            0x0CA2,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x04,               // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFF800000,         // Address Base
                            0x00800000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFEC00000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFEE00000,         // Address Base
                            0x00200000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xD8000000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xD8001000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xE0000000,         // Address Base
                            0x10000000,         // Address Length
                            )
                    })
                }

                Device (PIC0)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Address Range Minimum
                            0x0020,             // Address Range Maximum
                            0x04,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x00A0,             // Address Range Minimum
                            0x00A0,             // Address Range Maximum
                            0x04,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {2}
                    })
                }

                Device (PIT0)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Address Range Minimum
                            0x0040,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IO (Decode16,
                            0x0050,             // Address Range Minimum
                            0x0050,             // Address Range Maximum
                            0x10,               // Address Alignment
                            0x04,               // Address Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Address Range Minimum
                            0x0040,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IO (Decode16,
                            0x0050,             // Address Range Minimum
                            0x0050,             // Address Range Maximum
                            0x10,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        If (\_SB.PCI0.LPC0.MTBA)
                        {
                            Return (BUF0)
                        }

                        Return (BUF1)
                    }
                }

                Device (DMA0)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x09,               // Address Length
                            )
                        IO (Decode16,
                            0x000A,             // Address Range Minimum
                            0x000A,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x06,               // Address Length
                            )
                        IO (Decode16,
                            0x0081,             // Address Range Minimum
                            0x0081,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0087,             // Address Range Minimum
                            0x0087,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0089,             // Address Range Minimum
                            0x0089,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x008F,             // Address Range Minimum
                            0x008F,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x00C0,             // Address Range Minimum
                            0x00C0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x12,               // Address Length
                            )
                        IO (Decode16,
                            0x00D4,             // Address Range Minimum
                            0x00D4,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x0C,               // Address Length
                            )
                        DMA (Compatibility, BusMaster, Transfer8)
                            {4}
                    })
                }

                Device (SPK0)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0061,             // Address Range Minimum
                            0x0061,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                    })
                }

                Device (RTC0)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Address Range Minimum
                            0x0070,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x08,               // Address Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Address Range Minimum
                            0x0070,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x08,               // Address Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        If (\_SB.PCI0.LPC0.MTBA)
                        {
                            Return (BUF0)
                        }

                        Return (BUF1)
                    }
                }

                Device (MTH0)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Address Range Minimum
                            0x00F0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {13}
                    })
                }

                Device (SIO)
                {
                    Name (_HID, EisaId ("PNP0A05"))
                    Name (_STA, 0x0F)
                    Mutex (S192, 0x00)
                    OperationRegion (SMC1, SystemIO, 0x4E, 0x02)
                    Field (SMC1, ByteAcc, NoLock, Preserve)
                    {
                        INDX,   8, 
                        DATA,   8
                    }

                    IndexField (INDX, DATA, AnyAcc, NoLock, Preserve)
                    {
                        AccessAs (ByteAcc, 0x00), 
                        Offset (0x02), 
                        CFG,    8, 
                        Offset (0x07), 
                        LDN,    8, 
                        Offset (0x22), 
                        PWC,    8, 
                        LPWC,   8, 
                        Offset (0x30), 
                        CR30,   1, 
                        Offset (0x60), 
                        CR60,   8, 
                        CR61,   8, 
                        Offset (0x70), 
                        CR70,   8, 
                        Offset (0x74), 
                        CR74,   8, 
                        Offset (0xF0), 
                        CRF0,   8, 
                        CRF1,   8, 
                        CRF2,   8
                    }

                    IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes)
                    {
                        Offset (0xF0), 
                        LPTM,   3
                    }

                    Method (ENFG, 0, NotSerialized)
                    {
                        Store (0x55, INDX)
                    }

                    Method (EXFG, 0, NotSerialized)
                    {
                        Store (0xAA, INDX)
                    }

                    Device (COM1)
                    {
                        Name (_HID, EisaId ("PNP0501"))
                        Name (_DDN, "COM1")
                        Name (_UID, 0x01)
                        Name (_PRW, Package (0x02)
                        {
                            0x08, 
                            0x05
                        })
                        Method (_STA, 0, NotSerialized)
                        {
                            Acquire (S192, 0xFFFF)
                            ENFG ()
                            Store (0x04, LDN)
                            If (CR30)
                            {
                                EXFG ()
                                Return (0x0F)
                            }
                            Else
                            {
                                If (LOr (CR60, CR61))
                                {
                                    EXFG ()
                                    Return (0x0D)
                                }
                                Else
                                {
                                    EXFG ()
                                    Return (0x00)
                                }
                            }

                            Release (S192)
                            Return (Local0)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            ENFG ()
                            Store (0x04, LDN)
                            Store (0x00, CR30)
                            EXFG ()
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            Name (RSRC, ResourceTemplate ()
                            {
                                IO (Decode16,
                                    0x0000,             // Address Range Minimum
                                    0x0000,             // Address Range Maximum
                                    0x08,               // Address Alignment
                                    0x08,               // Address Length
                                    )
                                IRQNoFlags ()
                                    {}
                            })
                            CreateByteField (RSRC, 0x02, IO1)
                            CreateByteField (RSRC, 0x03, IO2)
                            CreateByteField (RSRC, 0x04, IO3)
                            CreateByteField (RSRC, 0x05, IO4)
                            CreateWordField (RSRC, 0x09, IRQV)
                            Acquire (S192, 0xFFFF)
                            ENFG ()
                            Store (0x04, LDN)
                            If (CR30)
                            {
                                Store (CR61, IO1)
                                Store (CR60, IO2)
                                Store (CR61, IO3)
                                Store (CR60, IO4)
                                Store (0x01, Local0)
                                ShiftLeft (Local0, CR70, IRQV)
                            }

                            EXFG ()
                            Release (S192)
                            Return (RSRC)
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Name (BUF0, ResourceTemplate ()
                            {
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x03F8,             // Address Range Minimum
                                        0x03F8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {4}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x03F8,             // Address Range Minimum
                                        0x03F8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {4}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x02F8,             // Address Range Minimum
                                        0x02F8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {4}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x03E8,             // Address Range Minimum
                                        0x03E8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {4}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x02E8,             // Address Range Minimum
                                        0x02E8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {4}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x03F8,             // Address Range Minimum
                                        0x03F8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {3}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x02F8,             // Address Range Minimum
                                        0x02F8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {3}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x03E8,             // Address Range Minimum
                                        0x03E8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {3}
                                }
                                StartDependentFnNoPri ()
                                {
                                    IO (Decode16,
                                        0x02E8,             // Address Range Minimum
                                        0x02E8,             // Address Range Maximum
                                        0x00,               // Address Alignment
                                        0x08,               // Address Length
                                        )
                                    IRQNoFlags ()
                                        {3}
                                }
                                EndDependentFn ()
                            })
                            CreateByteField (BUF0, 0x03, IOLO)
                            CreateByteField (BUF0, 0x04, IOHI)
                            CreateByteField (BUF0, 0x05, IOLM)
                            CreateByteField (BUF0, 0x06, IOHM)
                            CreateWordField (BUF0, 0x0A, IRQV)
                            ENFG ()
                            Store (0x04, LDN)
                            Store (CR61, IOLO)
                            Store (CR60, IOHI)
                            Store (CR61, IOLM)
                            Store (CR60, IOHM)
                            Store (0x01, Local0)
                            ShiftLeft (Local0, CR70, IRQV)
                            EXFG ()
                            Return (BUF0)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateByteField (Arg0, 0x02, IOLO)
                            CreateByteField (Arg0, 0x03, IOHI)
                            CreateWordField (Arg0, 0x09, IRQV)
                            If (IOLO)
                            {
                                ENFG ()
                                Store (0x04, LDN)
                                Store (0x01, CR30)
                                Store (PWC, Local0)
                                Or (Local0, 0x10)
                                Store (Local0, PWC)
                                Store (IOLO, CR61)
                                Store (IOHI, CR60)
                                FindSetRightBit (IRQV, Local0)
                                Subtract (Local0, 0x01, CR70)
                                EXFG ()
                            }
                            Else
                            {
                                _DIS ()
                            }
                        }

                        Method (_PSC, 0, NotSerialized)
                        {
                            ENFG ()
                            Store (0x04, LDN)
                            Store (CR30, Local0)
                            EXFG ()
                            If (Local0)
                            {
                                Return (0x00)
                            }
                            Else
                            {
                                Return (0x03)
                            }
                        }

                        Method (_PS0, 0, NotSerialized)
                        {
                            ENFG ()
                            Store (0x04, LDN)
                            Store (0x00, LPWC)
                            Store (PWC, Local0)
                            Or (Local0, 0x10)
                            Store (Local0, PWC)
                            Store (0x01, CR30)
                            EXFG ()
                        }

                        Method (_PS3, 0, NotSerialized)
                        {
                            ENFG ()
                            Store (0x04, LDN)
                            Store (PWC, Local0)
                            And (Local0, 0xEF)
                            Store (Local0, PWC)
                            EXFG ()
                        }

                        Name (SV60, 0x00)
                        Name (SV61, 0x00)
                        Name (IRQV, 0x00)
                        Method (SAVE, 0, NotSerialized)
                        {
                            ENFG ()
                            Store (0x04, LDN)
                            Store (CR30, Local0)
                            If (Local0)
                            {
                                Store (CR60, SV60)
                                Store (CR61, SV61)
                                Store (CR70, IRQV)
                            }

                            EXFG ()
                        }

                        Method (REST, 0, NotSerialized)
                        {
                            If (LNot (LEqual (SV60, Zero)))
                            {
                                ENFG ()
                                Store (0x04, LDN)
                                Or (CR30, 0x01, CR30)
                                Store (SV60, CR60)
                                Store (SV61, CR61)
                                Store (IRQV, CR70)
                                EXFG ()
                            }
                        }
                    }
                }

                Device (KBC0)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {1}
                    })
                    Name (_PRW, Package (0x02)
                    {
                        0x16, 
                        0x01
                    })
                    Name (SLEP, 0x00)
                    Method (_PSW, 1, NotSerialized)
                    {
                        If (Arg0)
                        {
                            Store (0x01, SLEP)
                            Or (0x08, KB0A, KB0A)
                        }
                        Else
                        {
                            Store (0x00, SLEP)
                            And (Not (0x08), KB0A, KB0A)
                        }
                    }
                }

                Device (MSE0)
                {
                    Name (_HID, EisaId ("PNP0F13"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {12}
                    })
                    Name (_PRW, Package (0x02)
                    {
                        0x10, 
                        0x01
                    })
                    Name (SLEP, 0x00)
                    Method (_PSW, 1, NotSerialized)
                    {
                        If (Arg0)
                        {
                            Store (0x01, SLEP)
                            Or (0x10, KB0A, KB0A)
                        }
                        Else
                        {
                            Store (0x00, SLEP)
                            And (Not (0x10), KB0A, KB0A)
                        }
                    }
                }
            }

            Device (MMTM)
            {
                Name (_HID, EisaId ("PNP0103"))
                Name (BUF0, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {0}
                    IRQNoFlags ()
                        {8}
                    Memory32Fixed (ReadOnly,
                        0x80000000,         // Address Base
                        0x00000400,         // Address Length
                        )
                })
                Method (_STA, 0, NotSerialized)
                {
                    If (\_SB.PCI0.LPC0.MTBA)
                    {
                        Return (0x0F)
                    }

                    Return (0x00)
                }

                Method (_CRS, 0, Serialized)
                {
                    If (\_SB.PCI0.LPC0.MTBA)
                    {
                        CreateDWordField (BUF0, 0x0A, TBAS)
                        CreateDWordField (BUF0, 0x0E, TLEN)
                        Store (\_SB.PCI0.LPC0.MTBA, TBAS)
                        Store (0x0400, TLEN)
                    }

                    Return (BUF0)
                }
            }

            Device (SMB0)
            {
                Name (_ADR, 0x00010001)
                OperationRegion (SMCF, PCI_Config, 0x48, 0x04)
                Field (SMCF, AnyAcc, NoLock, Preserve)
                {
                    SMPM,   4
                }

                OperationRegion (SBA0, PCI_Config, 0x50, 0x04)
                Field (SBA0, AnyAcc, NoLock, Preserve)
                {
                    SB50,   16
                }

                OperationRegion (SBA1, PCI_Config, 0x54, 0x04)
                Field (SBA1, AnyAcc, NoLock, Preserve)
                {
                    SB54,   16
                }
            }

            Device (USB0)
            {
                Name (_ADR, 0x00020000)
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x01
                })
            }

            Device (USB2)
            {
                Name (_ADR, 0x00020001)
                Name (_PRW, Package (0x02)
                {
                    0x05, 
                    0x01
                })
            }

            Device (P2P0)
            {
                Name (_ADR, 0x00090000)
                Name (_UID, 0x02)
                OperationRegion (A080, PCI_Config, 0x19, 0x01)
                Field (A080, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_PRT, Package (0x04)
                {
                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x00, 
                        \_SB.PCI0.LNK1, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x01, 
                        \_SB.PCI0.LNK2, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x02, 
                        \_SB.PCI0.LNK3, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x03, 
                        \_SB.PCI0.LNK4, 
                        0x00
                    }
                })
                Name (_PRW, Package (0x02)
                {
                    0x00, 
                    0x01
                })
            }

            Name (NATA, Package (0x01)
            {
                0x00060000
            })
            Device (IDE0)
            {
                Name (SID4, 0x00)
                Name (SID5, 0x00)
                Name (SFLG, 0x00)
                Name (SID0, 0x00)
                Name (SID1, 0x00)
                Name (SID2, 0x00)
                Name (SID3, 0x00)
                Name (_ADR, 0x00060000)
                OperationRegion (A090, PCI_Config, 0x50, 0x18)
                Field (A090, DWordAcc, NoLock, Preserve)
                {
                    ID20,   16, 
                    Offset (0x08), 
                    IDTS,   16, 
                    IDTP,   16, 
                    ID22,   32, 
                    UMSS,   16, 
                    UMSP,   16
                }

                Name (IDEP, Buffer (0x14) {})
                Name (IDES, Buffer (0x14) {})
                Method (GTM, 1, NotSerialized)
                {
                    If (LEqual (Arg0, 0x00))
                    {
                        Store (IDTP, Local0)
                        Store (UMSP, Local1)
                        Store (IDEP, Local2)
                    }
                    Else
                    {
                        Store (IDTS, Local0)
                        Store (UMSS, Local1)
                        Store (IDES, Local2)
                    }

                    CreateDWordField (Local2, 0x00, PIO0)
                    CreateDWordField (Local2, 0x04, DMA0)
                    CreateDWordField (Local2, 0x08, PIO1)
                    CreateDWordField (Local2, 0x0C, DMA1)
                    CreateDWordField (Local2, 0x10, FLAG)
                    Store (0x10, FLAG)
                    And (Local0, 0x0F00, Local3)
                    And (Local0, 0xF000, Local4)
                    ShiftRight (Local3, 0x08, Local3)
                    ShiftRight (Local4, 0x0C, Local4)
                    Add (Local3, Local4, Local3)
                    Multiply (Add (Local3, 0x02), 0x1E, PIO0)
                    If (LNot (LGreater (PIO0, 0xB4)))
                    {
                        Or (FLAG, 0x02, FLAG)
                    }

                    If (And (Local1, 0x4000))
                    {
                        Or (FLAG, 0x01, FLAG)
                        And (Local1, 0x0700, Local3)
                        ShiftRight (Local3, 0x08, Local3)
                        Store (U2T (Local3), DMA0)
                    }
                    Else
                    {
                        Store (PIO0, DMA0)
                    }

                    And (Local0, 0x0F, Local3)
                    And (Local0, 0xF0, Local4)
                    ShiftRight (Local4, 0x04, Local4)
                    Add (Local3, Local4, Local3)
                    Multiply (Add (Local3, 0x02), 0x1E, PIO1)
                    If (LNot (LGreater (PIO1, 0xB4)))
                    {
                        Or (FLAG, 0x08, FLAG)
                    }

                    If (And (Local1, 0x40))
                    {
                        Or (FLAG, 0x04, FLAG)
                        And (Local1, 0x07, Local3)
                        Store (U2T (Local3), DMA1)
                    }
                    Else
                    {
                        Store (PIO1, DMA1)
                    }

                    If (LEqual (Arg0, 0x00))
                    {
                        Store (Local2, IDEP)
                        Return (IDEP)
                    }
                    Else
                    {
                        Store (Local2, IDES)
                        Return (IDES)
                    }
                }

                Method (U2T, 1, NotSerialized)
                {
                    If (LEqual (Arg0, 0x00))
                    {
                        Return (0x3C)
                    }

                    If (LEqual (Arg0, 0x01))
                    {
                        Return (0x5A)
                    }

                    If (LEqual (Arg0, 0x02))
                    {
                        Return (0x78)
                    }

                    If (LEqual (Arg0, 0x03))
                    {
                        Return (0x96)
                    }

                    If (LEqual (Arg0, 0x04))
                    {
                        Return (0x2D)
                    }

                    If (LEqual (Arg0, 0x05))
                    {
                        Return (0x1E)
                    }

                    If (LEqual (Arg0, 0x06))
                    {
                        Return (0x14)
                    }

                    Return (0x0F)
                }

                Method (T2U, 1, NotSerialized)
                {
                    If (LGreater (Arg0, 0x78))
                    {
                        Return (0x03)
                    }

                    If (LGreater (Arg0, 0x5A))
                    {
                        Return (0x02)
                    }

                    If (LGreater (Arg0, 0x3C))
                    {
                        Return (0x01)
                    }

                    If (LGreater (Arg0, 0x2D))
                    {
                        Return (0x00)
                    }

                    If (LGreater (Arg0, 0x1E))
                    {
                        Return (0x04)
                    }

                    If (LGreater (Arg0, 0x14))
                    {
                        Return (0x05)
                    }

                    If (LGreater (Arg0, 0x0F))
                    {
                        Return (0x06)
                    }

                    Return (0x07)
                }

                Method (T2D, 1, NotSerialized)
                {
                    If (LGreater (Arg0, 0x01E0))
                    {
                        Return (0xA8)
                    }

                    If (LGreater (Arg0, 0x0186))
                    {
                        Return (0x77)
                    }

                    If (LGreater (Arg0, 0xF0))
                    {
                        Return (0x47)
                    }

                    If (LGreater (Arg0, 0xB4))
                    {
                        Return (0x33)
                    }

                    If (LGreater (Arg0, 0x96))
                    {
                        Return (0x22)
                    }

                    If (LGreater (Arg0, 0x78))
                    {
                        Return (0x21)
                    }

                    Return (0x20)
                }

                Method (STM, 4, NotSerialized)
                {
                    If (SX)
                    {
                        Store (SID0, ID20)
                        Store (SID1, IDTS)
                        Store (SID2, IDTP)
                        Store (SID3, ID22)
                        Store (SID4, UMSS)
                        Store (SID5, UMSP)
                    }
                    Else
                    {
                        Store (ID20, SID0)
                        Store (IDTS, SID1)
                        Store (IDTP, SID2)
                        Store (ID22, SID3)
                        Store (UMSS, SID4)
                        Store (UMSP, SID5)
                    }

                    Store (0x00, SX)
                    CreateDWordField (Arg0, 0x00, PIO0)
                    CreateDWordField (Arg0, 0x04, DMA0)
                    CreateDWordField (Arg0, 0x08, PIO1)
                    CreateDWordField (Arg0, 0x0C, DMA1)
                    CreateDWordField (Arg0, 0x10, FLAG)
                    If (LEqual (Arg3, 0x00))
                    {
                        Store (SID2, Local0)
                        Store (SID5, Local1)
                    }
                    Else
                    {
                        Store (SID1, Local0)
                        Store (SID4, Local1)
                    }

                    If (LNot (LEqual (PIO0, 0xFFFFFFFF)))
                    {
                        And (Local0, 0xFF, Local0)
                        ShiftLeft (T2D (PIO0), 0x08, Local2)
                        Or (Local0, Local2, Local0)
                    }

                    If (LNot (LEqual (PIO1, 0xFFFFFFFF)))
                    {
                        And (Local0, 0xFF00, Local0)
                        Or (Local0, T2D (PIO1), Local0)
                    }

                    If (And (FLAG, 0x01))
                    {
                        And (Local1, 0xFF, Local1)
                        ShiftLeft (T2U (DMA0), 0x08, Local2)
                        Or (0xC000, Local2, Local2)
                        Or (Local2, Local1, Local1)
                    }
                    Else
                    {
                        If (LNot (LEqual (DMA0, 0xFFFFFFFF)))
                        {
                            And (Local0, 0xFF, Local0)
                            ShiftLeft (T2D (DMA0), 0x08, Local2)
                            Or (Local0, Local2, Local0)
                        }
                    }

                    If (And (FLAG, 0x04))
                    {
                        And (Local1, 0xFF00, Local1)
                        Or (0xC0, T2U (DMA1), Local2)
                        Or (Local2, Local1, Local1)
                    }
                    Else
                    {
                        If (LNot (LEqual (DMA1, 0xFFFFFFFF)))
                        {
                            And (Local0, 0xFF00, Local0)
                            Or (Local0, T2D (DMA1), Local0)
                        }
                    }

                    If (LEqual (Arg3, 0x00))
                    {
                        Store (Local0, IDTP)
                        Store (Local1, UMSP)
                    }
                    Else
                    {
                        Store (Local0, IDTS)
                        Store (Local1, UMSS)
                    }
                }

                Method (GTF, 2, NotSerialized)
                {
                    Store (Buffer (0x07)
                        {
                            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                        }, Local0)
                    CreateByteField (Local0, 0x01, MODE)
                    CreateByteField (Local0, 0x05, DRIV)
                    Store (Arg1, DRIV)
                    If (LEqual (Arg0, 0x00))
                    {
                        Store (IDEP, Local1)
                    }
                    Else
                    {
                        Store (IDES, Local1)
                    }

                    CreateDWordField (Local1, 0x00, PIO0)
                    CreateDWordField (Local1, 0x04, DMA0)
                    CreateDWordField (Local1, 0x08, PIO1)
                    CreateDWordField (Local1, 0x0C, DMA1)
                    CreateDWordField (Local1, 0x10, FLGX)
                    If (LEqual (Arg1, 0xA0))
                    {
                        Store (PIO0, Local2)
                        Store (DMA0, Local3)
                        And (FLGX, 0x01, FLGX)
                    }
                    Else
                    {
                        Store (PIO1, Local2)
                        Store (DMA1, Local3)
                        And (FLGX, 0x04, FLGX)
                    }

                    Store (FLGX, Local1)
                    If (LGreater (Local2, 0x0186))
                    {
                        Store (0x00, Local2)
                    }
                    Else
                    {
                        If (LGreater (Local2, 0xF0))
                        {
                            Store (0x01, Local2)
                        }
                        Else
                        {
                            If (LGreater (Local2, 0xB4))
                            {
                                Store (0x02, Local2)
                            }
                            Else
                            {
                                If (LGreater (Local2, 0x78))
                                {
                                    Store (0x03, Local2)
                                }
                                Else
                                {
                                    Store (0x04, Local2)
                                }
                            }
                        }
                    }

                    Or (0x08, Local2, MODE)
                    Store (Local0, Local2)
                    If (FLGX)
                    {
                        If (LGreater (Local3, 0x5A))
                        {
                            Store (0x00, Local3)
                        }
                        Else
                        {
                            If (LGreater (Local3, 0x3C))
                            {
                                Store (0x01, Local3)
                            }
                            Else
                            {
                                If (LGreater (Local3, 0x2D))
                                {
                                    Store (0x02, Local3)
                                }
                                Else
                                {
                                    If (LGreater (Local3, 0x1E))
                                    {
                                        Store (0x03, Local3)
                                    }
                                    Else
                                    {
                                        If (LGreater (Local3, 0x14))
                                        {
                                            Store (0x04, Local3)
                                        }
                                        Else
                                        {
                                            If (LGreater (Local3, 0x0F))
                                            {
                                                Store (0x05, Local3)
                                            }
                                            Else
                                            {
                                                Store (0x06, Local3)
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Or (0x40, Local3, MODE)
                    }
                    Else
                    {
                        If (LEqual (Local3, 0xFFFFFFFF))
                        {
                            Return (Local0)
                        }
                        Else
                        {
                            If (LGreater (Local3, 0x96))
                            {
                                Store (0x00, Local3)
                            }
                            Else
                            {
                                If (LGreater (Local3, 0x78))
                                {
                                    Store (0x01, Local3)
                                }
                                Else
                                {
                                    Store (0x02, Local3)
                                }
                            }

                            Or (0x20, Local3, MODE)
                        }
                    }

                    Concatenate (Local0, Local2, Local1)
                    Return (Local1)
                }

                Device (PRI0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (0x00))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        STM (Arg0, Arg1, Arg2, 0x00)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x00, 0xA0))
                        }
                    }

                    Device (SLAV)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x00, 0xB0))
                        }
                    }
                }

                Device (SEC0)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (0x01))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        STM (Arg0, Arg1, Arg2, 0x01)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x01, 0xA0))
                        }
                    }

                    Device (SLAV)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x01, 0xB0))
                        }
                    }
                }
            }

            Device (SAT1)
            {
                Name (_ADR, 0x00080000)
                Device (PRI0)
                {
                    Name (_ADR, 0x00)
                    Name (SPTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SPTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SPTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (SEC0)
                {
                    Name (_ADR, 0x01)
                    Name (SSTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SSTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SSTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }
            }

            Device (XVR0)
            {
                Name (_ADR, 0x000E0000)
                Name (_UID, 0x03)
                OperationRegion (A1E0, PCI_Config, 0x19, 0x01)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_PRT, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.PCI0.LNK3, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        \_SB.PCI0.LNK4, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        \_SB.PCI0.LNK1, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        \_SB.PCI0.LNK2, 
                        0x00
                    }
                })
                Device (Z007)
                {
                    Name (_ADR, 0x00)
                }

                Name (_PRW, Package (0x02)
                {
                    0x11, 
                    0x05
                })
            }

            Device (XVR1)
            {
                Name (_ADR, 0x000D0000)
                Name (_UID, 0x04)
                OperationRegion (A1E0, PCI_Config, 0x19, 0x01)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_PRT, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.PCI0.LNK4, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        \_SB.PCI0.LNK1, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        \_SB.PCI0.LNK2, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        \_SB.PCI0.LNK3, 
                        0x00
                    }
                })
                Device (Z008)
                {
                    Name (_ADR, 0x00)
                }

                Name (_PRW, Package (0x02)
                {
                    0x11, 
                    0x05
                })
            }

            Device (XVR2)
            {
                Name (_ADR, 0x000C0000)
                Name (_UID, 0x05)
                OperationRegion (A1E0, PCI_Config, 0x19, 0x01)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_PRT, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.PCI0.LNK1, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        \_SB.PCI0.LNK2, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        \_SB.PCI0.LNK3, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        \_SB.PCI0.LNK4, 
                        0x00
                    }
                })
                Device (Z009)
                {
                    Name (_ADR, 0x00)
                }

                Name (_PRW, Package (0x02)
                {
                    0x11, 
                    0x05
                })
            }

            Device (K801)
            {
                Name (_ADR, 0x00180001)
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                OperationRegion (HMM0, PCI_Config, 0x80, 0x60)
                Field (HMM0, ByteAcc, NoLock, Preserve)
                {
                    PMB0,   32, 
                    PML0,   32, 
                    PMB1,   32, 
                    PML1,   32, 
                    PMB2,   32, 
                    PML2,   32, 
                    PMB3,   32, 
                    PML3,   32, 
                    PMB4,   32, 
                    PML4,   32, 
                    PMB5,   32, 
                    PML5,   32, 
                    PMB6,   32, 
                    PML6,   32, 
                    PMB7,   32, 
                    PML7,   32, 
                    PIB0,   32, 
                    PIL0,   32, 
                    PIB1,   32, 
                    PIL1,   32, 
                    PIB2,   32, 
                    PIL2,   32, 
                    PIB3,   32, 
                    PIL3,   32
                }
            }
        }

        Device (PCI1)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x08)
            Name (_BBN, 0x80)
            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (CBF1, ResourceTemplate ()
                {
                    WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                        0x0000,             // Address Space Granularity
                        0x0080,             // Address Range Minimum
                        0x00FF,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0080,             // Address Length
                        ,,)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0000,             // Address Length
                        0x00,,, TypeStatic)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0000,             // Address Length
                        0x00,,, TypeStatic)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0000,             // Address Length
                        0x00,,, TypeStatic)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Address Space Granularity
                        0x0000,             // Address Range Minimum
                        0x0000,             // Address Range Maximum
                        0x0000,             // Address Translation Offset
                        0x0000,             // Address Length
                        0x00,,, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Address Space Granularity
                        0x00000000,         // Address Range Minimum
                        0x00000000,         // Address Range Maximum
                        0x00000000,         // Address Translation Offset
                        0x00000000,         // Address Length
                        ,,, AddressRangeMemory, TypeStatic)
                })
                CreateWordField (CBF1, 0x18, I0MN)
                CreateWordField (CBF1, 0x1E, I0LN)
                CreateWordField (CBF1, 0x1A, I0MX)
                CreateWordField (CBF1, 0x29, I1MN)
                CreateWordField (CBF1, 0x2F, I1LN)
                CreateWordField (CBF1, 0x2B, I1MX)
                CreateWordField (CBF1, 0x3A, I2MN)
                CreateWordField (CBF1, 0x40, I2LN)
                CreateWordField (CBF1, 0x3C, I2MX)
                CreateWordField (CBF1, 0x4B, I3MN)
                CreateWordField (CBF1, 0x51, I3LN)
                CreateWordField (CBF1, 0x4D, I3MX)
                CreateDWordField (CBF1, 0x5E, PMMN)
                CreateDWordField (CBF1, 0x62, PMMX)
                CreateDWordField (CBF1, 0x6A, PMLN)
                And (\_SB.PCI0.K801.PMB2, 0xFFFFFF00, Local0)
                Multiply (Local0, 0x0100, PMMN)
                Store (0xDFFFFFFF, PMMX)
                Subtract (PMMX, PMMN, PMLN)
                Increment (PMLN)
                Method (Z00A, 2, NotSerialized)
                {
                    If (LEqual (And (Arg0, 0x03), 0x03))
                    {
                        If (LEqual (And (Arg1, 0x37), 0x10))
                        {
                            Return (One)
                        }
                    }

                    Return (Zero)
                }

                If (Z00A (\_SB.PCI0.K801.PIB0, \_SB.PCI0.K801.PIL0))
                {
                    And (\_SB.PCI0.K801.PIB0, 0x00FFF000, I0MN)
                    And (\_SB.PCI0.K801.PIL0, 0x00FFF000, I0MX)
                    Or (I0MX, 0x0FFF, I0MX)
                    Increment (I0MX)
                    Subtract (I0MX, I0MN, I0LN)
                    Increment (I0LN)
                }

                If (Z00A (\_SB.PCI0.K801.PIB1, \_SB.PCI0.K801.PIL1))
                {
                    And (\_SB.PCI0.K801.PIB1, 0x00FFF000, I1MN)
                    And (\_SB.PCI0.K801.PIL1, 0x00FFF000, I1MX)
                    Or (I1MX, 0x0FFF, I1MX)
                    Increment (I1MX)
                    Subtract (I1MX, I1MN, I1LN)
                    Increment (I1LN)
                }

                If (Z00A (\_SB.PCI0.K801.PIB2, \_SB.PCI0.K801.PIL2))
                {
                    And (\_SB.PCI0.K801.PIB2, 0x00FFF000, I2MN)
                    And (\_SB.PCI0.K801.PIL2, 0x00FFF000, I2MX)
                    Or (I2MX, 0x0FFF, I2MX)
                    Increment (I2MX)
                    Subtract (I2MX, I2MN, I2LN)
                    Increment (I2LN)
                }

                If (Z00A (\_SB.PCI0.K801.PIB3, \_SB.PCI0.K801.PIL3))
                {
                    And (\_SB.PCI0.K801.PIB3, 0x00FFF000, I3MN)
                    And (\_SB.PCI0.K801.PIL3, 0x00FFF000, I3MX)
                    Or (I3MX, 0x0FFF, I3MX)
                    Increment (I3MX)
                    Subtract (I3MX, I3MN, I3LN)
                    Increment (I3LN)
                }

                Return (CBF1)
            }

            Device (XCR0)
            {
                Name (_ADR, 0x00010000)
                Name (_UID, 0x09)
                OperationRegion (A1E0, PCI_Config, 0x19, 0x01)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LNot (\PICF))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x00, 
                                \_SB.PCI0.LNK2, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x01, 
                                \_SB.PCI0.LNK3, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x02, 
                                \_SB.PCI0.LNK4, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x03, 
                                \_SB.PCI0.LNK1, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x00, 
                                0x00, 
                                0x19
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x01, 
                                0x00, 
                                0x1A
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x02, 
                                0x00, 
                                0x1B
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x03, 
                                0x00, 
                                0x18
                            }
                        })
                    }
                }

                Device (Z007)
                {
                    Name (_ADR, 0x00010000)
                }

                Name (_PRW, Package (0x02)
                {
                    0x00, 
                    0x05
                })
            }

            Device (XCR1)
            {
                Name (_ADR, 0x00020000)
                Name (_UID, 0x0A)
                OperationRegion (A1E0, PCI_Config, 0x19, 0x01)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                    SECB,   8
                }

                Method (_BBN, 0, NotSerialized)
                {
                    Return (SECB)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LNot (\PICF))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x00, 
                                \_SB.PCI0.LNK2, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x01, 
                                \_SB.PCI0.LNK3, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x02, 
                                \_SB.PCI0.LNK4, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x03, 
                                \_SB.PCI0.LNK1, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x00, 
                                0x00, 
                                0x20
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x01, 
                                0x00, 
                                0x21
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x02, 
                                0x00, 
                                0x22
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x03, 
                                0x00, 
                                0x1F
                            }
                        })
                    }
                }

                Device (Z008)
                {
                    Name (_ADR, 0x00010000)
                }

                Name (_PRW, Package (0x02)
                {
                    0x00, 
                    0x05
                })
            }
        }

        Scope (\)
        {
            Name (PICF, 0x00)
            Method (_PIC, 1, NotSerialized)
            {
                Store (Arg0, PICF)
            }

            OperationRegion (\_SB.PCI0.LPC0.PIRQ, PCI_Config, 0x7C, 0x0C)
            Field (\_SB.PCI0.LPC0.PIRQ, AnyAcc, NoLock, Preserve)
            {
                INTW,   4, 
                INTX,   4, 
                INTY,   4, 
                INTZ,   4, 
                INTE,   4, 
                SSI1,   4, 
                SSI0,   4, 
                IPCA,   4, 
                ISCI,   4, 
                ITCO,   4, 
                ISMB,   4, 
                IUS2,   4, 
                INTU,   4, 
                INTS,   4, 
                PSI1,   4, 
                PSI0,   4, 
                IUS0,   4, 
                IUS1,   4, 
                IMAC,   4, 
                Offset (0x0A), 
                IACI,   4, 
                IMCI,   4, 
                IPID,   4, 
                ISID,   4
            }
        }

        Scope (\_SB.PCI0)
        {
            Name (BUFA, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared)
                    {5,7,9}
            })
            Name (BUFB, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared)
                    {}
            })
            CreateWordField (BUFB, 0x01, IRQV)
            Method (CRS, 1, Serialized)
            {
                If (Arg0)
                {
                    ShiftLeft (0x01, Arg0, IRQV)
                }
                Else
                {
                    Store (Zero, IRQV)
                }

                Return (BUFB)
            }

            Method (SRS, 1, Serialized)
            {
                CreateWordField (Arg0, 0x01, IRQ0)
                FindSetRightBit (IRQ0, Local0)
                Decrement (Local0)
                Return (Local0)
            }

            Name (BUFI, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000014,
                    0x00000015,
                    0x00000016,
                    0x00000017,
                }
            })
            Method (CRSI, 1, Serialized)
            {
                Name (IRZ5, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                    {
                        0x00000007,
                    }
                })
                CreateWordField (IRZ5, 0x05, INZ5)
                Store (0x00, Local0)
                If (LEqual (Arg0, 0x08))
                {
                    Store (0x14, Local0)
                }

                If (LEqual (Arg0, 0x0D))
                {
                    Store (0x15, Local0)
                }

                If (LEqual (Arg0, 0x02))
                {
                    Store (0x16, Local0)
                }

                If (LEqual (Arg0, 0x01))
                {
                    Store (0x17, Local0)
                }

                Store (Local0, INZ5)
                Return (IRZ5)
            }

            Method (SRSI, 1, Serialized)
            {
                CreateWordField (Arg0, 0x05, IRZ6)
                Store (0x00, Local0)
                If (LEqual (IRZ6, 0x14))
                {
                    Store (0x08, Local0)
                }

                If (LEqual (IRZ6, 0x15))
                {
                    Store (0x0D, Local0)
                }

                If (LEqual (IRZ6, 0x16))
                {
                    Store (0x02, Local0)
                }

                If (LEqual (IRZ6, 0x17))
                {
                    Store (0x01, Local0)
                }

                Return (Local0)
            }

            Name (BUFE, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000013,
                }
            })
            Name (BUFW, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000010,
                }
            })
            Name (BUFX, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000011,
                }
            })
            Name (BUFY, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000012,
                }
            })
            Name (BUFZ, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                {
                    0x00000013,
                }
            })
            Method (CRSE, 1, Serialized)
            {
                Name (IRZ7, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,,)
                    {
                        0x00000007,
                    }
                })
                CreateWordField (IRZ7, 0x05, INZ7)
                Store (0x00, Local0)
                If (LEqual (Arg0, 0x08))
                {
                    Store (0x10, Local0)
                }

                If (LEqual (Arg0, 0x01))
                {
                    Store (0x11, Local0)
                }

                If (LEqual (Arg0, 0x02))
                {
                    Store (0x12, Local0)
                }

                If (LEqual (Arg0, 0x0D))
                {
                    Store (0x13, Local0)
                }

                Store (Local0, INZ7)
                Return (IRZ7)
            }

            Method (SRSE, 1, Serialized)
            {
                CreateWordField (Arg0, 0x05, IRZ8)
                Store (0x00, Local0)
                If (LEqual (IRZ8, 0x10))
                {
                    Store (0x08, Local0)
                }

                If (LEqual (IRZ8, 0x11))
                {
                    Store (0x01, Local0)
                }

                If (LEqual (IRZ8, 0x12))
                {
                    Store (0x02, Local0)
                }

                If (LEqual (IRZ8, 0x13))
                {
                    Store (0x0D, Local0)
                }

                Return (Local0)
            }

            Device (LNK1)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x01)
                Method (_STA, 0, NotSerialized)
                {
                    If (INTW)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, INTW)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFW)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (INTW))
                    }
                    Else
                    {
                        Return (CRSE (INTW))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), INTW)
                    }
                    Else
                    {
                        Store (SRSE (Arg0), INTW)
                    }
                }
            }

            Device (LNK2)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x02)
                Method (_STA, 0, NotSerialized)
                {
                    If (INTX)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, INTX)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFX)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (INTX))
                    }
                    Else
                    {
                        Return (CRSE (INTX))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), INTX)
                    }
                    Else
                    {
                        Store (SRSE (Arg0), INTX)
                    }
                }
            }

            Device (LNK3)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x03)
                Method (_STA, 0, NotSerialized)
                {
                    If (INTY)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, INTY)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFY)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (INTY))
                    }
                    Else
                    {
                        Return (CRSE (INTY))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), INTY)
                    }
                    Else
                    {
                        Store (SRSE (Arg0), INTY)
                    }
                }
            }

            Device (LNK4)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x04)
                Method (_STA, 0, NotSerialized)
                {
                    If (INTZ)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, INTZ)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFZ)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (INTZ))
                    }
                    Else
                    {
                        Return (CRSE (INTZ))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), INTZ)
                    }
                    Else
                    {
                        Store (SRSE (Arg0), INTZ)
                    }
                }
            }

            Device (LNK5)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x05)
                Method (_STA, 0, NotSerialized)
                {
                    If (INTE)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, INTE)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFE)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (INTE))
                    }
                    Else
                    {
                        Return (CRSE (INTE))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), INTE)
                    }
                    Else
                    {
                        Store (SRSE (Arg0), INTE)
                    }
                }
            }

            Device (LSMB)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x06)
                Method (_STA, 0, NotSerialized)
                {
                    If (ISMB)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, ISMB)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (ISMB))
                    }
                    Else
                    {
                        Return (CRSI (ISMB))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), ISMB)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), ISMB)
                    }
                }
            }

            Device (LUS0)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x07)
                Method (_STA, 0, NotSerialized)
                {
                    If (IUS0)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, IUS0)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (IUS0))
                    }
                    Else
                    {
                        Return (CRSI (IUS0))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), IUS0)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), IUS0)
                    }
                }
            }

            Device (LUS2)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x09)
                Method (_STA, 0, NotSerialized)
                {
                    If (IUS2)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, IUS2)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (IUS2))
                    }
                    Else
                    {
                        Return (CRSI (IUS2))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), IUS2)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), IUS2)
                    }
                }
            }

            Device (LPID)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x0D)
                Method (_STA, 0, NotSerialized)
                {
                    If (IPID)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, IPID)
                    Store (0x00, ISID)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (IPID))
                    }
                    Else
                    {
                        Return (CRSI (IPID))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), IPID)
                        Store (SRS (Arg0), ISID)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), IPID)
                        Store (SRSI (Arg0), ISID)
                    }
                }
            }

            Device (LSI1)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x0F)
                Method (_STA, 0, NotSerialized)
                {
                    If (PSI1)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, PSI1)
                    Store (0x00, SSI1)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (PSI1))
                    }
                    Else
                    {
                        Return (CRSI (PSI1))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), PSI1)
                        Store (SRS (Arg0), SSI1)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), PSI1)
                        Store (SRSI (Arg0), SSI1)
                    }
                }
            }

            Device (APCP)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x10)
                Method (_STA, 0, NotSerialized)
                {
                    If (IPCA)
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x09)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Store (0x00, IPCA)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (BUFA)
                    }
                    Else
                    {
                        Return (BUFI)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Return (CRS (IPCA))
                    }
                    Else
                    {
                        Return (CRSI (IPCA))
                    }
                }

                Method (_SRS, 1, NotSerialized)
                {
                    If (LNot (PICF))
                    {
                        Store (SRS (Arg0), IPCA)
                    }
                    Else
                    {
                        Store (SRSI (Arg0), IPCA)
                    }
                }
            }
        }
    }

    Scope (\_SB.PCI0.LPC0)
    {
        OperationRegion (RGA0, PCI_Config, 0xA0, 0x04)
        Field (RGA0, AnyAcc, NoLock, Preserve)
        {
            COMP,   8, 
            ADIO,   4, 
            MIDS,   4, 
            MSSS,   4, 
            FDCP,   2, 
            ADLB,   1, 
            Offset (0x03), 
            LPTP,   3, 
                ,   1, 
            DVR0,   1, 
            DVR1,   1, 
            DVR2,   1, 
            DVR3,   1
        }

        OperationRegion (RGA1, PCI_Config, 0xA4, 0x04)
        Field (RGA1, AnyAcc, NoLock, Preserve)
        {
            GMPS,   16, 
            Offset (0x04)
        }

        Method (Z00B, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.COMP, Local0)
            If (LEqual (Arg0, 0x03F8))
            {
                Not (0x01, Local2)
                And (Local0, Local2, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x02F8))
                {
                    Not (0x02, Local2)
                    And (Local0, Local2, Local0)
                }
                Else
                {
                    If (LEqual (Arg0, 0x03E8))
                    {
                        Not (0x80, Local2)
                        And (Local0, Local2, Local0)
                    }
                    Else
                    {
                        If (LEqual (Arg0, 0x02E8))
                        {
                            Not (0x20, Local2)
                            And (Local0, Local2, Local0)
                        }
                    }
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.COMP)
        }

        Method (Z00C, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.COMP, Local0)
            If (LEqual (Arg0, 0x03F8))
            {
                Or (0x01, Local0, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x02F8))
                {
                    Or (0x02, Local0, Local0)
                }
                Else
                {
                    If (LEqual (Arg0, 0x03E8))
                    {
                        Or (0x80, Local0, Local0)
                    }
                    Else
                    {
                        If (LEqual (Arg0, 0x02E8))
                        {
                            Or (0x20, Local0, Local0)
                        }
                    }
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.COMP)
        }

        Method (Z00D, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.LPTP, Local0)
            If (LEqual (Arg0, 0x0378))
            {
                Not (0x01, Local2)
                And (Local0, Local2, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x0278))
                {
                    Not (0x02, Local2)
                    And (Local0, Local2, Local0)
                }
                Else
                {
                    If (LEqual (Arg0, 0x03BC))
                    {
                        Not (0x04, Local2)
                        And (Local0, Local2, Local0)
                    }
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.LPTP)
        }

        Method (Z00E, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.LPTP, Local0)
            If (LEqual (Arg0, 0x0378))
            {
                Or (0x01, Local0, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x0278))
                {
                    Or (0x02, Local0, Local0)
                }
                Else
                {
                    If (LEqual (Arg0, 0x03BC))
                    {
                        Or (0x04, Local0, Local0)
                    }
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.LPTP)
        }

        Method (Z00F, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.FDCP, Local0)
            If (LEqual (Arg0, 0x03F0))
            {
                Not (0x01, Local2)
                And (Local0, Local2, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x0370))
                {
                    Not (0x02, Local2)
                    And (Local0, Local2, Local0)
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.FDCP)
        }

        Method (Z00G, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.FDCP, Local0)
            If (LEqual (Arg0, 0x03F0))
            {
                Or (0x01, Local0, Local0)
            }
            Else
            {
                If (LEqual (Arg0, 0x0370))
                {
                    Or (0x02, Local0, Local0)
                }
            }

            Store (Local0, \_SB.PCI0.LPC0.FDCP)
        }

        Method (Z00H, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.GMPS, Local0)
            If (LEqual (Arg0, 0x0200))
            {
                Not (0xFF, Local2)
                And (Local0, Local2, Local0)
            }

            If (LEqual (Arg0, 0x0208))
            {
                Not (0xFF00, Local2)
                And (Local0, Local2, Local0)
            }

            Store (Local0, \_SB.PCI0.LPC0.GMPS)
        }

        Method (Z00I, 1, NotSerialized)
        {
            Store (\_SB.PCI0.LPC0.GMPS, Local0)
            If (LEqual (Arg0, 0x0200))
            {
                Or (0xFF, Local0, Local0)
            }

            If (LEqual (Arg0, 0x0208))
            {
                Or (0xFF00, Local0, Local0)
            }

            Store (Local0, \_SB.PCI0.LPC0.GMPS)
        }
    }

    OperationRegion (DBGP, SystemIO, 0x80, 0x01)
    Field (DBGP, ByteAcc, NoLock, Preserve)
    {
        DBUG,   8
    }

    Name (FWSO, "FWSO")
    Scope (\_PR.CPU0)
    {
        Name (_PCT, Package (0x02)
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }
        })
        Name (_PSS, Package (0x02)
        {
            Package (0x06)
            {
                0x000007D0, 
                0x00017318, 
                0x00000064, 
                0x00000007, 
                0xC020120C, 
                0x0000020C
            }, 

            Package (0x06)
            {
                0x00000708, 
                0x000160BC, 
                0x00000064, 
                0x00000007, 
                0xC020128A, 
                0x0000028A
            }
        })
        Name (_PPC, 0x00)
    }

    Scope (\_PR.CPU1)
    {
        Name (_PCT, Package (0x02)
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }
        })
        Name (_PSS, Package (0x02)
        {
            Package (0x06)
            {
                0x000007D0, 
                0x00017318, 
                0x00000064, 
                0x00000007, 
                0xC020120C, 
                0x0000020C
            }, 

            Package (0x06)
            {
                0x00000708, 
                0x000160BC, 
                0x00000064, 
                0x00000007, 
                0xC020128A, 
                0x0000028A
            }
        })
        Name (_PPC, 0x00)
    }

    Scope (\_PR.CPU2)
    {
        Name (_PCT, Package (0x02)
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }
        })
        Name (_PSS, Package (0x02)
        {
            Package (0x06)
            {
                0x000007D0, 
                0x00017318, 
                0x00000064, 
                0x00000007, 
                0xC020120C, 
                0x0000020C
            }, 

            Package (0x06)
            {
                0x00000708, 
                0x000160BC, 
                0x00000064, 
                0x00000007, 
                0xC020128A, 
                0x0000028A
            }
        })
        Name (_PPC, 0x00)
    }

    Scope (\_PR.CPU3)
    {
        Name (_PCT, Package (0x02)
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Register Bit Width
                    0x00,               // Register Bit Offset
                    0x0000000000000000, // Register Address
                    )
            }
        })
        Name (_PSS, Package (0x02)
        {
            Package (0x06)
            {
                0x000007D0, 
                0x00017318, 
                0x00000064, 
                0x00000007, 
                0xC020120C, 
                0x0000020C
            }, 

            Package (0x06)
            {
                0x00000708, 
                0x000160BC, 
                0x00000064, 
                0x00000007, 
                0xC020128A, 
                0x0000028A
            }
        })
        Name (_PPC, 0x00)
    }
}

