/*
  RSD PTR: OEM=INTEL, ACPI_Rev=2.0x (2)
	XSDT=0x000000005f4fe120, length=36, cksum=45
 */
/*
  XSDT: Length=100, Revision=1, Checksum=183,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=, Creator Revision=0x1000013
	Entries={ 0x000000005f4fc000, 0x000000005f4fd000, 0x000000005f4fb000, 0x000000005f4fa000, 0x000000005f4f9000, 0x000000005f4f8000, 0x000000005f4f1000, 0x000000005f4f0000 }
 */
/*
  FACP: Length=244, Revision=4, Checksum=255,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
 	FACS=0x5f488000, DSDT=0x5f4f2000
	INT_MODEL=PIC
	Preferred_PM_Profile=Unspecified (0)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xa0, ACPI_DISABLE=0xa1, S4BIOS_REQ=0x0
	PSTATE_CNT=0x0
	PM1a_EVT_BLK=0x400-0x403
	PM1a_CNT_BLK=0x404-0x405
	PM2_CNT_BLK=0x420-0x420
	PM_TMR_BLK=0x408-0x40b
	GPE0_BLK=0x428-0x42f
	P_LVL2_LAT=101 us, P_LVL3_LAT=1001 us
	FLUSH_SIZE=0, FLUSH_STRIDE=0
	DUTY_OFFSET=1, DUTY_WIDTH=3
	DAY_ALRM=13, MON_ALRM=0, CENTURY=0
	IAPC_BOOT_ARCH={LEGACY_DEVICES,8042}
	Flags={WBINVD,C1_SUPPORTED,SLEEP_BUTTON,S4_RTC_WAKE,RESET_REGISTER,PLATFORM_CLOCK}
	RESET_REG=0xcf9:0[8] (IO), RESET_VALUE=0x6
	X_FACS=0x000000005f488000, X_DSDT=0x000000005f4f2000
	X_PM1a_EVT_BLK=0x00000000:0[0] (Memory)
	X_PM1a_CNT_BLK=0x00000000:0[0] (Memory)
	X_PM_TMR_BLK=0x00000000:0[0] (Memory)
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=1
 */
/*
  DSDT: Length=23813, Revision=1, Checksum=18,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
 */
/*
  SSDT: Length=1220, Revision=2, Checksum=203,
	OEMID=PmRef, OEM Table ID=CpuPm, OEM Revision=0x3000,
	Creator ID=INTL, Creator Revision=0x20051117
 */
/*
  HPET: Length=56, Revision=1, Checksum=180,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
	HPET Number=0
	ADDR=0xfed00000:0[0] (Memory)	HW Rev=0x1
	Comparators=2
	Counter Size=1
	Legacy IRQ routing capable={TRUE}
	PCI Vendor ID=0x8086
	Minimal Tick=128
	Flags=0x00
 */
/*
  APIC: Length=104, Revision=2, Checksum=110,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

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

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

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

	Type=INT Override
	BUS=0
	IRQ=0
	INTR=2
	Flags={Polarity=conforming, Trigger=conforming}

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

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

	Type=Local APIC NMI
	ACPI CPU=2
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}
 */
/*
  MCFG: Length=60, Revision=1, Checksum=220,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013

	Base Address=0x00000000e0000000
	Segment Group=0x0000
	Start Bus=0
	End Bus=255
 */
/*
  ASF!: Length=165, Revision=32, Checksum=92,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
 */
/*
  SLIC: Length=384, Revision=1, Checksum=232,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
 */
/*
  BOOT: Length=40, Revision=1, Checksum=116,
	OEMID=INTEL, OEM Table ID=Napa, OEM Revision=0x1,
	Creator ID=MSFT, Creator Revision=0x1000013
 */
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20160527-32
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of /tmp/acpidump.6zPKsS/acpdump.din, Wed Dec 14 20:29:54 2016
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000061A5 (24997)
 *     Revision         0x01 **** 32-bit table (V1), no 64-bit math support
 *     Checksum         0xB4
 *     OEM ID           "INTEL "
 *     OEM Table ID     "Napa    "
 *     OEM Revision     0x00000001 (1)
 *     Compiler ID      "MSFT"
 *     Compiler Version 0x01000013 (16777235)
 */
DefinitionBlock ("", "DSDT", 1, "INTEL ", "Napa    ", 0x00000001)
{
    OperationRegion (PORT, SystemIO, 0x80, One)
    Field (PORT, ByteAcc, NoLock, Preserve)
    {
        P80H,   8
    }

    OperationRegion (GPIO, SystemIO, 0x0500, 0x39)
    Field (GPIO, ByteAcc, NoLock, Preserve)
    {
        Offset (0x2C), 
        Offset (0x2D), 
            ,   1, 
        INV9,   1, 
        INVA,   1, 
        Offset (0x38), 
            ,   1, 
            ,   1, 
        CPEN,   1
    }

    OperationRegion (PMBA, SystemIO, 0x0400, 0x80)
    Field (PMBA, ByteAcc, NoLock, Preserve)
    {
        Offset (0x28), 
            ,   2, 
        SPST,   1, 
        Offset (0x29), 
        Offset (0x2A), 
        Offset (0x2B), 
        GP2B,   8, 
        Offset (0x42), 
            ,   1, 
        GPEC,   1
    }

    OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
    Field (RCRB, DWordAcc, Lock, Preserve)
    {
        Offset (0x1000), 
        Offset (0x3000), 
        Offset (0x3404), 
        HPAS,   2, 
            ,   5, 
        HPAE,   1, 
        Offset (0x3418), 
            ,   1, 
        PATD,   1, 
        SATD,   1, 
        SMBD,   1, 
        AZAD,   1, 
        A97D,   1, 
        Offset (0x341A), 
        RP1D,   1, 
        RP2D,   1, 
        RP3D,   1, 
        RP4D,   1
    }

    OperationRegion (MBOX, SystemMemory, 0x5F4BED90, 0x000000E8)
    Field (MBOX, AnyAcc, NoLock, Preserve)
    {
        PCI1,   8, 
        PCI2,   8, 
        PCI3,   8, 
        PCI4,   8, 
        PCI5,   8, 
        PCI6,   8, 
        PCI7,   8, 
        PCI8,   8, 
        NLCK,   8, 
        ZIPE,   8, 
        COMA,   8, 
        CAIO,   8, 
        CAIP,   8, 
        CAMD,   8, 
        CADA,   8, 
        COMB,   8, 
        CBIO,   8, 
        CBIP,   8, 
        CBMD,   8, 
        CBDA,   8, 
        COMC,   8, 
        CCIO,   8, 
        CCIP,   8, 
        CCMD,   8, 
        CCDA,   8, 
        COMD,   8, 
        CDIO,   8, 
        CDIP,   8, 
        CDMD,   8, 
        CDDA,   8, 
        LPT1,   8, 
        L1IO,   8, 
        L1IP,   8, 
        L1MD,   8, 
        L1DA,   8, 
        LPT2,   8, 
        L2IO,   8, 
        L2IP,   8, 
        L2MD,   8, 
        L2DA,   8, 
        LPT3,   8, 
        L3IO,   8, 
        L3IP,   8, 
        L3MD,   8, 
        L3DA,   8, 
        FDDC,   8, 
        FDWP,   8, 
        HGMP,   8, 
        LGMP,   8, 
        MIDI,   8, 
        AZLA,   8, 
        AUDO,   8, 
        MODM,   8, 
        IDEC,   8, 
        PACT,   8, 
        SCFG,   8, 
        AIBT,   8, 
        AMOD,   8, 
        P0HP,   8, 
        P2HP,   8, 
        P0IL,   8, 
        P2IL,   8, 
        IDLY,   8, 
        PMTP,   8, 
        PMIO,   8, 
        PMBM,   8, 
        PMTM,   8, 
        PSTP,   8, 
        PSIO,   8, 
        PSBM,   8, 
        PSTM,   8, 
        SMTP,   8, 
        SMIO,   8, 
        SMBM,   8, 
        SMTM,   8, 
        SSTP,   8, 
        SSIO,   8, 
        SSBM,   8, 
        SSTM,   8, 
        IDE0,   8, 
        IDE1,   8, 
        IDE2,   8, 
        IDE3,   8, 
        IDE4,   8, 
        IDE5,   8, 
        IDE6,   8, 
        IDE7,   8, 
        PEGS,   8, 
        D2F1,   8, 
        IGMT,   8, 
        DTSZ,   8, 
        HIUB,   8, 
        LUBS,   8, 
        EDCG,   8, 
        SDFY,   8, 
        SDTC,   8, 
        SDRP,   8, 
        SDCL,   8, 
        SDRC,   8, 
        SDRE,   8, 
        FC2L,   8, 
        FC3L,   8, 
        FCS4,   8, 
        APIM,   8, 
        HPTS,   8, 
        HPTA,   8, 
        EMAS,   8, 
        MASF,   8, 
        ASFB,   8, 
        MBTX,   8, 
        XPRO,   8, 
        IDER,   8, 
        SOLE,   8, 
        EYLS,   8, 
        EYLH,   8, 
        TPMD,   8, 
        TPMO,   8, 
        TPMC,   8, 
        TPMM,   8, 
        TPCC,   8, 
        TPLC,   8, 
        TPLR,   32, 
        ISTC,   8, 
        TRML,   8, 
        TRON,   8, 
        NXMD,   8, 
        PCRR,   8, 
        C4EN,   8, 
        C43D,   8, 
        EMTT,   8, 
        PROH,   8, 
        DFSB,   8, 
        TUBM,   8, 
        TSTE,   8, 
        DAS3,   8, 
        WKPM,   8, 
        WKMD,   8, 
        WKS5,   8, 
        HOUR,   8, 
        MINS,   8, 
        SECS,   8, 
        DOFM,   8, 
        QKS4,   8, 
        POPU,   8, 
        POPD,   8, 
        NXFE,   8, 
        VTST,   8, 
        VTFE,   8, 
        S5FG,   8, 
        CSTS,   8, 
        ENCS,   8, 
        DEC4,   8, 
        HC4E,   8, 
        ENC6,   8, 
        CSTR,   8, 
        CMPE,   8, 
        DTSE,   8, 
        DTSC,   8, 
        QBOT,   8, 
        QEBT,   8, 
        PBOT,   8, 
        OSYS,   16, 
        PSW0,   8, 
        PSW1,   8, 
        D2DF,   8, 
        F12F,   8
    }

    OperationRegion (CMS1, SystemIO, 0x72, 0x02)
    Field (CMS1, ByteAcc, NoLock, Preserve)
    {
        CMSI,   8, 
        CMSD,   8
    }

    Method (CMSW, 2, NotSerialized)
    {
        CMSI = Arg0
        CMSD = Arg1
    }

    OperationRegion (IO_T, SystemIO, 0x0800, 0x10)
    Field (IO_T, ByteAcc, NoLock, Preserve)
    {
        Offset (0x02), 
        Offset (0x04), 
        Offset (0x06), 
        Offset (0x08), 
        TRP0,   8, 
        Offset (0x0A), 
        Offset (0x0B), 
        Offset (0x0C), 
        Offset (0x0D), 
        Offset (0x0E), 
        Offset (0x0F), 
        Offset (0x10)
    }

    OperationRegion (IO_D, SystemIO, 0x0810, 0x08)
    Field (IO_D, ByteAcc, NoLock, Preserve)
    {
        TRPD,   8
    }

    OperationRegion (NVST, SystemMemory, 0x5F4BEE78, 0x00000056)
    Field (NVST, AnyAcc, Lock, Preserve)
    {
        SMIF,   8, 
        PRM0,   8, 
        PRM1,   8, 
        BRTL,   8, 
        TLST,   8, 
        IGDS,   8, 
        LCDA,   16, 
        CSTE,   16, 
        NSTE,   16, 
        CADL,   16, 
        PADL,   16, 
        LIDS,   8, 
        PWRS,   8, 
        BVAL,   32, 
        CMPF,   8, 
        CSTF,   8, 
        GTF0,   56, 
        GTF2,   56, 
        IDEM,   8, 
        DTS1,   8, 
        DTS2,   8, 
        DTSF,   8, 
        PPMF,   32, 
        DI00,   320
    }

    Scope (_PR)
    {
        Processor (CPU0, 0x01, 0x00000410, 0x06) {}
        Processor (CPU1, 0x02, 0x00000410, 0x06) {}
    }

    Method (IHWM, 2, NotSerialized)
    {
        PRM0 = Arg0
        DI00 = Arg1
        APMC = 0xD1
        Local0 = DI00 /* \DI00 */
        Return (Local0)
    }

    OperationRegion (GSMI, SystemIO, 0xB2, 0x02)
    Field (GSMI, ByteAcc, NoLock, Preserve)
    {
        APMC,   8, 
        APMD,   8
    }

    Name (ECON, Zero)
    Name (CTYP, Zero)
    Name (DSEN, One)
    Name (PSTA, Zero)
    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        If (Arg0 == 0x03)
        {
            P80H = 0x53
        }

        If (Arg0 == 0x04)
        {
            If (ECON)
            {
                \_SB.PCI0.LPC.EC0.FLS4 = One
            }

            P80H = 0x54
        }

        Return (Zero)
    }

    Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        If (ECON)
        {
            \_SB.BAT1.UBIF ()
            Notify (\_SB.BAT1, 0x80) // Status Change
            Notify (\_SB.BAT1, 0x81) // Information Change
        }

        If (Arg0 == 0x03)
        {
            Notify (\_SB.PCI0.EXP1, Zero) // Bus Check
            Notify (\_SB.PCI0.EXP4, Zero) // Bus Check
            P80H = 0xE3
        }

        If (Arg0 == 0x04)
        {
            Notify (\_SB.PCI0.EXP1, Zero) // Bus Check
            Notify (\_SB.PCI0.EXP4, Zero) // Bus Check
            P80H = 0xE4
        }

        Return (Zero)
    }

    Name (_S0, Package (0x04)  // _S0_: S0 System State
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    If (DAS3 == One)
    {
        Name (_S3, Package (0x04)  // _S3_: S3 System State
        {
            0x05, 
            0x05, 
            Zero, 
            Zero
        })
    }

    Name (_S4, Package (0x04)  // _S4_: S4 System State
    {
        0x06, 
        0x06, 
        Zero, 
        Zero
    })
    Name (_S5, Package (0x04)  // _S5_: S5 System State
    {
        0x07, 
        0x07, 
        Zero, 
        Zero
    })
    Scope (_GPE)
    {
        Method (_L03, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.UHC1, 0x02) // Device Wake
        }

        Method (_L04, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.UHC2, 0x02) // Device Wake
        }

        Method (_L05, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.AZAL, 0x02) // Device Wake
            Notify (\_SB.PCI0.MODM, 0x02) // Device Wake
        }

        Method (_L09, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.EXP1, 0x02) // Device Wake
            Notify (\_SB.PCI0.EXP2, 0x02) // Device Wake
            Notify (\_SB.PCI0.EXP3, 0x02) // Device Wake
            Notify (\_SB.PCI0.EXP4, 0x02) // Device Wake
        }

        Method (_L0B, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.P32, 0x02) // Device Wake
        }

        Method (_L0C, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.UHC3, 0x02) // Device Wake
        }

        Method (_L0D, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.ECHI, 0x02) // Device Wake
        }

        Method (_L0E, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Notify (\_SB.PCI0.UHC4, 0x02) // Device Wake
        }

        Method (_L19, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Sleep (0x64)
            If (\_SB.PCI0.EXP4.PDC4)
            {
                \_SB.PCI0.EXP4.PDC4 = One
                \_SB.PCI0.EXP4.HPCS = One
                If (\_SB.PCI0.EXP4.PDS4)
                {
                    INV9 = Zero
                    APMD = 0x94
                    APMC = 0xB2
                    Sleep (0x64)
                }
                Else
                {
                    INV9 = One
                    Sleep (0x64)
                }

                Notify (\_SB.PCI0.EXP4, Zero) // Bus Check
            }
        }

        Method (_L1A, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
        {
            Sleep (0x64)
            If (\_SB.PCI0.EXP1.PDC1)
            {
                \_SB.PCI0.EXP1.PDC1 = One
                \_SB.PCI0.EXP1.HPCS = One
                If (\_SB.PCI0.EXP1.PDS1)
                {
                    INVA = Zero
                    APMD = 0x91
                    APMC = 0xB2
                    Sleep (0x64)
                }
                Else
                {
                    INVA = One
                    Sleep (0x64)
                }

                Notify (\_SB.PCI0.EXP1, Zero) // Bus Check
            }
        }
    }

    Name (GPIC, Zero)
    Method (_PIC, 1, NotSerialized)  // _PIC: Interrupt Model
    {
        GPIC = Arg0
    }

    Method (_INI, 0, NotSerialized)  // _INI: Initialize
    {
        P80H = 0x12
        If (CondRefOf (_OSI, Local0))
        {
            If (_OSI ("Linux"))
            {
                OSYS = 0x03E8
                \_SB.PCI0.LPC.S4TM = 0x0A
                \_SB.PCI0.EXP2.PXS2.LSMP = 0x43
                \_SB.PCI0.EXP2.LL0S = One
                \_SB.PCI0.EXP2.LLL1 = One
            }
            ElseIf (_OSI ("Windows 2006"))
            {
                OSYS = 0x07D6
                \_SB.PCI0.LPC.S4TM = 0x06
                \_SB.PCI0.EXP2.PXS2.LSMP = Zero
                \_SB.PCI0.EXP2.LL0S = Zero
                \_SB.PCI0.EXP2.LLL1 = Zero
            }
            Else
            {
                \_SB.PCI0.LPC.S4TM = 0x0A
                \_SB.PCI0.EXP2.PXS2.LSMP = 0x43
                \_SB.PCI0.EXP2.LL0S = One
                \_SB.PCI0.EXP2.LLL1 = One
                OSYS = 0x07D1
            }
        }
        Else
        {
            \_SB.PCI0.LPC.S4TM = 0x0A
            \_SB.PCI0.EXP2.PXS2.LSMP = 0x43
            \_SB.PCI0.EXP2.LL0S = One
            \_SB.PCI0.EXP2.LLL1 = One
            OSYS = 0x07D0
        }
    }

    Method (GETP, 1, Serialized)
    {
        If ((Arg0 & 0x09) == Zero)
        {
            Return (Ones)
        }

        If ((Arg0 & 0x09) == 0x08)
        {
            Return (0x0384)
        }

        Local0 = ((Arg0 & 0x0300) >> 0x08)
        Local1 = ((Arg0 & 0x3000) >> 0x0C)
        Return ((0x1E * (0x09 - (Local0 + Local1))))
    }

    Method (GDMA, 5, Serialized)
    {
        If (Arg0)
        {
            If (Arg1 && Arg4)
            {
                Return (0x14)
            }

            If (Arg2 && Arg4)
            {
                Return (((0x04 - Arg3) * 0x0F))
            }

            Return (((0x04 - Arg3) * 0x1E))
        }

        Return (Ones)
    }

    Method (GETT, 1, Serialized)
    {
        Return ((0x1E * (0x09 - (((Arg0 >> 0x02) & 0x03
            ) + (Arg0 & 0x03)))))
    }

    Method (GETF, 3, Serialized)
    {
        Name (TMPF, Zero)
        If (Arg0)
        {
            TMPF |= One
        }

        If (Arg2 & 0x02)
        {
            TMPF |= 0x02
        }

        If (Arg1)
        {
            TMPF |= 0x04
        }

        If (Arg2 & 0x20)
        {
            TMPF |= 0x08
        }

        If (Arg2 & 0x4000)
        {
            TMPF |= 0x10
        }

        Return (TMPF) /* \GETF.TMPF */
    }

    Method (SETP, 3, Serialized)
    {
        If (Arg0 > 0xF0)
        {
            Return (0x08)
        }
        Else
        {
            If (Arg1 & 0x02)
            {
                If ((Arg0 <= 0x78) && (Arg2 & 0x02))
                {
                    Return (0x2301)
                }

                If ((Arg0 <= 0xB4) && (Arg2 & One))
                {
                    Return (0x2101)
                }
            }

            Return (0x1001)
        }
    }

    Method (SDMA, 1, Serialized)
    {
        If (Arg0 <= 0x14)
        {
            Return (One)
        }

        If (Arg0 <= 0x1E)
        {
            Return (0x02)
        }

        If (Arg0 <= 0x2D)
        {
            Return (One)
        }

        If (Arg0 <= 0x3C)
        {
            Return (0x02)
        }

        If (Arg0 <= 0x5A)
        {
            Return (One)
        }

        Return (Zero)
    }

    Method (SETT, 3, Serialized)
    {
        If (Arg1 & 0x02)
        {
            If ((Arg0 <= 0x78) && (Arg2 & 0x02))
            {
                Return (0x0B)
            }

            If ((Arg0 <= 0xB4) && (Arg2 & One))
            {
                Return (0x09)
            }
        }

        Return (0x04)
    }

    Scope (_SB)
    {
        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C") /* Power Button Device */)  // _HID: Hardware ID
        }

        Device (LID0)
        {
            Name (_HID, EisaId ("PNP0C0D") /* Lid Device */)  // _HID: Hardware ID
            Method (_LID, 0, NotSerialized)  // _LID: Lid Status
            {
                If (ECON)
                {
                    If (^^PCI0.LPC.EC0.LID2 == Zero)
                    {
                        Return (One)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
                Else
                {
                    Return (One)
                }
            }
        }

        Device (SLPB)
        {
            Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */)  // _HID: Hardware ID
        }

        Device (BAT1)
        {
            Name (CBTI, Zero)
            Name (PBTI, Zero)
            Name (BTIN, Zero)
            Name (BTCH, Zero)
            Name (BIFI, Zero)
            Name (SEL0, Zero)
            Name (BCRI, Zero)
            Name (PBIF, Package (0x0D)
            {
                One, 
                0x1130, 
                0x1130, 
                One, 
                0x2B5C, 
                0x012C, 
                0x84, 
                0x20, 
                0x20, 
                "BAT1      ", 
                "11        ", 
                "11        ", 
                "11        "
            })
            Name (PBST, Package (0x04)
            {
                Zero, 
                Ones, 
                Ones, 
                0x2710
            })
            Name (ERRC, Zero)
            Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
            Name (_UID, Zero)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                P80H = 0x11
                If (BTIN)
                {
                    Return (0x1F)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (_BIF, 0, NotSerialized)  // _BIF: Battery Information
            {
                P80H = 0x12
                If (BIFI == Zero)
                {
                    UBIF ()
                    BIFI = One
                }

                Return (PBIF) /* \_SB_.BAT1.PBIF */
            }

            Name (LFCC, 0x1130)
            Method (UBIF, 0, NotSerialized)
            {
                If (ECON)
                {
                    P80H = 0x13
                    Local0 = ^^PCI0.LPC.EC0.BTDC /* \_SB_.PCI0.LPC_.EC0_.BTDC */
                    Local1 = ^^PCI0.LPC.EC0.LFC2 /* \_SB_.PCI0.LPC_.EC0_.LFC2 */
                    Local2 = ^^PCI0.LPC.EC0.BTDV /* \_SB_.PCI0.LPC_.EC0_.BTDV */
                    Local3 = ^^PCI0.LPC.EC0.BTMD /* \_SB_.PCI0.LPC_.EC0_.BTMD */
                    Local4 = ^^PCI0.LPC.EC0.BTMN /* \_SB_.PCI0.LPC_.EC0_.BTMN */
                    Local5 = ^^PCI0.LPC.EC0.BTSN /* \_SB_.PCI0.LPC_.EC0_.BTSN */
                    Local6 = ^^PCI0.LPC.EC0.LION /* \_SB_.PCI0.LPC_.EC0_.LION */
                    PBIF [One] = Local0
                    PBIF [0x02] = Local1
                    PBIF [0x04] = Local2
                    LFCC = Local1
                    Local7 = (Local1 * 0x04)
                    Local7 /= 0x64
                    PBIF [0x06] = Local7
                    If (Local6)
                    {
                        PBIF [0x0B] = "NiMH"
                    }
                    Else
                    {
                        PBIF [0x0B] = "LION"
                    }

                    Local3 &= 0x0F
                    If (Local3 == One)
                    {
                        PBIF [0x09] = "UM08A31"
                    }
                    ElseIf (Local3 == 0x02)
                    {
                        PBIF [0x09] = "UM08A32"
                    }
                    ElseIf (Local3 == 0x03)
                    {
                        PBIF [0x09] = "UM08A51"
                    }
                    ElseIf (Local3 == 0x04)
                    {
                        PBIF [0x09] = "UM08A52"
                    }
                    ElseIf (Local3 == 0x05)
                    {
                        PBIF [0x09] = "UM08A71"
                    }
                    ElseIf (Local3 == 0x06)
                    {
                        PBIF [0x09] = "UM08A72"
                    }
                    ElseIf (Local3 == 0x07)
                    {
                        PBIF [0x09] = "UM08A73"
                    }
                    ElseIf (Local3 == 0x08)
                    {
                        PBIF [0x09] = "UM08A74"
                    }
                    ElseIf (Local3 == 0x09)
                    {
                        PBIF [0x09] = "UM08B51"
                    }
                    ElseIf (Local3 == 0x0A)
                    {
                        PBIF [0x09] = "UM08B71"
                    }
                    ElseIf (Local3 == 0x0B)
                    {
                        PBIF [0x09] = "UM08B72"
                    }
                    ElseIf (Local3 == 0x0C)
                    {
                        PBIF [0x09] = "UM08B73"
                    }
                    ElseIf (Local3 == 0x0D)
                    {
                        PBIF [0x09] = "UM08B74"
                    }
                    ElseIf (Local3 == 0x0E)
                    {
                        PBIF [0x09] = "UM08AC1"
                    }

                    If (Local4 == 0x03)
                    {
                        PBIF [0x0C] = "SANYO"
                    }
                    ElseIf (Local4 == 0x04)
                    {
                        PBIF [0x0C] = "SONY"
                    }
                    ElseIf (Local4 == 0x05)
                    {
                        PBIF [0x0C] = "PANASONIC"
                    }
                    ElseIf (Local4 == 0x07)
                    {
                        PBIF [0x0C] = "SIMPLO"
                    }
                    ElseIf (Local4 == 0x08)
                    {
                        PBIF [0x0C] = "MOTOROLA"
                    }
                    ElseIf (Local4 == 0x09)
                    {
                        PBIF [0x0C] = "Celxpert"
                    }
                    Else
                    {
                        PBIF [0x0C] = "UNKNOWN"
                    }

                    PBIF [0x0A] = ITOS (Local5)
                }
            }

            Name (RCAP, Zero)
            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                P80H = 0x14
                If (BTIN == Zero)
                {
                    PBST [Zero] = Zero
                    PBST [One] = Ones
                    PBST [0x02] = Ones
                    PBST [0x03] = Ones
                    Return (PBST) /* \_SB_.BAT1.PBST */
                }

                If (ECON)
                {
                    Local0 = ^^PCI0.LPC.EC0.MBTC /* \_SB_.PCI0.LPC_.EC0_.MBTC */
                    Local1 = ^^PCI0.LPC.EC0.MBRM /* \_SB_.PCI0.LPC_.EC0_.MBRM */
                    Local2 = ^^PCI0.LPC.EC0.MBVG /* \_SB_.PCI0.LPC_.EC0_.MBVG */
                    Local3 = ^^PCI0.LPC.EC0.MCUR /* \_SB_.PCI0.LPC_.EC0_.MCUR */
                    Local4 = ^^PCI0.LPC.EC0.BTST /* \_SB_.PCI0.LPC_.EC0_.BTST */
                    Local5 = ^^PCI0.LPC.EC0.MBTF /* \_SB_.PCI0.LPC_.EC0_.MBTF */
                    Local6 = ^^PCI0.LPC.EC0.ACDF /* \_SB_.PCI0.LPC_.EC0_.ACDF */
                    If (Local6)
                    {
                        If (Local5 == One)
                        {
                            Local7 = Zero
                            Local1 = LFCC /* \_SB_.BAT1.LFCC */
                        }
                        ElseIf (Local0 == One)
                        {
                            Local7 = 0x02
                        }
                        Else
                        {
                            Local7 = Zero
                        }
                    }
                    ElseIf (Local4 && One)
                    {
                        Local7 = One
                    }
                    Else
                    {
                        Local7 = Zero
                    }

                    Local4 &= 0x04
                    If (Local4 == 0x04)
                    {
                        Local7 |= Local4
                    }

                    PBST [Zero] = Local7
                    If (!(Local1 & 0x8000))
                    {
                        PBST [0x02] = Local1
                    }

                    If (!(Local2 & 0x8000))
                    {
                        PBST [0x03] = Local2
                    }

                    If (Local3 && 0x8000)
                    {
                        If (Local3 != 0xFFFF)
                        {
                            Local3 = ~Local3
                            Local3++
                            Local3 &= 0xFFFF
                        }
                    }

                    PBST [One] = Local3
                }

                Return (PBST) /* \_SB_.BAT1.PBST */
            }

            Method (ITOS, 1, NotSerialized)
            {
                Local0 = ""
                Local1 = 0x04
                While (Local1)
                {
                    Local1--
                    Local4 = ((Arg0 >> (Local1 << 0x02)) & 0x0F)
                    Local2 = DerefOf (CHAR [Local4])
                    Concatenate (Local0, Local2, Local5)
                    Local0 = Local5
                }

                Return (Local0)
            }

            Name (CHAR, Package (0x10)
            {
                "0", 
                "1", 
                "2", 
                "3", 
                "4", 
                "5", 
                "6", 
                "7", 
                "8", 
                "9", 
                "A", 
                "B", 
                "C", 
                "D", 
                "E", 
                "F"
            })
            Method (BATS, 0, NotSerialized)
            {
                If (ECON)
                {
                    P80H = 0x15
                    Local0 = ^^PCI0.LPC.EC0.MBTS /* \_SB_.PCI0.LPC_.EC0_.MBTS */
                    If (Local0 == One)
                    {
                        If (BTIN == Zero)
                        {
                            BTCH = One
                            BIFI = Zero
                        }

                        BTIN = One
                    }
                    Else
                    {
                        If (BTIN == One)
                        {
                            BTCH = One
                            BIFI = Zero
                        }

                        BTIN = Zero
                    }
                }
            }
        }

        Device (ACAD)
        {
            Name (_HID, "ACPI0003" /* Power Source Device */)  // _HID: Hardware ID
            Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
            {
                _SB
            })
            Name (ACST, Zero)
            Method (_PSR, 0, NotSerialized)  // _PSR: Power Source
            {
                If (ECON)
                {
                    P80H = 0x16
                    ACST = ^^PCI0.LPC.EC0.ACDF /* \_SB_.PCI0.LPC_.EC0_.ACDF */
                }
                Else
                {
                    ACST = One
                }

                If (ACST)
                {
                    Local0 = One
                    ^^BAT1.BCRI = Zero
                }
                Else
                {
                    Local0 = Zero
                }

                Return (Local0)
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */)  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID
            Name (_ADR, Zero)  // _ADR: Address
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                P80H = 0x12
                If (CondRefOf (_OSI, Local0))
                {
                    If (_OSI ("Linux"))
                    {
                        OSYS = 0x03E8
                        ^LPC.S4TM = 0x0A
                        ^EXP2.PXS2.LSMP = 0x43
                        ^EXP2.LL0S = One
                        ^EXP2.LLL1 = One
                    }
                    ElseIf (_OSI ("Windows 2006"))
                    {
                        OSYS = 0x07D6
                        ^LPC.S4TM = 0x06
                        ^EXP2.PXS2.LSMP = Zero
                        ^EXP2.LL0S = Zero
                        ^EXP2.LLL1 = Zero
                    }
                    Else
                    {
                        ^LPC.S4TM = 0x0A
                        ^EXP2.PXS2.LSMP = 0x43
                        ^EXP2.LL0S = One
                        ^EXP2.LLL1 = One
                        OSYS = 0x07D1
                    }
                }
                Else
                {
                    ^LPC.S4TM = 0x0A
                    ^EXP2.PXS2.LSMP = 0x43
                    ^EXP2.LL0S = One
                    ^EXP2.LLL1 = One
                    OSYS = 0x07D0
                }
            }

            Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
            {
                Local0 = Arg2
                Local1 = (Local0 * 0x04)
                Name (BUF1, Buffer (Local1) {})
                BUF1 = Arg3
                Local1 = Zero
                Local2 = Zero
                While (Local0)
                {
                    Local2 = (Local1 * 0x04)
                    CreateDWordField (BUF1, Local2, CAPB)
                    If (Arg1)
                    {
                        If (Local1 == Zero)
                        {
                            CAPB &= 0xFFFFFFFC
                        }
                    }
                    Else
                    {
                    }

                    Local1++
                    Local0--
                }

                Return (BUF1) /* \_SB_.PCI0._OSC.BUF1 */
            }

            Name (_BBN, Zero)  // _BBN: BIOS Bus Number
            OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
            Field (HBUS, DWordAcc, NoLock, Preserve)
            {
                Offset (0x50), 
                    ,   4, 
                PM0H,   2, 
                Offset (0x51), 
                PM1L,   2, 
                    ,   2, 
                PM1H,   2, 
                Offset (0x52), 
                PM2L,   2, 
                    ,   2, 
                PM2H,   2, 
                Offset (0x53), 
                PM3L,   2, 
                    ,   2, 
                PM3H,   2, 
                Offset (0x54), 
                PM4L,   2, 
                    ,   2, 
                PM4H,   2, 
                Offset (0x55), 
                PM5L,   2, 
                    ,   2, 
                PM5H,   2, 
                Offset (0x56), 
                PM6L,   2, 
                    ,   2, 
                PM6H,   2, 
                Offset (0x57), 
                    ,   7, 
                HENA,   1, 
                Offset (0x5C), 
                    ,   3, 
                TOUD,   5
            }

            Name (BUF0, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    0x00,, )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000CF7,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000CF8,         // Length
                    0x00,, , TypeStatic)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000D00,         // Range Minimum
                    0x0000FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0000F300,         // Length
                    0x00,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    0x00,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C0000,         // Range Minimum
                    0x000C3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y00, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C4000,         // Range Minimum
                    0x000C7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y01, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000CBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y02, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000CC000,         // Range Minimum
                    0x000CFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y03, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D0000,         // Range Minimum
                    0x000D3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y04, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D4000,         // Range Minimum
                    0x000D7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y05, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D8000,         // Range Minimum
                    0x000DBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y06, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000DC000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y07, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E0000,         // Range Minimum
                    0x000E3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y08, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E4000,         // Range Minimum
                    0x000E7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y09, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E8000,         // Range Minimum
                    0x000EBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y0A, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000EC000,         // Range Minimum
                    0x000EFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    0x00,, _Y0B, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000F0000,         // Range Minimum
                    0x000FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00010000,         // Length
                    0x00,, _Y0C, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFEBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    0x00,, _Y0D, AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                If (PM1L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y00._LEN, C0LN)  // _LEN: Length
                    C0LN = Zero
                }

                If (PM1L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y00._RW, C0RW)  // _RW_: Read-Write Status
                    C0RW = Zero
                }

                If (PM1H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y01._LEN, C4LN)  // _LEN: Length
                    C4LN = Zero
                }

                If (PM1H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y01._RW, C4RW)  // _RW_: Read-Write Status
                    C4RW = Zero
                }

                If (PM2L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y02._LEN, C8LN)  // _LEN: Length
                    C8LN = Zero
                }

                If (PM2L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y02._RW, C8RW)  // _RW_: Read-Write Status
                    C8RW = Zero
                }

                If (PM2H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y03._LEN, CCLN)  // _LEN: Length
                    CCLN = Zero
                }

                If (PM2H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y03._RW, CCRW)  // _RW_: Read-Write Status
                    CCRW = Zero
                }

                If (PM3L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y04._LEN, D0LN)  // _LEN: Length
                    D0LN = Zero
                }

                If (PM3L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y04._RW, D0RW)  // _RW_: Read-Write Status
                    D0RW = Zero
                }

                If (PM3H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y05._LEN, D4LN)  // _LEN: Length
                    D4LN = Zero
                }

                If (PM3H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y05._RW, D4RW)  // _RW_: Read-Write Status
                    D4RW = Zero
                }

                If (PM4L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y06._LEN, D8LN)  // _LEN: Length
                    D8LN = Zero
                }

                If (PM4L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y06._RW, D8RW)  // _RW_: Read-Write Status
                    D8RW = Zero
                }

                If (PM4H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y07._LEN, DCLN)  // _LEN: Length
                    DCLN = Zero
                }

                If (PM4H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y07._RW, DCRW)  // _RW_: Read-Write Status
                    DCRW = Zero
                }

                If (PM5L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y08._LEN, E0LN)  // _LEN: Length
                    E0LN = Zero
                }

                If (PM5L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y08._RW, E0RW)  // _RW_: Read-Write Status
                    E0RW = Zero
                }

                If (PM5H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y09._LEN, E4LN)  // _LEN: Length
                    E4LN = Zero
                }

                If (PM5H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y09._RW, E4RW)  // _RW_: Read-Write Status
                    E4RW = Zero
                }

                If (PM6L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0A._LEN, E8LN)  // _LEN: Length
                    E8LN = Zero
                }

                If (PM6L == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0A._RW, E8RW)  // _RW_: Read-Write Status
                    E8RW = Zero
                }

                If (PM6H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0B._LEN, ECLN)  // _LEN: Length
                    ECLN = Zero
                }

                If (PM6H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0B._RW, ECRW)  // _RW_: Read-Write Status
                    ECRW = Zero
                }

                If (PM0H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0C._LEN, F0LN)  // _LEN: Length
                    F0LN = Zero
                }

                If (PM0H == One)
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, F0RW)  // _RW_: Read-Write Status
                    F0RW = Zero
                }

                CreateDWordField (BUF0, \_SB.PCI0._Y0D._MIN, M1MN)  // _MIN: Minimum Base Address
                CreateDWordField (BUF0, \_SB.PCI0._Y0D._MAX, M1MX)  // _MAX: Maximum Base Address
                CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, M1LN)  // _LEN: Length
                M1MN = (TOUD << 0x1B)
                M1LN = ((M1MX - M1MN) + One)
                Return (BUF0) /* \_SB_.PCI0.BUF0 */
            }

            Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
            {
                If (GPIC == Zero)
                {
                    Return (Package (0x0F)
                    {
                        Package (0x04)
                        {
                            0x0001FFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001BFFFF, 
                            Zero, 
                            ^LPC.LNKG, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            One, 
                            ^LPC.LNKB, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x02, 
                            ^LPC.LNKC, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x03, 
                            ^LPC.LNKD, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            One, 
                            ^LPC.LNKB, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x02, 
                            ^LPC.LNKC, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x03, 
                            ^LPC.LNKD, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            One, 
                            ^LPC.LNKB, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            Zero, 
                            ^LPC.LNKA, 
                            Zero
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            One, 
                            ^LPC.LNKB, 
                            Zero
                        }
                    })
                }
                Else
                {
                    Return (Package (0x0F)
                    {
                        Package (0x04)
                        {
                            0x0001FFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001BFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x02, 
                            Zero, 
                            0x12
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x03, 
                            Zero, 
                            0x13
                        }, 

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            Zero, 
                            Zero, 
                            0x10
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            One, 
                            Zero, 
                            0x11
                        }
                    })
                }
            }

            Device (P32)
            {
                Name (_ADR, 0x001E0000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    If (WKPM == One)
                    {
                        Return (Package (0x02)
                        {
                            0x0B, 
                            0x04
                        })
                    }
                    Else
                    {
                        Return (Package (0x02)
                        {
                            0x0B, 
                            Zero
                        })
                    }
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (GPIC == Zero)
                    {
                        Return (Package (0x09)
                        {
                            Package (0x04)
                            {
                                0x0002FFFF, 
                                Zero, 
                                ^^LPC.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                One, 
                                ^^LPC.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x02, 
                                ^^LPC.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x03, 
                                ^^LPC.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                Zero, 
                                ^^LPC.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                One, 
                                ^^LPC.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x02, 
                                ^^LPC.LNKF, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x03, 
                                ^^LPC.LNKG, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0008FFFF, 
                                Zero, 
                                ^^LPC.LNKE, 
                                Zero
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x09)
                        {
                            Package (0x04)
                            {
                                0x0002FFFF, 
                                Zero, 
                                Zero, 
                                0x12
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                One, 
                                Zero, 
                                0x13
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x02, 
                                Zero, 
                                0x11
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x03, 
                                Zero, 
                                0x10
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                Zero, 
                                Zero, 
                                0x13
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                One, 
                                Zero, 
                                0x12
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x02, 
                                Zero, 
                                0x15
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x03, 
                                Zero, 
                                0x16
                            }, 

                            Package (0x04)
                            {
                                0x0008FFFF, 
                                Zero, 
                                Zero, 
                                0x14
                            }
                        })
                    }
                }
            }

            Device (LPC)
            {
                Name (_ADR, 0x001F0000)  // _ADR: Address
                OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
                Field (PRR0, AnyAcc, NoLock, Preserve)
                {
                    PIRA,   8, 
                    PIRB,   8, 
                    PIRC,   8, 
                    PIRD,   8
                }

                OperationRegion (PRR1, PCI_Config, 0x68, 0x04)
                Field (PRR1, AnyAcc, NoLock, Preserve)
                {
                    PIRE,   8, 
                    PIRF,   8, 
                    PIRG,   8, 
                    PIRH,   8
                }

                OperationRegion (PRR2, PCI_Config, 0x80, 0x02)
                Field (PRR2, AnyAcc, NoLock, Preserve)
                {
                    IODL,   8, 
                    IODH,   8
                }

                OperationRegion (BRKE, PCI_Config, 0xAA, 0x02)
                Field (BRKE, AnyAcc, NoLock, Preserve)
                {
                    S4TM,   8, 
                    PCEE,   8
                }

                Device (LNKA)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, One)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRA & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRA |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRA & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRA & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKA._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRA = Local0
                    }
                }

                Device (LNKB)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x02)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRB & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRB |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRB & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRB & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKB._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRB = Local0
                    }
                }

                Device (LNKC)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x03)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRC & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRC |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRC & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRC & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKC._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRC = Local0
                    }
                }

                Device (LNKD)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x04)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRD & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRD |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRD & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRD & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKD._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRD = Local0
                    }
                }

                Device (LNKE)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x05)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRE & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRE |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRE & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRE & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKE._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRE = Local0
                    }
                }

                Device (LNKF)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x06)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRF & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRF |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRF & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRF & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKF._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRF = Local0
                    }
                }

                Device (LNKG)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x07)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRG & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRG |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRG & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRG & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKG._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRG = Local0
                    }
                }

                Device (LNKH)
                {
                    Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                    Name (_UID, 0x08)  // _UID: Unique ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (PIRH & 0x80)
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        PIRH |= 0x80
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {0}
                        })
                        CreateWordField (BUF0, One, IRQW)
                        If (PIRH & 0x80)
                        {
                            Local0 = Zero
                        }
                        Else
                        {
                            Local0 = One
                        }

                        IRQW = (Local0 << (PIRH & 0x0F))
                        Return (BUF0) /* \_SB_.PCI0.LPC_.LNKH._CRS.BUF0 */
                    }

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,7,9,10,11,12}
                    })
                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, One, IRQW)
                        FindSetRightBit (IRQW, Local0)
                        If (IRQW != Zero)
                        {
                            Local0 &= 0x7F
                            Local0--
                        }
                        Else
                        {
                            Local0 |= 0x80
                        }

                        PIRH = Local0
                    }
                }

                Device (SYSR)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0068,             // Range Minimum
                            0x0068,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0200,             // Range Minimum
                            0x0200,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x164E,             // Range Minimum
                            0x164E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0600,             // Range Minimum
                            0x0600,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0610,             // Range Minimum
                            0x0610,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0400,             // Range Minimum
                            0x0400,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0x40,               // Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xE0000000,         // Address Base
                            0x10000000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED14000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED18000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED19000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFEC00000,         // Address Base
                            0x00001000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFEE00000,         // Address Base
                            0x00001000,         // Address Length
                            )
                    })
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200") /* PC-class DMA Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x01,               // Alignment
                            0x11,               // Length
                            )
                        IO (Decode16,
                            0x0093,             // Range Minimum
                            0x0093,             // Range Maximum
                            0x01,               // Alignment
                            0x0D,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8_16, )
                            {4}
                    })
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */)  // _HID: Hardware ID
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        If (HPTS == One)
                        {
                            Return (BUF0) /* \_SB_.PCI0.LPC_.RTC_.BUF0 */
                        }
                        Else
                        {
                            Return (BUF1) /* \_SB_.PCI0.LPC_.RTC_.BUF1 */
                        }
                    }
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103") /* HPET System Timer */)  // _HID: Hardware ID
                    Name (BUF0, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {0}
                        IRQNoFlags ()
                            {8}
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            _Y0E)
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (OSYS >= 0x07D1)
                        {
                            If (HPTS == One)
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }
                        ElseIf (HPTS)
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        If (HPTS == One)
                        {
                            CreateDWordField (BUF0, \_SB.PCI0.LPC.HPET._Y0E._BAS, HPT0)  // _BAS: Base Address
                            If (HPTA == One)
                            {
                                HPT0 = 0xFED01000
                            }

                            If (HPTA == 0x02)
                            {
                                HPT0 = 0xFED02000
                            }

                            If (HPTA == 0x03)
                            {
                                HPT0 = 0xFED03000
                            }
                        }

                        Return (BUF0) /* \_SB_.PCI0.LPC_.HPET.BUF0 */
                    }
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000") /* 8259-compatible Programmable Interrupt Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0024,             // Range Minimum
                            0x0024,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0028,             // Range Minimum
                            0x0028,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x002C,             // Range Minimum
                            0x002C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0030,             // Range Minimum
                            0x0030,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0034,             // Range Minimum
                            0x0034,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0038,             // Range Minimum
                            0x0038,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x003C,             // Range Minimum
                            0x003C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A4,             // Range Minimum
                            0x00A4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A8,             // Range Minimum
                            0x00A8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00AC,             // Range Minimum
                            0x00AC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B0,             // Range Minimum
                            0x00B0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B4,             // Range Minimum
                            0x00B4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B8,             // Range Minimum
                            0x00B8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00BC,             // Range Minimum
                            0x00BC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (FPU)
                {
                    Name (_HID, EisaId ("PNP0C04") /* x87-compatible Floating Point Processing Unit */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x00F0,             // Range Minimum
                            0x00F0,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (TIMR)
                {
                    Name (_HID, EisaId ("PNP0100") /* PC-class System Timer */)  // _HID: Hardware ID
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x10,               // Alignment
                            0x04,               // Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x10,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        If (HPTS)
                        {
                            Return (BUF0) /* \_SB_.PCI0.LPC_.TIMR.BUF0 */
                        }

                        Return (BUF1) /* \_SB_.PCI0.LPC_.TIMR.BUF1 */
                    }
                }

                Device (FWHD)
                {
                    Name (_HID, EisaId ("INT0800") /* Intel 82802 Firmware Hub Device */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        Memory32Fixed (ReadOnly,
                            0xFF800000,         // Address Base
                            0x00800000,         // Address Length
                            )
                    })
                }

                Device (KBC)
                {
                    Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {1}
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (0x0F)
                    }
                }

                Device (MOUE)
                {
                    Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {12}
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (0x0F)
                    }
                }

                Device (EC0)
                {
                    Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0062,             // Range Minimum
                            0x0062,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0066,             // Range Minimum
                            0x0066,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                    })
                    Name (_GPE, 0x17)  // _GPE: General Purpose Events
                    Name (SEL0, 0xF0)
                    Name (BFLG, Zero)
                    Method (_REG, 2, NotSerialized)  // _REG: Region Availability
                    {
                        P80H = 0x17
                        If (Arg0 == 0x03)
                        {
                            Local0 = Arg1
                            If (Local0)
                            {
                                ECON = One
                            }
                            Else
                            {
                                ECON = Zero
                            }
                        }

                        If (ECON)
                        {
                            P80H = 0x18
                            RG59 = 0x03
                            CPLE = One
                        }
                    }

                    OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x04), 
                        CMCM,   8, 
                        CMD1,   8, 
                        CMD2,   8, 
                        CMD3,   8, 
                        Offset (0x18), 
                        SMPR,   8, 
                        SMST,   8, 
                        SMAD,   8, 
                        SMCM,   8, 
                        SMD0,   256, 
                        BCNT,   8, 
                        SMAA,   8, 
                        BATD,   16, 
                        ACDF,   1, 
                        Offset (0x41), 
                            ,   5, 
                        FLS4,   1, 
                        Offset (0x42), 
                        Offset (0x4C), 
                        ARCD,   1, 
                            ,   3, 
                        DOCK,   1, 
                        LANC,   1, 
                        LID2,   1, 
                        CRTS,   1, 
                        Offset (0x51), 
                        BLVL,   8, 
                        Offset (0x53), 
                        DOFF,   8, 
                        Offset (0x58), 
                        CTMP,   8, 
                        RG59,   8, 
                        Offset (0x60), 
                        WLAN,   1, 
                        BLTH,   1, 
                        CPLE,   1, 
                            ,   3, 
                        WLST,   1, 
                        BLTS,   1, 
                            ,   2, 
                        ST3G,   1, 
                        MNST,   1, 
                            ,   1, 
                        ED3G,   1, 
                            ,   3, 
                        Offset (0x63), 
                        TJ85,   1, 
                            ,   6, 
                        VGAF,   1, 
                        Offset (0x70), 
                        BTMD,   8, 
                        MBTS,   1, 
                        MBTF,   1, 
                        BATF,   1, 
                            ,   3, 
                        MBDX,   1, 
                        MBAD,   1, 
                        MBTC,   1, 
                            ,   2, 
                        LION,   1, 
                        Offset (0x77), 
                        BA1C,   8, 
                        MCYC,   16, 
                        MTMP,   16, 
                        MDAT,   16, 
                        MCUR,   16, 
                        MBRM,   16, 
                        MBVG,   16, 
                        MRTF,   16, 
                        MMER,   8, 
                        BA2C,   8, 
                        LFC2,   16, 
                        BTSN,   16, 
                        BTDC,   16, 
                        BTDV,   16, 
                        BTMN,   8, 
                        Offset (0x93), 
                        BTST,   8, 
                        Offset (0x9D), 
                        OSTP,   1, 
                        Offset (0xA0), 
                        ABMD,   8, 
                        ABTS,   1, 
                        ABFC,   1, 
                            ,   4, 
                        ABDX,   1, 
                        ABAD,   1, 
                        ABCG,   1, 
                            ,   2, 
                        ABTP,   1, 
                        Offset (0xA8), 
                        ACYC,   16, 
                        ATMP,   16, 
                        ADAT,   16, 
                        ABCR,   16, 
                        ABRM,   16, 
                        ABVG,   16, 
                        ARTF,   16, 
                        AMER,   8, 
                        Offset (0xB8), 
                        AFCC,   16, 
                        ABSN,   16, 
                        ABDC,   16, 
                        ABDV,   16, 
                        ABMN,   8, 
                        Offset (0xD0), 
                        EBPL,   1, 
                        Offset (0xD1), 
                        PWRE,   1, 
                        Offset (0xD2), 
                            ,   6, 
                        VAUX,   1, 
                        Offset (0xD6), 
                        DBPL,   8, 
                        Offset (0xE0), 
                        DESP,   8, 
                        DTS3,   8, 
                        DE0L,   8, 
                        DE0H,   8, 
                        DE1L,   8, 
                        DE1H,   8, 
                        DE2L,   8, 
                        DE2H,   8, 
                        DE3L,   8, 
                        DE3H,   8, 
                        DE4L,   8, 
                        DE4H,   8
                    }

                    Method (APOL, 1, NotSerialized)
                    {
                        P80H = 0x19
                        DBPL = Arg0
                        EBPL = One
                    }

                    Method (CPOL, 1, NotSerialized)
                    {
                        P80H = 0x1A
                        If (PSTA == Zero)
                        {
                            If (ECON != Zero)
                            {
                                APOL (Arg0)
                                PSTA = One
                            }
                        }
                    }

                    Method (_Q20, 0, NotSerialized)  // _Qxx: EC Query
                    {
                        P80H = 0x20
                        If (ECON)
                        {
                            If (SMST & 0x40)
                            {
                                Local0 = SMAA /* \_SB_.PCI0.LPC_.EC0_.SMAA */
                                If (Local0 == 0x14)
                                {
                                    SMST &= 0xBF
                                    Local1 = PWRE /* \_SB_.PCI0.LPC_.EC0_.PWRE */
                                    If (Local1)
                                    {
                                        PWRE = Zero
                                        BFLG = 0x12
                                        CPOL (One)
                                    }
                                }

                                If (Local0 == 0x16)
                                {
                                    SMST &= 0xBF
                                    ^^^^BAT1.BCRI = 0x04
                                    Notify (BAT1, 0x80) // Status Change
                                }
                                Else
                                {
                                    ^^^^BAT1.BCRI = Zero
                                }
                            }
                        }
                    }

                    Method (_Q09, 0, NotSerialized)  // _Qxx: EC Query
                    {
                        P80H = 0x09
                        If (ECON)
                        {
                            P80H = 0x1B
                            PSTA = Zero
                            ^^^^BAT1.BATS ()
                            Notify (ACAD, 0x80) // Status Change
                            Sleep (0x01F4)
                            Notify (BAT1, 0x80) // Status Change
                            If (^^^^BAT1.BTCH)
                            {
                                P80H = 0x1C
                                ^^^^BAT1.UBIF ()
                                Notify (BAT1, 0x81) // Information Change
                                ^^^^BAT1.BTCH = Zero
                            }
                        }
                    }

                    Method (_Q9B, 0, NotSerialized)  // _Qxx: EC Query
                    {
                        P80H = 0x9B
                        Sleep (0x32)
                        Notify (LID0, 0x80) // Status Change
                    }
                }
            }

            Device (UHC1)
            {
                Name (_ADR, 0x001D0000)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x03
                })
                OperationRegion (USBR, PCI_Config, 0xC4, One)
                Field (USBR, AnyAcc, NoLock, Preserve)
                {
                    URES,   8
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0 == Zero)
                    {
                        URES = Zero
                    }

                    If (Arg0 == One)
                    {
                        URES = 0x03
                    }
                }
            }

            Device (UHC2)
            {
                Name (_ADR, 0x001D0001)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x04, 
                    0x03
                })
                OperationRegion (USBR, PCI_Config, 0xC4, One)
                Field (USBR, AnyAcc, NoLock, Preserve)
                {
                    URES,   8
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0 == Zero)
                    {
                        URES = Zero
                    }

                    If (Arg0 == One)
                    {
                        URES = 0x03
                    }
                }
            }

            Device (UHC3)
            {
                Name (_ADR, 0x001D0002)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x0C, 
                    0x03
                })
                OperationRegion (USBR, PCI_Config, 0xC4, One)
                Field (USBR, AnyAcc, NoLock, Preserve)
                {
                    URES,   8
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0 == Zero)
                    {
                        URES = Zero
                    }

                    If (Arg0 == One)
                    {
                        URES = 0x03
                    }
                }
            }

            Device (UHC4)
            {
                Name (_ADR, 0x001D0003)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x0E, 
                    0x03
                })
                OperationRegion (USBR, PCI_Config, 0xC4, One)
                Field (USBR, AnyAcc, NoLock, Preserve)
                {
                    URES,   8
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0 == Zero)
                    {
                        URES = Zero
                    }

                    If (Arg0 == One)
                    {
                        URES = 0x03
                    }
                }
            }

            Device (ECHI)
            {
                Name (_ADR, 0x001D0007)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x0D, 
                    0x03
                })
                OperationRegion (USBR, PCI_Config, 0xC4, One)
                Field (USBR, AnyAcc, NoLock, Preserve)
                {
                    URES,   8
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0 == Zero)
                    {
                        URES = Zero
                    }

                    If (Arg0 == One)
                    {
                        URES = 0x03
                    }
                }
            }

            Device (EXP1)
            {
                Name (_ADR, 0x001C0000)  // _ADR: Address
                OperationRegion (P1CS, PCI_Config, 0x40, 0x0100)
                Field (P1CS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10), 
                        ,   4, 
                    LKD1,   1, 
                    Offset (0x1A), 
                    ABP1,   1, 
                        ,   2, 
                    PDC1,   1, 
                        ,   2, 
                    PDS1,   1, 
                    Offset (0x20), 
                    RID1,   16, 
                    PSP1,   1, 
                    PPP1,   1, 
                    Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (GPIC == Zero)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPC.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                ^^LPC.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                ^^LPC.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPC.LNKD, 
                                Zero
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x10
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                Zero, 
                                0x11
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                Zero, 
                                0x12
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                Zero, 
                                0x13
                            }
                        })
                    }
                }

                Device (J380)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCFG, PCI_Config, Zero, 0xFF)
                    Field (PCFG, ByteAcc, NoLock, Preserve)
                    {
                        DVID,   32, 
                        Offset (0x2C), 
                        SSID,   32, 
                        Offset (0xAC), 
                        D3EF,   8, 
                        Offset (0xB2), 
                        LAT0,   8, 
                        Offset (0xCF), 
                        ATRB,   8, 
                        Offset (0xD3), 
                        PMC0,   8
                    }

                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J382)
                {
                    Name (_ADR, 0x02)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J383)
                {
                    Name (_ADR, 0x03)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J384)
                {
                    Name (_ADR, 0x04)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }
            }

            Device (EXP2)
            {
                Name (_ADR, 0x001C0001)  // _ADR: Address
                OperationRegion (P2CS, PCI_Config, 0x40, 0x0100)
                Field (P2CS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10), 
                    LL0S,   1, 
                    LLL1,   1, 
                        ,   2, 
                    LKD2,   1, 
                    Offset (0x1A), 
                    ABP2,   1, 
                        ,   2, 
                    PDC2,   1, 
                        ,   2, 
                    PDS2,   1, 
                    Offset (0x20), 
                    RID2,   16, 
                    PSP2,   1, 
                    PPP2,   1, 
                    Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Device (PXS2)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (P2CS, PCI_Config, 0x80, 0x0100)
                    Field (P2CS, AnyAcc, NoLock, Preserve)
                    {
                        LSMP,   8
                    }

                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (Zero)
                    }
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (GPIC == Zero)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPC.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                ^^LPC.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                ^^LPC.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPC.LNKA, 
                                Zero
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x11
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                Zero, 
                                0x12
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                Zero, 
                                0x13
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                Zero, 
                                0x10
                            }
                        })
                    }
                }
            }

            Device (EXP3)
            {
                Name (_ADR, 0x001C0002)  // _ADR: Address
                OperationRegion (P3CS, PCI_Config, 0x40, 0x0100)
                Field (P3CS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10), 
                        ,   4, 
                    LKD3,   1, 
                    Offset (0x1A), 
                    ABP3,   1, 
                        ,   2, 
                    PDC3,   1, 
                        ,   2, 
                    PDS3,   1, 
                    Offset (0x20), 
                    RID3,   16, 
                    PSP3,   1, 
                    PPP3,   1, 
                    Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Device (PXS3)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (Zero)
                    }
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (GPIC == Zero)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPC.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                ^^LPC.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                ^^LPC.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPC.LNKB, 
                                Zero
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x12
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                Zero, 
                                0x13
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                Zero, 
                                0x10
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                Zero, 
                                0x11
                            }
                        })
                    }
                }
            }

            Device (EXP4)
            {
                Name (_ADR, 0x001C0003)  // _ADR: Address
                OperationRegion (P4CS, PCI_Config, 0x40, 0x0100)
                Field (P4CS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10), 
                        ,   4, 
                    LKD4,   1, 
                    Offset (0x1A), 
                    ABP4,   1, 
                        ,   2, 
                    PDC4,   1, 
                        ,   2, 
                    PDS4,   1, 
                    Offset (0x20), 
                    RID4,   16, 
                    PSP4,   1, 
                    PPP4,   1, 
                    Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x09, 
                    0x04
                })
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (GPIC == Zero)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPC.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                ^^LPC.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                ^^LPC.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPC.LNKC, 
                                Zero
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x13
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                One, 
                                Zero, 
                                0x10
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                Zero, 
                                0x11
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                Zero, 
                                0x12
                            }
                        })
                    }
                }

                Device (J380)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (PCFG, PCI_Config, Zero, 0xFF)
                    Field (PCFG, ByteAcc, NoLock, Preserve)
                    {
                        DVID,   32, 
                        Offset (0x2C), 
                        SSID,   32, 
                        Offset (0xAC), 
                        D3EF,   8, 
                        Offset (0xB2), 
                        LAT0,   8, 
                        Offset (0xCF), 
                        ATRB,   8, 
                        Offset (0xD3), 
                        PMC0,   8
                    }

                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J382)
                {
                    Name (_ADR, 0x02)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J383)
                {
                    Name (_ADR, 0x03)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }

                Device (J384)
                {
                    Name (_ADR, 0x04)  // _ADR: Address
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
                        Return (One)
                    }
                }
            }

            Device (AZAL)
            {
                Name (_ADR, 0x001B0000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    If (WKMD == One)
                    {
                        Return (Package (0x02)
                        {
                            0x05, 
                            0x04
                        })
                    }
                    Else
                    {
                        Return (Package (0x02)
                        {
                            0x05, 
                            Zero
                        })
                    }
                }
            }

            Device (AUDO)
            {
                Name (_ADR, 0x001E0002)  // _ADR: Address
            }

            Device (MODM)
            {
                Name (_ADR, 0x001E0003)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    If (WKMD == One)
                    {
                        Return (Package (0x02)
                        {
                            0x05, 
                            0x04
                        })
                    }
                    Else
                    {
                        Return (Package (0x02)
                        {
                            0x05, 
                            Zero
                        })
                    }
                }
            }

            Device (OVGA)
            {
                Name (_ADR, 0x00020000)  // _ADR: Address
                OperationRegion (VNVS, SystemMemory, 0x5F477010, 0x00010004)
                Field (VNVS, AnyAcc, Lock, Preserve)
                {
                    RSIZ,   32, 
                    RBUF,   524288
                }

                Method (_DOS, 1, NotSerialized)  // _DOS: Disable Output Switching
                {
                    DSEN = (Arg0 & 0x03)
                }

                Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
                {
                    If (LCDA == 0x0110)
                    {
                        Return (Package (0x06)
                        {
                            0x00010100, 
                            0x00010110, 
                            0x00010200, 
                            0x00010300, 
                            0x00010500, 
                            0x00010600
                        })
                    }

                    Return (Package (0x06)
                    {
                        0x00010100, 
                        0x00010200, 
                        0x00010300, 
                        0x00010400, 
                        0x00010500, 
                        0x00010600
                    })
                }

                Method (_ROM, 2, NotSerialized)  // _ROM: Read-Only Memory
                {
                    Local0 = Arg0
                    Local1 = Arg1
                    If (Local1 > 0x1000)
                    {
                        Local1 = 0x1000
                    }

                    If ((Local0 + Local1) > RSIZ)
                    {
                        Local0 = Zero
                    }

                    Local2 = (Local0 * 0x08)
                    Local3 = (Local1 * 0x08)
                    Name (ROM1, Buffer (RSIZ) {})
                    Name (ROM2, Buffer (Local1) {})
                    ROM1 = RBUF /* \_SB_.PCI0.OVGA.RBUF */
                    CreateField (ROM1, Local2, Local3, TMPB)
                    ROM2 = TMPB /* \_SB_.PCI0.OVGA._ROM.TMPB */
                    Return (ROM2) /* \_SB_.PCI0.OVGA._ROM.ROM2 */
                }

                Device (CRT1)
                {
                    Name (_ADR, 0x0100)  // _ADR: Address
                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x0101)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x0101)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }

                Device (DTV1)
                {
                    Name (_ADR, 0x0200)  // _ADR: Address
                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x0202)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x0202)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }

                Device (DFP1)
                {
                    Name (_ADR, 0x0300)  // _ADR: Address
                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x0404)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x0404)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }

                Device (LCD)
                {
                    Method (_ADR, 0, NotSerialized)  // _ADR: Address
                    {
                        Return (LCDA) /* \LCDA */
                    }

                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x0808)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x0808)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }

                Device (DTV2)
                {
                    Name (_ADR, 0x0500)  // _ADR: Address
                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x1010)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x1010)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }

                Device (DFP2)
                {
                    Name (_ADR, 0x0600)  // _ADR: Address
                    Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                    {
                        SMIF = One
                        TRP0 = Zero
                        If (CSTE & 0x2020)
                        {
                            Return (0x1F)
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                    {
                        If (NSTE & 0x2020)
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }

                    Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                    {
                        If ((Arg0 & 0xC0000000) == 0xC0000000)
                        {
                            CSTE = NSTE /* \NSTE */
                        }
                    }
                }
            }

            Device (IDEC)
            {
                Name (_ADR, 0x001F0001)  // _ADR: Address
                OperationRegion (PACS, PCI_Config, 0x40, 0xC0)
                Field (PACS, DWordAcc, NoLock, Preserve)
                {
                    PRIT,   16, 
                    Offset (0x04), 
                    PSIT,   4, 
                    Offset (0x08), 
                    SYNC,   4, 
                    Offset (0x0A), 
                    SDT0,   2, 
                        ,   2, 
                    SDT1,   2, 
                    Offset (0x14), 
                    ICR0,   4, 
                    ICR1,   4, 
                    ICR2,   4, 
                    ICR3,   4, 
                    ICR4,   4, 
                    ICR5,   4
                }

                Device (PRID)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        Name (PBUF, Buffer (0x14)
                        {
                            /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                            /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                            /* 0010 */  0x00, 0x00, 0x00, 0x00                           /* .... */
                        })
                        CreateDWordField (PBUF, Zero, PIO0)
                        CreateDWordField (PBUF, 0x04, DMA0)
                        CreateDWordField (PBUF, 0x08, PIO1)
                        CreateDWordField (PBUF, 0x0C, DMA1)
                        CreateDWordField (PBUF, 0x10, FLAG)
                        PIO0 = GETP (PRIT)
                        DMA0 = GDMA ((SYNC & One), (ICR3 & One), (
                            ICR0 & One), SDT0, (ICR1 & One))
                        If (DMA0 == Ones)
                        {
                            DMA0 = PIO0 /* \_SB_.PCI0.IDEC.PRID._GTM.PIO0 */
                        }

                        If (PRIT & 0x4000)
                        {
                            If ((PRIT & 0x90) == 0x80)
                            {
                                PIO1 = 0x0384
                            }
                            Else
                            {
                                PIO1 = GETT (PSIT)
                            }
                        }
                        Else
                        {
                            PIO1 = Ones
                        }

                        DMA1 = GDMA ((SYNC & 0x02), (ICR3 & 0x02), (
                            ICR0 & 0x02), SDT1, (ICR1 & 0x02))
                        If (DMA1 == Ones)
                        {
                            DMA1 = PIO1 /* \_SB_.PCI0.IDEC.PRID._GTM.PIO1 */
                        }

                        FLAG = GETF ((SYNC & One), (SYNC & 0x02), PRIT)
                        If ((PIO0 == Ones) & (DMA0 == Ones))
                        {
                            PIO0 = 0x78
                            DMA0 = 0x14
                            FLAG = 0x03
                        }

                        Return (PBUF) /* \_SB_.PCI0.IDEC.PRID._GTM.PBUF */
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        CreateDWordField (Arg0, Zero, PIO0)
                        CreateDWordField (Arg0, 0x04, DMA0)
                        CreateDWordField (Arg0, 0x08, PIO1)
                        CreateDWordField (Arg0, 0x0C, DMA1)
                        CreateDWordField (Arg0, 0x10, FLAG)
                        If (SizeOf (Arg1) == 0x0200)
                        {
                            PRIT &= 0x40F0
                            SYNC &= 0x02
                            SDT0 = Zero
                            ICR0 &= 0x02
                            ICR1 &= 0x02
                            ICR3 &= 0x02
                            ICR5 &= 0x02
                            CreateWordField (Arg1, 0x62, W490)
                            CreateWordField (Arg1, 0x6A, W530)
                            CreateWordField (Arg1, 0x7E, W630)
                            CreateWordField (Arg1, 0x80, W640)
                            CreateWordField (Arg1, 0xB0, W880)
                            CreateWordField (Arg1, 0xBA, W930)
                            PRIT |= 0x8004
                            If ((FLAG & 0x02) && (W490 & 0x0800))
                            {
                                PRIT |= 0x02
                            }

                            PRIT |= SETP (PIO0, W530, W640)
                            If (FLAG & One)
                            {
                                SYNC |= One
                                SDT0 = SDMA (DMA0)
                                If (DMA0 < 0x1E)
                                {
                                    ICR3 |= One
                                }

                                If (DMA0 < 0x3C)
                                {
                                    ICR0 |= One
                                }

                                If (W930 & 0x2000)
                                {
                                    ICR1 |= One
                                }
                            }
                        }

                        If (SizeOf (Arg2) == 0x0200)
                        {
                            PRIT &= 0x3F0F
                            PSIT = Zero
                            SYNC &= One
                            SDT1 = Zero
                            ICR0 &= One
                            ICR1 &= One
                            ICR3 &= One
                            ICR5 &= One
                            CreateWordField (Arg2, 0x62, W491)
                            CreateWordField (Arg2, 0x6A, W531)
                            CreateWordField (Arg2, 0x7E, W631)
                            CreateWordField (Arg2, 0x80, W641)
                            CreateWordField (Arg2, 0xB0, W881)
                            CreateWordField (Arg2, 0xBA, W931)
                            PRIT |= 0x8040
                            If ((FLAG & 0x08) && (W491 & 0x0800))
                            {
                                PRIT |= 0x20
                            }

                            If (FLAG & 0x10)
                            {
                                PRIT |= 0x4000
                                If (PIO1 > 0xF0)
                                {
                                    PRIT |= 0x80
                                }
                                Else
                                {
                                    PRIT |= 0x10
                                    PSIT = SETT (PIO1, W531, W641)
                                }
                            }

                            If (FLAG & 0x04)
                            {
                                SYNC |= 0x02
                                SDT1 = SDMA (DMA1)
                                If (DMA1 < 0x1E)
                                {
                                    ICR3 |= 0x02
                                }

                                If (DMA1 < 0x3C)
                                {
                                    ICR0 |= 0x02
                                }

                                If (W931 & 0x2000)
                                {
                                    ICR1 |= 0x02
                                }
                            }
                        }
                    }

                    Device (P_D0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                        {
                            Return (Zero)
                        }

                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Name (PIB0, Buffer (0x0E)
                            {
                                /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,  /* ........ */
                                /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF               /* ...... */
                            })
                            CreateByteField (PIB0, One, PMD0)
                            CreateByteField (PIB0, 0x08, DMD0)
                            If (PRIT & 0x02)
                            {
                                If ((PRIT & 0x09) == 0x08)
                                {
                                    PMD0 = 0x08
                                }
                                Else
                                {
                                    PMD0 = 0x0A
                                    Local0 = ((PRIT & 0x0300) >> 0x08)
                                    Local1 = ((PRIT & 0x3000) >> 0x0C)
                                    Local2 = (Local0 + Local1)
                                    If (0x03 == Local2)
                                    {
                                        PMD0 = 0x0B
                                    }

                                    If (0x05 == Local2)
                                    {
                                        PMD0 = 0x0C
                                    }
                                }
                            }
                            Else
                            {
                                PMD0 = One
                            }

                            If (SYNC & One)
                            {
                                DMD0 = (SDT0 | 0x40)
                                If (ICR1 & One)
                                {
                                    If (ICR0 & One)
                                    {
                                        DMD0 += 0x02
                                    }

                                    If (ICR3 & One)
                                    {
                                        DMD0 = 0x45
                                    }
                                }
                            }
                            Else
                            {
                                DMD0 = (((PMD0 & 0x07) - 0x02) | 0x20)
                            }

                            Return (PIB0) /* \_SB_.PCI0.IDEC.PRID.P_D0._GTF.PIB0 */
                        }
                    }

                    Device (P_D1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Name (PIB1, Buffer (0x0E)
                            {
                                /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,  /* ........ */
                                /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF               /* ...... */
                            })
                            CreateByteField (PIB1, One, PMD1)
                            CreateByteField (PIB1, 0x08, DMD1)
                            If (PRIT & 0x20)
                            {
                                If ((PRIT & 0x90) == 0x80)
                                {
                                    PMD1 = 0x08
                                }
                                Else
                                {
                                    Local0 = ((PSIT & 0x03) + ((PSIT & 0x0C) >> 0x02
                                        ))
                                    If (0x05 == Local0)
                                    {
                                        PMD1 = 0x0C
                                    }
                                    ElseIf (0x03 == Local0)
                                    {
                                        PMD1 = 0x0B
                                    }
                                    Else
                                    {
                                        PMD1 = 0x0A
                                    }
                                }
                            }
                            Else
                            {
                                PMD1 = One
                            }

                            If (SYNC & 0x02)
                            {
                                DMD1 = (SDT1 | 0x40)
                                If (ICR1 & 0x02)
                                {
                                    If (ICR0 & 0x02)
                                    {
                                        DMD1 += 0x02
                                    }

                                    If (ICR3 & 0x02)
                                    {
                                        DMD1 = 0x45
                                    }
                                }
                            }
                            Else
                            {
                                DMD1 = (((PMD1 & 0x07) - 0x02) | 0x20)
                            }

                            Return (PIB1) /* \_SB_.PCI0.IDEC.PRID.P_D1._GTF.PIB1 */
                        }
                    }
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)  // _ADR: Address
                OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
                Field (SACS, DWordAcc, NoLock, Preserve)
                {
                    PRIT,   16, 
                    SECT,   16, 
                    PSIT,   4, 
                    SSIT,   4, 
                    Offset (0x08), 
                    SYNC,   4, 
                    Offset (0x0A), 
                    SDT0,   2, 
                        ,   2, 
                    SDT1,   2, 
                    Offset (0x0B), 
                    SDT2,   2, 
                        ,   2, 
                    SDT3,   2, 
                    Offset (0x14), 
                    ICR0,   4, 
                    ICR1,   4, 
                    ICR2,   4, 
                    ICR3,   4, 
                    ICR4,   4, 
                    ICR5,   4, 
                    Offset (0x50), 
                    MAPV,   2
                }

                Device (PRID)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        If (SCFG != 0x04)
                        {
                            Name (PBUF, Buffer (0x14)
                            {
                                /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0010 */  0x00, 0x00, 0x00, 0x00                           /* .... */
                            })
                            CreateDWordField (PBUF, Zero, PIO0)
                            CreateDWordField (PBUF, 0x04, DMA0)
                            CreateDWordField (PBUF, 0x08, PIO1)
                            CreateDWordField (PBUF, 0x0C, DMA1)
                            CreateDWordField (PBUF, 0x10, FLAG)
                            PIO0 = GETP (PRIT)
                            DMA0 = GDMA ((SYNC & One), (ICR3 & One), (
                                ICR0 & One), SDT0, (ICR1 & One))
                            If (DMA0 == Ones)
                            {
                                DMA0 = PIO0 /* \_SB_.PCI0.SATA.PRID._GTM.PIO0 */
                            }

                            If (PRIT & 0x4000)
                            {
                                If ((PRIT & 0x90) == 0x80)
                                {
                                    PIO1 = 0x0384
                                }
                                Else
                                {
                                    PIO1 = GETT (PSIT)
                                }
                            }
                            Else
                            {
                                PIO1 = Ones
                            }

                            DMA1 = GDMA ((SYNC & 0x02), (ICR3 & 0x02), (
                                ICR0 & 0x02), SDT1, (ICR1 & 0x02))
                            If (DMA1 == Ones)
                            {
                                DMA1 = PIO1 /* \_SB_.PCI0.SATA.PRID._GTM.PIO1 */
                            }

                            FLAG = GETF ((SYNC & One), (SYNC & 0x02), PRIT)
                            Return (PBUF) /* \_SB_.PCI0.SATA.PRID._GTM.PBUF */
                        }

                        Return (Zero)
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        If (SCFG != 0x04)
                        {
                            CreateDWordField (Arg0, Zero, PIO0)
                            CreateDWordField (Arg0, 0x04, DMA0)
                            CreateDWordField (Arg0, 0x08, PIO1)
                            CreateDWordField (Arg0, 0x0C, DMA1)
                            CreateDWordField (Arg0, 0x10, FLAG)
                            If (SizeOf (Arg1) == 0x0200)
                            {
                                PRIT &= 0x40F0
                                SYNC &= 0x0E
                                SDT0 = Zero
                                ICR0 &= 0x0E
                                ICR1 &= 0x0E
                                ICR3 &= 0x0E
                                ICR5 &= 0x0E
                                CreateWordField (Arg1, 0x62, W490)
                                CreateWordField (Arg1, 0x6A, W530)
                                CreateWordField (Arg1, 0x7E, W630)
                                CreateWordField (Arg1, 0x80, W640)
                                CreateWordField (Arg1, 0xB0, W880)
                                CreateWordField (Arg1, 0xBA, W930)
                                PRIT |= 0x8004
                                If ((FLAG & 0x02) && (W490 & 0x0800))
                                {
                                    PRIT |= 0x02
                                }

                                PRIT |= SETP (PIO0, W530, W640)
                                If (FLAG & One)
                                {
                                    SYNC |= One
                                    SDT0 = SDMA (DMA0)
                                    If (DMA0 < 0x1E)
                                    {
                                        ICR3 |= One
                                    }

                                    If (DMA0 < 0x3C)
                                    {
                                        ICR0 |= One
                                    }

                                    ICR1 |= One
                                }
                            }

                            If (SizeOf (Arg2) == 0x0200)
                            {
                                PRIT &= 0x3F0F
                                PSIT = Zero
                                SYNC &= 0x0D
                                SDT1 = Zero
                                ICR0 &= 0x0D
                                ICR1 &= 0x0D
                                ICR3 &= 0x0D
                                ICR5 &= 0x0D
                                CreateWordField (Arg2, 0x62, W491)
                                CreateWordField (Arg2, 0x6A, W531)
                                CreateWordField (Arg2, 0x7E, W631)
                                CreateWordField (Arg2, 0x80, W641)
                                CreateWordField (Arg2, 0xB0, W881)
                                CreateWordField (Arg2, 0xBA, W931)
                                PRIT |= 0x8040
                                If ((FLAG & 0x08) && (W491 & 0x0800))
                                {
                                    PRIT |= 0x20
                                }

                                If (FLAG & 0x10)
                                {
                                    PRIT |= 0x4000
                                    If (PIO1 > 0xF0)
                                    {
                                        PRIT |= 0x80
                                    }
                                    Else
                                    {
                                        PRIT |= 0x10
                                        PSIT = SETT (PIO1, W531, W641)
                                    }
                                }

                                If (FLAG & 0x04)
                                {
                                    SYNC |= 0x02
                                    SDT1 = SDMA (DMA1)
                                    If (DMA1 < 0x1E)
                                    {
                                        ICR3 |= 0x02
                                    }

                                    If (DMA1 < 0x3C)
                                    {
                                        ICR0 |= 0x02
                                    }

                                    ICR1 |= 0x02
                                }
                            }
                        }
                    }

                    Device (P_D0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            If (SCFG != 0x04)
                            {
                                Name (PIB0, Buffer (0x0E)
                                {
                                    /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,  /* ........ */
                                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF               /* ...... */
                                })
                                CreateByteField (PIB0, One, PMD0)
                                CreateByteField (PIB0, 0x08, DMD0)
                                If (PRIT & 0x02)
                                {
                                    If ((PRIT & 0x09) == 0x08)
                                    {
                                        PMD0 = 0x08
                                    }
                                    Else
                                    {
                                        PMD0 = 0x0A
                                        Local0 = ((PRIT & 0x0300) >> 0x08)
                                        Local1 = ((PRIT & 0x3000) >> 0x0C)
                                        Local2 = (Local0 + Local1)
                                        If (0x03 == Local2)
                                        {
                                            PMD0 = 0x0B
                                        }

                                        If (0x05 == Local2)
                                        {
                                            PMD0 = 0x0C
                                        }
                                    }
                                }
                                Else
                                {
                                    PMD0 = One
                                }

                                If (SYNC & One)
                                {
                                    DMD0 = (SDT0 | 0x40)
                                    If (ICR1 & One)
                                    {
                                        If (ICR0 & One)
                                        {
                                            DMD0 += 0x02
                                        }

                                        If (ICR3 & One)
                                        {
                                            DMD0 = 0x45
                                        }
                                    }
                                }
                                Else
                                {
                                    DMD0 = (((PMD0 & 0x07) - 0x02) | 0x20)
                                }

                                Return (PIB0) /* \_SB_.PCI0.SATA.PRID.P_D0._GTF.PIB0 */
                            }

                            Return (Zero)
                        }
                    }

                    Device (P_D1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            If (SCFG != 0x04)
                            {
                                Name (PIB1, Buffer (0x0E)
                                {
                                    /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,  /* ........ */
                                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF               /* ...... */
                                })
                                CreateByteField (PIB1, One, PMD1)
                                CreateByteField (PIB1, 0x08, DMD1)
                                If (PRIT & 0x20)
                                {
                                    If ((PRIT & 0x90) == 0x80)
                                    {
                                        PMD1 = 0x08
                                    }
                                    Else
                                    {
                                        Local0 = ((PSIT & 0x03) + ((PSIT & 0x0C) >> 0x02
                                            ))
                                        If (0x05 == Local0)
                                        {
                                            PMD1 = 0x0C
                                        }
                                        ElseIf (0x03 == Local0)
                                        {
                                            PMD1 = 0x0B
                                        }
                                        Else
                                        {
                                            PMD1 = 0x0A
                                        }
                                    }
                                }
                                Else
                                {
                                    PMD1 = One
                                }

                                If (SYNC & 0x02)
                                {
                                    DMD1 = (SDT1 | 0x40)
                                    If (ICR1 & 0x02)
                                    {
                                        If (ICR0 & 0x02)
                                        {
                                            DMD1 += 0x02
                                        }

                                        If (ICR3 & 0x02)
                                        {
                                            DMD1 = 0x45
                                        }
                                    }
                                }
                                Else
                                {
                                    DMD1 = (((PMD1 & 0x07) - 0x02) | 0x20)
                                }

                                Return (PIB1) /* \_SB_.PCI0.SATA.PRID.P_D1._GTF.PIB1 */
                            }

                            Return (Zero)
                        }
                    }
                }

                Device (SECD)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        If (SCFG != 0x04)
                        {
                            Name (SBUF, Buffer (0x14)
                            {
                                /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0010 */  0x00, 0x00, 0x00, 0x00                           /* .... */
                            })
                            CreateDWordField (SBUF, Zero, PIO0)
                            CreateDWordField (SBUF, 0x04, DMA0)
                            CreateDWordField (SBUF, 0x08, PIO1)
                            CreateDWordField (SBUF, 0x0C, DMA1)
                            CreateDWordField (SBUF, 0x10, FLAG)
                            PIO0 = GETP (SECT)
                            DMA0 = GDMA ((SYNC & 0x04), (ICR3 & 0x04), (
                                ICR0 & 0x04), SDT2, (ICR1 & 0x04))
                            If (DMA0 == Ones)
                            {
                                DMA0 = PIO0 /* \_SB_.PCI0.SATA.SECD._GTM.PIO0 */
                            }

                            If (SECT & 0x4000)
                            {
                                If ((SECT & 0x90) == 0x80)
                                {
                                    PIO1 = 0x0384
                                }
                                Else
                                {
                                    PIO1 = GETT (SSIT)
                                }
                            }
                            Else
                            {
                                PIO1 = Ones
                            }

                            DMA1 = GDMA ((SYNC & 0x08), (ICR3 & 0x08), (
                                ICR0 & 0x08), SDT3, (ICR1 & 0x08))
                            If (DMA1 == Ones)
                            {
                                DMA1 = PIO1 /* \_SB_.PCI0.SATA.SECD._GTM.PIO1 */
                            }

                            FLAG = GETF ((SYNC & 0x04), (SYNC & 0x08), SECT)
                            If ((PIO0 == Ones) & (DMA0 == Ones))
                            {
                                PIO0 = 0x78
                                DMA0 = 0x14
                                FLAG = 0x03
                            }

                            Return (SBUF) /* \_SB_.PCI0.SATA.SECD._GTM.SBUF */
                        }

                        Return (Zero)
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        If (SCFG != 0x04)
                        {
                            CreateDWordField (Arg0, Zero, PIO0)
                            CreateDWordField (Arg0, 0x04, DMA0)
                            CreateDWordField (Arg0, 0x08, PIO1)
                            CreateDWordField (Arg0, 0x0C, DMA1)
                            CreateDWordField (Arg0, 0x10, FLAG)
                            If (SizeOf (Arg1) == 0x0200)
                            {
                                SECT &= 0x40F0
                                SYNC &= 0x0B
                                SDT2 = Zero
                                ICR0 &= 0x0B
                                ICR1 &= 0x0B
                                ICR3 &= 0x0B
                                ICR5 &= 0x0B
                                CreateWordField (Arg1, 0x62, W490)
                                CreateWordField (Arg1, 0x6A, W530)
                                CreateWordField (Arg1, 0x7E, W630)
                                CreateWordField (Arg1, 0x80, W640)
                                CreateWordField (Arg1, 0xB0, W880)
                                CreateWordField (Arg1, 0xBA, W930)
                                SECT |= 0x8004
                                If ((FLAG & 0x02) && (W490 & 0x0800))
                                {
                                    SECT |= 0x02
                                }

                                SECT |= SETP (PIO0, W530, W640)
                                If (FLAG & One)
                                {
                                    SYNC |= 0x04
                                    SDT2 = SDMA (DMA0)
                                    If (DMA0 < 0x1E)
                                    {
                                        ICR3 |= 0x04
                                    }

                                    If (DMA0 < 0x3C)
                                    {
                                        ICR0 |= 0x04
                                    }

                                    If (W930 & 0x2000)
                                    {
                                        ICR1 |= 0x04
                                    }
                                }
                            }

                            If (SizeOf (Arg2) == 0x0200)
                            {
                                SECT &= 0x3F0F
                                SSIT = Zero
                                SYNC &= 0x07
                                SDT3 = Zero
                                ICR0 &= 0x07
                                ICR1 &= 0x07
                                ICR3 &= 0x07
                                ICR5 &= 0x07
                                CreateWordField (Arg2, 0x62, W491)
                                CreateWordField (Arg2, 0x6A, W531)
                                CreateWordField (Arg2, 0x7E, W631)
                                CreateWordField (Arg2, 0x80, W641)
                                CreateWordField (Arg2, 0xB0, W881)
                                CreateWordField (Arg2, 0xBA, W931)
                                SECT |= 0x8040
                                If ((FLAG & 0x08) && (W491 & 0x0800))
                                {
                                    SECT |= 0x20
                                }

                                If (FLAG & 0x10)
                                {
                                    SECT |= 0x4000
                                    If (PIO1 > 0xF0)
                                    {
                                        SECT |= 0x80
                                    }
                                    Else
                                    {
                                        SECT |= 0x10
                                        SSIT = SETT (PIO1, W531, W641)
                                    }
                                }

                                If (FLAG & 0x04)
                                {
                                    SYNC |= 0x08
                                    SDT3 = SDMA (DMA1)
                                    If (DMA1 < 0x1E)
                                    {
                                        ICR3 |= 0x08
                                    }

                                    If (DMA1 < 0x3C)
                                    {
                                        ICR0 |= 0x08
                                    }

                                    If (W931 & 0x2000)
                                    {
                                        ICR1 |= 0x08
                                    }
                                }
                            }
                        }
                    }

                    Device (S_D0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                        {
                            Return (Zero)
                        }

                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            If (SCFG != 0x04)
                            {
                                Name (SIB0, Buffer (0x0E)
                                {
                                    /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,  /* ........ */
                                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF               /* ...... */
                                })
                                CreateByteField (SIB0, One, PMD0)
                                CreateByteField (SIB0, 0x08, DMD0)
                                If (SECT & 0x02)
                                {
                                    If ((SECT & 0x09) == 0x08)
                                    {
                                        PMD0 = 0x08
                                    }
                                    Else
                                    {
                                        PMD0 = 0x0A
                                        Local0 = ((SECT & 0x0300) >> 0x08)
                                        Local1 = ((SECT & 0x3000) >> 0x0C)
                                        Local2 = (Local0 + Local1)
                                        If (0x03 == Local2)
                                        {
                                            PMD0 = 0x0B
                                        }

                                        If (0x05 == Local2)
                                        {
                                            PMD0 = 0x0C
                                        }
                                    }
                                }
                                Else
                                {
                                    PMD0 = One
                                }

                                If (SYNC & 0x04)
                                {
                                    DMD0 = (SDT2 | 0x40)
                                    If (ICR1 & 0x04)
                                    {
                                        If (ICR0 & 0x04)
                                        {
                                            DMD0 += 0x02
                                        }

                                        If (ICR3 & 0x04)
                                        {
                                            DMD0 = 0x45
                                        }
                                    }
                                }
                                Else
                                {
                                    DMD0 = (((PMD0 & 0x07) - 0x02) | 0x20)
                                }

                                Return (SIB0) /* \_SB_.PCI0.SATA.SECD.S_D0._GTF.SIB0 */
                            }

                            Return (Zero)
                        }
                    }

                    Device (S_D1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            If (SCFG != 0x04)
                            {
                                Name (SIB1, Buffer (0x0E)
                                {
                                    /* 0000 */  0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,  /* ........ */
                                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF               /* ...... */
                                })
                                CreateByteField (SIB1, One, PMD1)
                                CreateByteField (SIB1, 0x08, DMD1)
                                If (SECT & 0x20)
                                {
                                    If ((SECT & 0x90) == 0x80)
                                    {
                                        PMD1 = 0x08
                                    }
                                    Else
                                    {
                                        Local0 = ((SSIT & 0x03) + ((SSIT & 0x0C) >> 0x02
                                            ))
                                        If (0x05 == Local0)
                                        {
                                            PMD1 = 0x0C
                                        }
                                        ElseIf (0x03 == Local0)
                                        {
                                            PMD1 = 0x0B
                                        }
                                        Else
                                        {
                                            PMD1 = 0x0A
                                        }
                                    }
                                }
                                Else
                                {
                                    PMD1 = One
                                }

                                If (SYNC & 0x08)
                                {
                                    DMD1 = (SDT3 | 0x40)
                                    If (ICR1 & 0x08)
                                    {
                                        If (ICR0 & 0x08)
                                        {
                                            DMD1 += 0x02
                                        }

                                        If (ICR3 & 0x08)
                                        {
                                            DMD1 = 0x45
                                        }
                                    }
                                }
                                Else
                                {
                                    DMD1 = (((PMD1 & 0x07) - 0x02) | 0x20)
                                }

                                Return (SIB1) /* \_SB_.PCI0.SATA.SECD.S_D1._GTF.SIB1 */
                            }

                            Return (Zero)
                        }
                    }
                }

                Device (PRT0)
                {
                    Name (_ADR, 0xFFFF)  // _ADR: Address
                    Method (_SDD, 1, NotSerialized)  // _SDD: Set Device Data
                    {
                        If (SCFG == 0x04)
                        {
                            Name (GBU0, Buffer (0x07)
                            {
                                 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00         /* ....... */
                            })
                            CreateByteField (GBU0, Zero, GB00)
                            CreateByteField (GBU0, One, GB01)
                            CreateByteField (GBU0, 0x02, GB02)
                            CreateByteField (GBU0, 0x03, GB03)
                            CreateByteField (GBU0, 0x04, GB04)
                            CreateByteField (GBU0, 0x05, GB05)
                            CreateByteField (GBU0, 0x06, GB06)
                            If (SizeOf (Arg0) == 0x0200)
                            {
                                CreateWordField (Arg0, 0x9C, W780)
                                CreateWordField (Arg0, 0x9E, W790)
                                If (W780 && 0x04)
                                {
                                    If ((W790 & 0x04) == Zero)
                                    {
                                        GB00 = 0x10
                                        GB01 = 0x03
                                        GB06 = 0xEF
                                    }
                                }
                            }

                            GTF0 = GBU0 /* \_SB_.PCI0.SATA.PRT0._SDD.GBU0 */
                        }
                    }

                    Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                    {
                        If ((SCFG == 0x04) && (AIBT == Zero))
                        {
                            Return (GTF0) /* \GTF0 */
                        }

                        Return (Zero)
                    }
                }

                Device (PRT2)
                {
                    Name (_ADR, 0x0002FFFF)  // _ADR: Address
                    Method (_SDD, 1, NotSerialized)  // _SDD: Set Device Data
                    {
                        If (SCFG == 0x04)
                        {
                            Name (GBU2, Buffer (0x07)
                            {
                                 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00         /* ....... */
                            })
                            CreateByteField (GBU2, Zero, GB20)
                            CreateByteField (GBU2, One, GB21)
                            CreateByteField (GBU2, 0x02, GB22)
                            CreateByteField (GBU2, 0x03, GB23)
                            CreateByteField (GBU2, 0x04, GB24)
                            CreateByteField (GBU2, 0x05, GB25)
                            CreateByteField (GBU2, 0x06, GB26)
                            If (SizeOf (Arg0) == 0x0200)
                            {
                                CreateWordField (Arg0, 0x9C, W782)
                                CreateWordField (Arg0, 0x9E, W792)
                                If (W782 && 0x04)
                                {
                                    If ((W792 & 0x04) == Zero)
                                    {
                                        GB20 = 0x10
                                        GB21 = 0x03
                                        GB26 = 0xEF
                                    }
                                }
                            }

                            GTF2 = GBU2 /* \_SB_.PCI0.SATA.PRT2._SDD.GBU2 */
                        }
                    }

                    Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                    {
                        If ((SCFG == 0x04) && (AIBT == Zero))
                        {
                            Return (GTF2) /* \GTF2 */
                        }

                        Return (Zero)
                    }
                }
            }

            Device (WMID)
            {
                Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */)  // _HID: Hardware ID
                Name (_UID, Zero)  // _UID: Unique ID
                Name (ERRD, 0x00010000)
                Name (BUFF, Buffer (0x04)
                {
                     0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateByteField (BUFF, Zero, BF00)
                CreateByteField (BUFF, One, BF01)
                CreateByteField (BUFF, 0x02, BF02)
                CreateByteField (BUFF, 0x03, BF03)
                Name (BUF1, Buffer (0x04)
                {
                     0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                Name (AADS, Buffer (0x04)
                {
                     0x00                                             /* . */
                })
                CreateField (AADS, Zero, 0x04, AS00)
                CreateField (AADS, 0x04, One, AS01)
                CreateField (AADS, 0x05, One, AS02)
                CreateField (AADS, 0x10, 0x10, AS03)
                Name (BAEF, Zero)
                Name (BADF, Zero)
                Name (BADG, Package (0x0D)
                {
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero, 
                    Zero, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    Zero, 
                    0x00010000
                })
                Name (WLDS, Zero)
                Name (WLED, Zero)
                Name (BTDS, Zero)
                Name (BTED, Zero)
                Name (BLDS, Zero)
                Name (BLED, Zero)
                Name (NTDC, Zero)
                Name (NTDV, Zero)
                Name (WLSD, 0x0100)
                Name (WLSE, 0x0101)
                Name (BLTD, 0x0200)
                Name (BLTE, 0x0201)
                Name (LBL0, 0x0300)
                Name (LBL1, 0x0301)
                Name (LBL2, 0x0302)
                Name (LBL3, 0x0303)
                Name (LBL4, 0x0304)
                Name (LBL5, 0x0305)
                Name (LBL6, 0x0306)
                Name (LBL7, 0x0307)
                Name (LBL8, 0x0308)
                Name (LBL9, 0x0309)
                Name (LBLA, 0x030A)
                Name (LBLB, 0x030B)
                Name (LBLC, 0x030C)
                Name (LBLD, 0x030D)
                Name (LBLE, 0x030E)
                Name (LBLF, 0x030F)
                Name (CADI, 0x0401)
                Name (CADO, 0x0400)
                Name (GSEE, 0x0501)
                Name (GSED, 0x0502)
                Name (VAPI, 0x0601)
                Name (VAPO, 0x0600)
                Name (WBBO, 0x0701)
                Name (WBBI, 0x0700)
                Name (G3MD, 0x0800)
                Name (G3ME, 0x0801)
                Name (LANI, 0x0900)
                Name (LANO, 0x0901)
                Name (LDOF, 0x0A00)
                Name (LDON, 0x0A01)
                Name (FNKE, 0x00010002)
                Name (FNF5, 0x00015001)
                Name (BBSB, Buffer (0x04)
                {
                     0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateField (BBSB, Zero, 0x10, BBD0)
                CreateField (BBSB, 0x10, 0x10, BBD1)
                Name (TLS0, Zero)
                Name (TLS1, One)
                Name (TLS2, 0x02)
                Name (TLS3, 0x03)
                Name (TLS4, 0x04)
                Name (TLS5, 0x05)
                Name (TLS6, 0x06)
                Name (TLS7, 0x07)
                Name (BCDS, Package (0x0D)
                {
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000
                })
                Name (BDDS, Buffer (0x04)
                {
                     0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateField (BDDS, Zero, 0x10, BDD0)
                CreateField (BDDS, 0x10, 0x10, BDD1)
                Name (DSY0, Buffer (0x28)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0018 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0020 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                Name (DSY1, Buffer (0x18)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                Name (DSY2, Buffer (0x10)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                Name (DSY3, Buffer (0x18)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                Name (DSY4, Buffer (0x10)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                Name (DSY5, Buffer (0x28)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0018 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0020 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   /* ........ */
                })
                CreateField (DSY0, Zero, 0x40, DY00)
                CreateField (DSY0, 0x40, 0x40, DY01)
                CreateField (DSY0, 0x80, 0x40, DY02)
                CreateField (DSY0, 0xC0, 0x40, DY03)
                CreateField (DSY0, 0x0100, 0x40, DY04)
                CreateField (DSY1, Zero, 0x40, DY10)
                CreateField (DSY1, 0x40, 0x40, DY11)
                CreateField (DSY1, 0x80, 0x40, DY12)
                CreateField (DSY2, Zero, 0x40, DY20)
                CreateField (DSY2, 0x40, 0x10, DY21)
                CreateField (DSY2, 0x50, 0x10, DY22)
                CreateField (DSY0, Zero, 0xC0, DSX4)
                Name (BEDS, Package (0x12)
                {
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000, 
                    0x00010000
                })
                Name (WIT0, Zero)
                Name (DSY6, Buffer (0x14)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateField (DSY6, Zero, 0x20, DY60)
                CreateField (DSY6, 0x20, 0x20, DY61)
                CreateField (DSY6, 0x40, 0x20, DY62)
                CreateField (DSY6, 0x60, 0x20, DY63)
                CreateField (DSY6, 0x80, 0x20, DY64)
                Name (WPRW, Buffer (0x14)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0010 */  0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateField (WPRW, Zero, 0x08, WWD0)
                CreateField (WPRW, 0x08, 0x08, WWD1)
                CreateField (WPRW, 0x10, 0x08, WWD2)
                CreateField (WPRW, 0x18, 0x08, WWD3)
                CreateField (WPRW, 0x20, 0x08, WWD4)
                CreateField (WPRW, 0x28, 0x20, WWD5)
                Name (WPCI, Buffer (0x04)
                {
                     0x00, 0x00, 0x00, 0x00                           /* .... */
                })
                CreateField (WPCI, Zero, 0x08, WPIR)
                CreateField (WPCI, 0x08, 0x03, WPIF)
                CreateField (WPCI, 0x0B, 0x05, WPID)
                CreateField (WPCI, 0x10, 0x08, WPIB)
                Name (BFDS, Package (0x04)
                {
                    0x02, 
                    0x02, 
                    0x02, 
                    0x02
                })
                Name (GSTS, Zero)
                Name (BFEF, Zero)
                Name (BGEF, Zero)
                Name (BGDS, Package (0x01)
                {
                    One
                })
                Method (AAF1, 0, NotSerialized)
                {
                    AS02 = Zero
                    AS03 = Zero
                }

                Method (WGDS, 1, NotSerialized)
                {
                    Name (T_0, Zero)
                    T_0 = Arg0
                    If (T_0 == One) {}
                    ElseIf (T_0 == 0x02) {}
                    ElseIf (T_0 == 0x03) {}
                    ElseIf (T_0 == 0x08)
                    {
                        BADG [0x07] = One
                    }
                    ElseIf (T_0 == 0x09)
                    {
                        BADG [0x08] = Zero
                    }
                    ElseIf (T_0 == 0x0C) {}
                    ElseIf (T_0 == 0x0D) {}
                }

                Method (WSDS, 2, NotSerialized)
                {
                    BUFF = Arg1
                    Local0 = Arg0
                    Local1 = BF00 /* \_SB_.PCI0.WMID.BF00 */
                    BADG [(Local0 - One)] = Zero
                    Name (T_0, Zero)
                    T_0 = Local1
                    If (T_0 == Zero)
                    {
                        Name (T_1, Zero)
                        T_1 = Local0
                        If (T_1 == 0x04) {}
                        ElseIf (T_1 == 0x05) {}
                        ElseIf (T_1 == 0x06) {}
                        ElseIf (T_1 == 0x07)
                        {
                            BAEF = Zero
                        }
                        Else
                        {
                            BADG [(Local0 - One)] = 0x0100
                        }
                    }
                    Else
                    {
                        Name (T_2, Zero)
                        T_2 = Local0
                        If (T_2 == 0x04) {}
                        ElseIf (T_2 == 0x05) {}
                        ElseIf (T_2 == 0x06) {}
                        ElseIf (T_2 == 0x07)
                        {
                            BAEF = One
                        }
                        Else
                        {
                            BADG [(Local0 - One)] = 0x0100
                        }
                    }
                }

                Method (OEMN, 0, NotSerialized)
                {
                    If (BGEF == One)
                    {
                        Local0 = NTDV /* \_SB_.PCI0.WMID.NTDV */
                        If (Local0 != Zero)
                        {
                            NTDV = Zero
                            Return (Local0)
                        }
                    }

                    If (BAEF == One)
                    {
                        Local0 = NTDC /* \_SB_.PCI0.WMID.NTDC */
                        If (Local0 != Zero)
                        {
                            NTDC = Zero
                            Return (Local0)
                        }
                    }

                    If (BFEF == One) {}
                    Return (Zero)
                }

                Method (STRL, 2, NotSerialized)
                {
                    Local0 = Arg0
                    BUFF = Arg1
                    BBSB = Zero
                    Name (T_0, Zero)
                    T_0 = Local0
                    If (T_0 == One) {}
                    ElseIf (T_0 == 0x02) {}
                    Else
                    {
                        BBSB = 0x00010000
                    }
                }

                Method (WODP, 2, NotSerialized)
                {
                    If (Arg0 == 0x03) {}
                    Else
                    {
                        BCDS [(Arg0 - One)] = One
                    }

                    If (Arg0 == 0x0C)
                    {
                        If (Arg1) {}
                        Else
                        {
                        }
                    }
                    Else
                    {
                    }
                }

                Method (GCPU, 1, NotSerialized)
                {
                    DSY0 = DSY5 /* \_SB_.PCI0.WMID.DSY5 */
                    Local0 = Arg0
                    Local2 = IHWM (Zero, Arg0)
                    DSY6 = Local2
                    DY00 = DY60 /* \_SB_.PCI0.WMID.DY60 */
                    DY01 = DY61 /* \_SB_.PCI0.WMID.DY61 */
                    DY02 = DY62 /* \_SB_.PCI0.WMID.DY62 */
                    DY03 = DY63 /* \_SB_.PCI0.WMID.DY63 */
                }

                Method (MSRR, 1, NotSerialized)
                {
                    DSY1 = DSY3 /* \_SB_.PCI0.WMID.DSY3 */
                    DY00 = Arg0
                    Local2 = IHWM (One, Arg0)
                    DSY6 = Local2
                    DY10 = DY60 /* \_SB_.PCI0.WMID.DY60 */
                    DY11 = DY61 /* \_SB_.PCI0.WMID.DY61 */
                    WIT0 = Zero
                    DY12 = WIT0 /* \_SB_.PCI0.WMID.WIT0 */
                }

                Method (MSRW, 1, NotSerialized)
                {
                    DSY1 = DSY3 /* \_SB_.PCI0.WMID.DSY3 */
                    Local2 = IHWM (0x02, Arg0)
                    DSY6 = Local2
                    DY10 = DY60 /* \_SB_.PCI0.WMID.DY60 */
                    DY11 = DY61 /* \_SB_.PCI0.WMID.DY61 */
                    WIT0 = Zero
                    DY12 = WIT0 /* \_SB_.PCI0.WMID.WIT0 */
                }

                Method (C4C3, 2, NotSerialized)
                {
                }

                Method (CPUF, 0, NotSerialized)
                {
                }

                Method (CPUT, 0, NotSerialized)
                {
                }

                Method (PCIR, 1, NotSerialized)
                {
                    Local0 = Arg0
                    Local2 = IHWM (0x03, Arg0)
                    DY20 = Local2
                    DSY6 = Local2
                    DSY2 = DSY4 /* \_SB_.PCI0.WMID.DSY4 */
                    DY20 = DY60 /* \_SB_.PCI0.WMID.DY60 */
                }

                Method (PCIW, 1, NotSerialized)
                {
                    Local0 = Arg0
                    DY20 = Arg0
                    Local2 = IHWM (0x04, Arg0)
                    DSY6 = Local2
                    BUFF = DY61 /* \_SB_.PCI0.WMID.DY61 */
                }

                Method (CPUS, 0, NotSerialized)
                {
                    Local2 = IHWM (0x05, Zero)
                    BUFF = Local2
                    BCDS [0x0C] = BUFF /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (PCID, 1, NotSerialized)
                {
                    Local2 = IHWM (0x06, Arg0)
                    DSY6 = Local2
                }

                Method (BTIF, 2, NotSerialized)
                {
                    Local0 = Arg0
                    BUFF = Arg1
                    If (Local0 == 0x0D)
                    {
                        BF00 = BF02 /* \_SB_.PCI0.WMID.BF02 */
                        Local1 = BF01 /* \_SB_.PCI0.WMID.BF01 */
                        BF00 = BF02 /* \_SB_.PCI0.WMID.BF02 */
                        Local1 = BF01 /* \_SB_.PCI0.WMID.BF01 */
                    }

                    If (Local0 == 0x0E)
                    {
                        If (BF00 == Zero)
                        {
                            BF00 = 0xFF
                        }
                        Else
                        {
                            Local1 = BF00 /* \_SB_.PCI0.WMID.BF00 */
                            BF00 = One
                        }
                    }
                }

                Method (CKGS, 0, NotSerialized)
                {
                    GSTS = One
                    Return (GSTS) /* \_SB_.PCI0.WMID.GSTS */
                }

                Method (WSHP, 1, NotSerialized)
                {
                }

                Method (WSSL, 1, NotSerialized)
                {
                }

                Method (WSSP, 1, NotSerialized)
                {
                }

                Method (WSSE, 1, NotSerialized)
                {
                }

                Method (WSVE, 1, NotSerialized)
                {
                    Local0 = Arg0
                    If (Local0 == One)
                    {
                        BGEF = One
                    }
                    Else
                    {
                        BGEF = Zero
                    }

                    BGDS [Zero] = Zero
                }

                Name (_WDG, Buffer (0xDC)
                {
                    /* 0000 */  0x09, 0x4E, 0x76, 0x95, 0x56, 0xFB, 0x83, 0x4E,  /* .Nv.V..N */
                    /* 0008 */  0xB3, 0x1A, 0x37, 0x76, 0x1F, 0x60, 0x99, 0x4A,  /* ..7v.`.J */
                    /* 0010 */  0x41, 0x41, 0x01, 0x01, 0x58, 0xF2, 0xF4, 0x6A,  /* AA..X..j */
                    /* 0018 */  0x01, 0xB4, 0xFD, 0x42, 0xBE, 0x91, 0x3D, 0x4A,  /* ...B..=J */
                    /* 0020 */  0xC2, 0xD7, 0xC0, 0xD3, 0x42, 0x41, 0x01, 0x02,  /* ....BA.. */
                    /* 0028 */  0xAC, 0x61, 0x1A, 0xCC, 0x56, 0x42, 0xA3, 0x41,  /* .a..VB.A */
                    /* 0030 */  0xB9, 0xE0, 0x05, 0xA4, 0x45, 0xAD, 0xE2, 0xF5,  /* ....E... */
                    /* 0038 */  0x80, 0x00, 0x01, 0x08, 0x53, 0x44, 0x8C, 0xE7,  /* ....SD.. */
                    /* 0040 */  0x27, 0x02, 0x61, 0x48, 0x9E, 0xDE, 0xF5, 0x60,  /* '.aH...` */
                    /* 0048 */  0x0B, 0x4A, 0x3D, 0x39, 0x42, 0x42, 0x01, 0x02,  /* .J=9BB.. */
                    /* 0050 */  0x7B, 0x4F, 0xE0, 0xAA, 0xC5, 0xB3, 0x65, 0x48,  /* {O....eH */
                    /* 0058 */  0x95, 0xD6, 0x9F, 0xAC, 0x7F, 0xF3, 0xE9, 0x2B,  /* .......+ */
                    /* 0060 */  0x42, 0x43, 0x01, 0x02, 0x79, 0x4C, 0xF9, 0xCF,  /* BC..yL.. */
                    /* 0068 */  0x77, 0x6C, 0xF7, 0x4A, 0xAC, 0x56, 0x7D, 0xD0,  /* wl.J.V}. */
                    /* 0070 */  0xCE, 0x01, 0xC9, 0x97, 0x42, 0x44, 0x01, 0x02,  /* ....BD.. */
                    /* 0078 */  0xC5, 0x2E, 0x77, 0x79, 0xB1, 0x04, 0xFD, 0x4B,  /* ..wy...K */
                    /* 0080 */  0x84, 0x3C, 0x61, 0xE7, 0xF7, 0x7B, 0x6C, 0xC9,  /* .<a..{l. */
                    /* 0088 */  0x42, 0x45, 0x01, 0x02, 0xB7, 0xA0, 0xC9, 0xA7,  /* BE...... */
                    /* 0090 */  0x9D, 0x4C, 0x72, 0x4C, 0x83, 0xBB, 0x53, 0xA3,  /* .LrL..S. */
                    /* 0098 */  0x45, 0x91, 0x71, 0xDF, 0x42, 0x46, 0x01, 0x02,  /* E.q.BF.. */
                    /* 00A0 */  0x4F, 0x06, 0x3A, 0x65, 0x3A, 0xA2, 0x5F, 0x48,  /* O.:e:._H */
                    /* 00A8 */  0xB3, 0xD9, 0x13, 0xF6, 0x53, 0x2A, 0x01, 0x82,  /* ....S*.. */
                    /* 00B0 */  0x42, 0x47, 0x01, 0x02, 0xA7, 0xB1, 0x85, 0xDB,  /* BG...... */
                    /* 00B8 */  0x9A, 0x06, 0xBB, 0x4A, 0xA2, 0xB5, 0xD1, 0x86,  /* ...J.... */
                    /* 00C0 */  0xA2, 0x1B, 0x80, 0xF1, 0x81, 0x00, 0x01, 0x08,  /* ........ */
                    /* 00C8 */  0x91, 0x6B, 0x91, 0x36, 0x64, 0x1A, 0x83, 0x45,  /* .k.6d..E */
                    /* 00D0 */  0x84, 0xD0, 0x53, 0x83, 0x0F, 0xB9, 0x10, 0x8D,  /* ..S..... */
                    /* 00D8 */  0x82, 0x00, 0x01, 0x08                           /* .... */
                })
                Method (WQAA, 1, NotSerialized)
                {
                    AAF1 ()
                    BUFF = AADS /* \_SB_.PCI0.WMID.AADS */
                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (WMBA, 3, NotSerialized)
                {
                    Name (T_0, Zero)
                    T_0 = Arg1
                    If (Match (Package (0x08)
                                    {
                                        One, 
                                        0x02, 
                                        0x03, 
                                        0x08, 
                                        0x09, 
                                        0x0A, 
                                        0x0C, 
                                        0x0D
                                    }, MEQ, T_0, MTR, Zero, Zero) != Ones)
                    {
                        Local0 = Zero
                    }
                    ElseIf (Match (Package (0x05)
                                    {
                                        0x04, 
                                        0x05, 
                                        0x06, 
                                        0x07, 
                                        0x0B
                                    }, MEQ, T_0, MTR, Zero, Zero) != Ones)
                    {
                        If (Arg1 == 0x07)
                        {
                            BUFF = Arg2
                            If (BF00)
                            {
                                BAEF = One
                            }
                        }

                        Local0 = One
                    }

                    If (Local0)
                    {
                        WSDS (Arg1, Arg2)
                    }
                    Else
                    {
                        WGDS (Arg1)
                    }

                    BUFF = DerefOf (BADG [(Arg1 - One)])
                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event
                {
                    If (Arg0 >= 0x80)
                    {
                        If (Arg0 < 0x83)
                        {
                            Return (OEMN ())
                        }
                    }

                    Return (Zero)
                }

                Method (WMBB, 3, NotSerialized)
                {
                    STRL (Arg1, Arg2)
                    If (Arg1 == One)
                    {
                        BUFF = BBSB /* \_SB_.PCI0.WMID.BBSB */
                    }

                    If (Arg1 == 0x02)
                    {
                        BUFF = BBD1 /* \_SB_.PCI0.WMID.BBD1 */
                    }

                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (WMBC, 3, NotSerialized)
                {
                    WODP (Arg1, Arg2)
                    If (Arg1 < 0x0A)
                    {
                        Local0 = (Arg1 - One)
                        BUFF = DerefOf (BCDS [(Arg1 - One)])
                    }
                    Else
                    {
                        BUFF = (DerefOf (BCDS [(Arg1 - 0x0A)]) >> 0x10)
                    }

                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (WMBD, 3, NotSerialized)
                {
                    If (Arg1 == One)
                    {
                        BUFF = Arg2
                        Local0 = BUFF /* \_SB_.PCI0.WMID.BUFF */
                        WIT0 = Arg2
                        GCPU (WIT0)
                        Return (DSY0) /* \_SB_.PCI0.WMID.DSY0 */
                    }

                    If (Arg1 == 0x02)
                    {
                        Local0 = Arg2
                        MSRR (Arg2)
                        Return (DSY1) /* \_SB_.PCI0.WMID.DSY1 */
                    }

                    If (Arg1 == 0x03)
                    {
                        Local0 = Arg2
                        MSRW (Arg2)
                        Return (DSY1) /* \_SB_.PCI0.WMID.DSY1 */
                    }

                    If (Arg1 == 0x04)
                    {
                        C4C3 (Arg1, Arg2)
                        BUFF = (DerefOf (BCDS [(Arg1 + 0x05)]) >> 0x10)
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x05)
                    {
                        C4C3 (Arg1, Arg2)
                        BUFF = DerefOf (BCDS [(Arg1 + 0x04)])
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x06)
                    {
                        CPUF ()
                        BUFF = DerefOf (BCDS [(Arg1 + 0x04)])
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x07)
                    {
                        CPUT ()
                        BUFF = DerefOf (BCDS [(Arg1 + 0x04)])
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x08)
                    {
                        WPRW = Arg2
                        WPIR = WWD1 /* \_SB_.PCI0.WMID.WWD1 */
                        WPIF = WWD2 /* \_SB_.PCI0.WMID.WWD2 */
                        WPID = WWD3 /* \_SB_.PCI0.WMID.WWD3 */
                        WPIB = WWD4 /* \_SB_.PCI0.WMID.WWD4 */
                        Concatenate (WPCI, WWD0, Local0)
                        PCIR (Local0)
                        Return (DSY2) /* \_SB_.PCI0.WMID.DSY2 */
                    }

                    If (Arg1 == 0x09)
                    {
                        DSY6 = Arg2
                        Local0 = DY60 /* \_SB_.PCI0.WMID.DY60 */
                        DSY0 = Arg2
                        WPRW = DY01 /* \_SB_.PCI0.WMID.DY01 */
                        WPIR = WWD1 /* \_SB_.PCI0.WMID.WWD1 */
                        WPIF = WWD2 /* \_SB_.PCI0.WMID.WWD2 */
                        WPID = WWD3 /* \_SB_.PCI0.WMID.WWD3 */
                        WPIB = WWD4 /* \_SB_.PCI0.WMID.WWD4 */
                        Local1 = WPCI /* \_SB_.PCI0.WMID.WPCI */
                        Concatenate (DY60, WPCI, Local0)
                        Concatenate (Local0, WWD0, Local1)
                        PCIW (Local1)
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x0A)
                    {
                        CPUS ()
                        BUFF = DerefOf (BCDS [(Arg1 + 0x02)])
                        Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                    }

                    If (Arg1 == 0x0B)
                    {
                        PCID (Arg2)
                        Return (DSY6) /* \_SB_.PCI0.WMID.DSY6 */
                    }

                    Return (Zero)
                }

                Method (WMBE, 3, NotSerialized)
                {
                    BTIF (Arg1, Arg2)
                    Debug = BUFF /* \_SB_.PCI0.WMID.BUFF */
                    Debug = BEDS /* \_SB_.PCI0.WMID.BEDS */
                    BUFF = DerefOf (BEDS [(Arg1 - One)])
                    Debug = BUFF /* \_SB_.PCI0.WMID.BUFF */
                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }

                Method (WMBF, 3, NotSerialized)
                {
                }

                Method (WMBG, 3, NotSerialized)
                {
                    BUFF = Arg2
                    WSVE (BF00)
                    BUFF = DerefOf (BGDS [(Arg1 - One)])
                    Debug = BUFF /* \_SB_.PCI0.WMID.BUFF */
                    Return (BUFF) /* \_SB_.PCI0.WMID.BUFF */
                }
            }
        }
    }

    Scope (\)
    {
        Name (SSDT, Package (0x0C)
        {
            "CPU0IST ", 
            0x5F380C90, 
            0x00000239, 
            "CPU1IST ", 
            0x5F380F10, 
            0x000000D0, 
            "CPU0CST ", 
            0x5F37FE10, 
            0x000001C7, 
            "CPU1CST ", 
            0x5F37EF10, 
            0x00000083
        })
        Name (CFGD, 0x013068B1)
        Name (\PDC0, 0x80000000)
        Name (\PDC1, 0x80000000)
        Name (\SDTL, Zero)
    }

    Scope (\_PR.CPU0)
    {
        Name (HI0, Zero)
        Name (HC0, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Local0 = SizeOf (Arg0)
            Local1 = (Local0 - 0x08)
            CreateField (Arg0, 0x40, (Local1 * 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                 0x00, 0x00, 0x00, 0x00                           /* .... */
            })
            Concatenate (STS0, TEMP, Local2)
            _OSC (ToUUID ("4077a616-290c-47be-9ebd-d87058713953"), REVS, SIZE, Local2)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            CreateDWordField (Arg3, Zero, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, ToUUID ("4077a616-290c-47be-9ebd-d87058713953"))
            CreateDWordField (UID0, Zero, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (!(((IID0 == EID0) && (IID1 == EID1)) && ((
                IID2 == EID2) && (IID3 == EID3))))
            {
                STS0 [Zero] = 0x06
                Return (Arg3)
            }

            If (Arg1 != One)
            {
                STS0 [Zero] = 0x0A
                Return (Arg3)
            }

            PDC0 = ((PDC0 & 0x7FFFFFFF) | CAP0) /* \_PR_.CPU0._OSC.CAP0 */
            If (CFGD & One)
            {
                If (((CFGD & 0x01000000) && ((PDC0 & 0x09) == 
                    0x09)) && !(SDTL & One))
                {
                    SDTL |= One
                    OperationRegion (IST0, SystemMemory, DerefOf (SSDT [One]), DerefOf (SSDT [0x02]))
                    Load (IST0, HI0) /* \_PR_.CPU0.HI0_ */
                }
            }

            If (CFGD & 0xF0)
            {
                If (((CFGD & 0x01000000) && (PDC0 & 0x18)) && !
                    (SDTL & 0x02))
                {
                    SDTL |= 0x02
                    OperationRegion (CST0, SystemMemory, DerefOf (SSDT [0x07]), DerefOf (SSDT [0x08]))
                    Load (CST0, HC0) /* \_PR_.CPU0.HC0_ */
                }
            }

            Return (Arg3)
        }
    }

    Scope (\_PR.CPU1)
    {
        Name (HI1, Zero)
        Name (HC1, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Local0 = SizeOf (Arg0)
            Local1 = (Local0 - 0x08)
            CreateField (Arg0, 0x40, (Local1 * 0x08), TEMP)
            Name (STS1, Buffer (0x04)
            {
                 0x00, 0x00, 0x00, 0x00                           /* .... */
            })
            Concatenate (STS1, TEMP, Local2)
            _OSC (ToUUID ("4077a616-290c-47be-9ebd-d87058713953"), REVS, SIZE, Local2)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            CreateDWordField (Arg3, Zero, STS1)
            CreateDWordField (Arg3, 0x04, CAP1)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID1, ToUUID ("4077a616-290c-47be-9ebd-d87058713953"))
            CreateDWordField (UID1, Zero, EID0)
            CreateDWordField (UID1, 0x04, EID1)
            CreateDWordField (UID1, 0x08, EID2)
            CreateDWordField (UID1, 0x0C, EID3)
            If (!(((IID0 == EID0) && (IID1 == EID1)) && ((
                IID2 == EID2) && (IID3 == EID3))))
            {
                STS1 [Zero] = 0x06
                Return (Arg3)
            }

            If (Arg1 != One)
            {
                STS1 [Zero] = 0x0A
                Return (Arg3)
            }

            PDC1 = ((PDC1 & 0x7FFFFFFF) | CAP1) /* \_PR_.CPU1._OSC.CAP1 */
            If (CFGD & One)
            {
                If (((CFGD & 0x01000000) && ((PDC1 & 0x09) == 
                    0x09)) && !(SDTL & 0x10))
                {
                    SDTL |= 0x10
                    OperationRegion (IST1, SystemMemory, DerefOf (SSDT [0x04]), DerefOf (SSDT [0x05]))
                    Load (IST1, HI1) /* \_PR_.CPU1.HI1_ */
                }
            }

            If (CFGD & 0xF0)
            {
                If (((CFGD & 0x01000000) && (PDC1 & 0x18)) && !
                    (SDTL & 0x20))
                {
                    SDTL |= 0x20
                    OperationRegion (CST1, SystemMemory, DerefOf (SSDT [0x0A]), DerefOf (SSDT [0x0B]))
                    Load (CST1, HC1) /* \_PR_.CPU1.HC1_ */
                }
            }

            Return (Arg3)
        }
    }
}