← Back to team overview

hybrid-graphics-linux team mailing list archive

Re: Vostro 3400

 

Hi,

Last time i didnt send the DSDT file.
I have seen a lot of Dell Vostro with same problem. I assume that there is
no news still.



On Mon, Dec 20, 2010 at 12:38 PM, Luis Z <luisgls@xxxxxxxxx> wrote:

> Hi all,
>
> Wanting to sell this computer. My last dell worked pefectly now, so
> dissapointed. good luck.
>
> sudo dmidecode -s system-product-name
> Vostro 3400
> sudo dmidecode -s system-version
> not specified
> lspci -vnnn | perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA
> 00:02.0 VGA compatible controller [0300]: Intel Corporation Core Processor
> Integrated Graphics Controller [8086:0046] (rev 12) (prog-if 00 [VGA
> controller])
> 01:00.0 VGA compatible controller [0300]: nVidia Corporation GT218 [GeForce
> 310M] [10de:0a75] (rev ff) (prog-if ff)
>
>
> Saludos!
>
>
> --
> Luis Zapata Ortiz
> Molecular Biotechnology Engineering
> Faculty of Sciences. Universidad de Chile
> Las Palmeras 3425, Ñuñoa, Chile.
>



-- 
Luis Zapata Ortiz
Molecular Biotechnology Engineering
Faculty of Sciences. Universidad de Chile
Las Palmeras 3425, Ñuñoa, Chile.
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20090521
 *
 * Disassembly of DSDT.dat, Tue Feb  8 15:36:38 2011
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000093B0 (37808)
 *     Revision         0x02
 *     Checksum         0x99
 *     OEM ID           "DELL  "
 *     OEM Table ID     "WN09   "
 *     OEM Revision     0x00000040 (64)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20051117 (537202967)
 */
DefinitionBlock ("DSDT.aml", "DSDT", 2, "DELL  ", "WN09   ", 0x00000040)
{
    External (NNAB, IntObj)
    External (IDAB, MethodObj)    // 0 Arguments
    External (HNOT, MethodObj)    // 1 Arguments
    External (\_PR_.P003)
    External (\_PR_.P002)
    External (\_PR_.P001)
    External (\_PR_.P000)
    External (\_SB_.PCI0.WMI1)
    External (\_SB_.PCI0.GFX0.DACE)
    External (\_SB_.PCI0.GFX0.HGNC)
    External (\_SB_.PCI0.P0P2.PEGP)
    External (\_SB_.PCI0.P0P1.PEGP.DD02)
    External (\_SB_.PCI0.P0P2.PEGP.LCD_)
    External (\_SB_.PCI0.P0P1.PEGP.LCD_)
    External (\_SB_.PCI0.P0P1.PEGP.PO52, IntObj)

    Name (PEBS, 0xE0000000)
    Name (PEBL, 0x10000000)
    Name (VTDS, 0xFED90000)
    Name (VTDL, 0x4000)
    Name (TCBR, 0xFED08000)
    Name (TCLT, 0x1000)
    Name (SRCB, 0xFED1C000)
    Name (SRCL, 0x4000)
    Name (SUSW, 0xFF)
    Name (PMBS, 0x0400)
    Name (PMLN, 0x80)
    Name (SMIP, 0xB2)
    Name (APCB, 0xFEC00000)
    Name (APCL, 0x00100000)
    Name (PM30, 0x0430)
    Name (SMBS, 0x1180)
    Name (SMBL, 0x20)
    Name (HPTB, 0xFED00000)
    Name (HPTC, 0xFED1F404)
    Name (GPBS, 0x0500)
    Name (GPLN, 0x80)
    Name (ACPH, 0xDE)
    Name (ASSB, Zero)
    Name (AOTB, Zero)
    Name (AAXB, Zero)
    Name (PEHP, One)
    Name (SHPC, One)
    Name (PEER, One)
    Name (PECS, One)
    Name (ITKE, Zero)
    Name (FMBL, One)
    Name (BRF, One)
    Name (BPH, 0x02)
    Name (BLC, 0x03)
    Name (BRFS, 0x04)
    Name (BPHS, 0x05)
    Name (BLCT, 0x06)
    Name (BRF4, 0x07)
    Name (BEP, 0x08)
    Name (BBF, 0x09)
    Name (BOF, 0x0A)
    Name (BPT, 0x0B)
    Name (SRAF, 0x0C)
    Name (WWP, 0x0D)
    Name (DSSP, Zero)
    Name (FHPP, Zero)
    Name (TOBS, 0x0460)
    Name (TPMF, Zero)
    Name (P0HP, Zero)
    Name (P1HP, Zero)
    Name (P2HP, Zero)
    Name (P3HP, Zero)
    Name (P4HP, One)
    Name (P5HP, Zero)
    Name (P6HP, Zero)
    Name (P7HP, Zero)
    Name (PMBA, 0x0400)
    Name (GPBA, 0x0500)
    Name (WSMI, 0x0D)
    Name (BCLS, Package (0x12)
    {
        0x64, 
        0x1E, 
        0x06, 
        0x0C, 
        0x12, 
        0x18, 
        0x1E, 
        0x24, 
        0x2A, 
        0x30, 
        0x36, 
        0x3C, 
        0x42, 
        0x48, 
        0x4E, 
        0x54, 
        0x5A, 
        0x64
    })
    Name (PEPM, Zero)
    Method (RRIO, 4, NotSerialized)
    {
        Store ("RRIO", Debug)
    }

    Method (RDMA, 3, NotSerialized)
    {
        Store ("rDMA", Debug)
    }

    Name (PICM, Zero)
    Method (_PIC, 1, NotSerialized)
    {
        If (Arg0)
        {
            Store (0xAA, DBG8)
        }
        Else
        {
            Store (0xAC, DBG8)
        }

        Store (Arg0, PICM)
    }

    Name (OSVR, Ones)
    Method (OSFL, 0, NotSerialized)
    {
        If (LNotEqual (OSVR, Ones))
        {
            Return (OSVR)
        }

        If (LEqual (PICM, Zero))
        {
            Store (0xAC, DBG8)
        }

        Store (One, OSVR)
        If (CondRefOf (_OSI, Local0))
        {
            If (_OSI ("Linux"))
            {
                Store (0x03, OSVR)
            }

            If (_OSI ("Windows 2001"))
            {
                Store (0x04, OSVR)
            }

            If (_OSI ("Windows 2001.1"))
            {
                Store (0x05, OSVR)
            }

            If (_OSI ("FreeBSD"))
            {
                Store (0x06, OSVR)
            }

            If (_OSI ("HP-UX"))
            {
                Store (0x07, OSVR)
            }

            If (_OSI ("OpenVMS"))
            {
                Store (0x08, OSVR)
            }

            If (_OSI ("Windows 2001 SP1"))
            {
                Store (0x09, OSVR)
            }

            If (_OSI ("Windows 2001 SP2"))
            {
                Store (0x0A, OSVR)
            }

            If (_OSI ("Windows 2001 SP3"))
            {
                Store (0x0B, OSVR)
            }

            If (_OSI ("Windows 2006"))
            {
                Store (0x0C, OSVR)
            }

            If (_OSI ("Windows 2006 SP1"))
            {
                Store (0x0D, OSVR)
            }

            If (_OSI ("Windows 2009"))
            {
                Store (0x0E, OSVR)
            }
        }
        Else
        {
            If (MCTH (_OS, "Microsoft Windows NT"))
            {
                Store (Zero, OSVR)
            }

            If (MCTH (_OS, "Microsoft Windows"))
            {
                Store (One, OSVR)
            }

            If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
            {
                Store (0x02, OSVR)
            }

            If (MCTH (_OS, "Linux"))
            {
                Store (0x03, OSVR)
            }

            If (MCTH (_OS, "FreeBSD"))
            {
                Store (0x06, OSVR)
            }

            If (MCTH (_OS, "HP-UX"))
            {
                Store (0x07, OSVR)
            }

            If (MCTH (_OS, "OpenVMS"))
            {
                Store (0x08, OSVR)
            }
        }

        Return (OSVR)
    }

    Method (MCTH, 2, NotSerialized)
    {
        If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (Zero)
        }

        Add (SizeOf (Arg0), One, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNotEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (
                BUF1, Local0))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Name (PRWP, Package (0x02)
    {
        Zero, 
        Zero
    })
    Method (GPRW, 2, NotSerialized)
    {
        Store (Arg0, Index (PRWP, Zero))
        Store (ShiftLeft (SS1, One), Local0)
        Or (Local0, ShiftLeft (SS2, 0x02), Local0)
        Or (Local0, ShiftLeft (SS3, 0x03), Local0)
        Or (Local0, ShiftLeft (SS4, 0x04), Local0)
        If (And (ShiftLeft (One, Arg1), Local0))
        {
            Store (Arg1, Index (PRWP, One))
        }
        Else
        {
            ShiftRight (Local0, One, Local0)
            If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
            {
                FindSetLeftBit (Local0, Index (PRWP, One))
            }
            Else
            {
                FindSetRightBit (Local0, Index (PRWP, One))
            }
        }

        Return (PRWP)
    }

    Name (WAKP, Package (0x02)
    {
        Zero, 
        Zero
    })
    OperationRegion (DEB0, SystemIO, 0x80, One)
    Field (DEB0, ByteAcc, NoLock, Preserve)
    {
        DBG8,   8
    }

    OperationRegion (DEB1, SystemIO, 0x90, 0x02)
    Field (DEB1, WordAcc, NoLock, Preserve)
    {
        DBG9,   16
    }

    Name (SS1, One)
    Name (SS2, Zero)
    Name (SS3, One)
    Name (SS4, One)
    Name (IOST, 0x0000)
    Name (TOPM, 0xAFFFFFFF)
    Name (ROMS, 0xFFE00000)
    Name (MG1B, 0x00000000)
    Name (MG1L, 0x00000000)
    Name (MG2B, 0xB0000000)
    Name (MG2L, 0x50000000)
    OperationRegion (GNVS, SystemMemory, 0xAB623E18, 0x0172)
    Field (GNVS, AnyAcc, Lock, Preserve)
    {
        OSYS,   16, 
        SMIF,   8, 
        PRM0,   8, 
        PRM1,   8, 
        SCIF,   8, 
        PRM2,   8, 
        PRM3,   8, 
        LCKF,   8, 
        PRM4,   8, 
        PRM5,   8, 
        P80D,   32, 
        LIDS,   8, 
        PWRS,   8, 
        DBGS,   8, 
        THOF,   8, 
        ACT1,   8, 
        ACTT,   8, 
        PSVT,   8, 
        TC1V,   8, 
        TC2V,   8, 
        TSPV,   8, 
        CRTT,   8, 
        DTSE,   8, 
        DTS1,   8, 
        DTS2,   8, 
        DTSF,   8, 
                Offset (0x25), 
        REVN,   8, 
                Offset (0x28), 
        APIC,   8, 
        TCNT,   8, 
        PCP0,   8, 
        PCP1,   8, 
        PPCM,   8, 
        PPMF,   32, 
                Offset (0x32), 
        NATP,   8, 
        CMAP,   8, 
        CMBP,   8, 
        LPTP,   8, 
        FDCP,   8, 
        CMCP,   8, 
        CIRP,   8, 
        SMSC,   8, 
        W381,   8, 
        SMC1,   8, 
        IGDS,   8, 
        TLST,   8, 
        CADL,   8, 
        PADL,   8, 
        CSTE,   16, 
        NSTE,   16, 
        SSTE,   16, 
        NDID,   8, 
        DID1,   32, 
        DID2,   32, 
        DID3,   32, 
        DID4,   32, 
        DID5,   32, 
        KSV0,   32, 
        KSV1,   8, 
                Offset (0x67), 
        BLCS,   8, 
        BRTL,   8, 
        ALSE,   8, 
        ALAF,   8, 
        LLOW,   8, 
        LHIH,   8, 
                Offset (0x6E), 
        EMAE,   8, 
        EMAP,   16, 
        EMAL,   16, 
                Offset (0x74), 
        MEFE,   8, 
        DSTS,   8, 
                Offset (0x78), 
        TPMP,   8, 
        TPME,   8, 
        PPRP,   32, 
        PPRQ,   8, 
        LPPR,   8, 
                Offset (0x82), 
        GTF0,   56, 
        GTF2,   56, 
        IDEM,   8, 
        GTF1,   56, 
        BID,    8, 
                Offset (0xAA), 
        ASLB,   32, 
        IBTT,   8, 
        IPAT,   8, 
        ITVF,   8, 
        ITVM,   8, 
        IPSC,   8, 
        IBLC,   8, 
        IBIA,   8, 
        ISSC,   8, 
        I409,   8, 
        I509,   8, 
        I609,   8, 
        I709,   8, 
        IPCF,   8, 
        IDMS,   8, 
        IF1E,   8, 
        HVCO,   8, 
        NXD1,   32, 
        NXD2,   32, 
        NXD3,   32, 
        NXD4,   32, 
        NXD5,   32, 
        NXD6,   32, 
        NXD7,   32, 
        NXD8,   32, 
        GSMI,   8, 
        PAVP,   8, 
                Offset (0xE1), 
        OSCC,   8, 
        NEXP,   8, 
        SDGV,   8, 
        SDDV,   8, 
                Offset (0xEB), 
        DSEN,   8, 
        ECON,   8, 
        GPIC,   8, 
        CTYP,   8, 
        L01C,   8, 
        VFN0,   8, 
        VFN1,   8, 
                Offset (0x100), 
        NVGA,   32, 
        NVHA,   32, 
        AMDA,   32, 
        DID6,   32, 
        DID7,   32, 
        DID8,   32, 
        EBAS,   32, 
        CPSP,   32, 
        EECP,   32, 
        EVCP,   32, 
        XBAS,   32, 
        OBS1,   32, 
        OBS2,   32, 
        OBS3,   32, 
        OBS4,   32, 
        OBS5,   32, 
        OBS6,   32, 
        OBS7,   32, 
        OBS8,   32, 
                Offset (0x157), 
        ATMC,   8, 
        PTMC,   8, 
        ATRA,   8, 
        PTRA,   8, 
        PNHM,   32, 
        TBAB,   32, 
        TBAH,   32, 
        RTIP,   8, 
        TSOD,   8, 
        ATPC,   8, 
        PTPC,   8, 
        PFLV,   8, 
        BREV,   8, 
        DPBM,   8, 
        DPCM,   8, 
        DPDM,   8, 
        ALFP,   8, 
        IMON,   8
    }

    OperationRegion (EXBU, SystemMemory, 0xAB630018, 0x1013)
    Field (EXBU, AnyAcc, Lock, Preserve)
    {
        ECMD,   8, 
        WCMD,   32, 
        WDID,   32, 
        WBUF,   32768, 
        GPUF,   8, 
        SMIB,   8, 
        SGTF,   8, 
        SGT2,   8, 
        SGT3,   8, 
        SGTL,   32, 
        THML,   8
    }

    Scope (_SB)
    {
        Name (PR00, Package (0x29)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

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

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

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

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

            Package (0x04)
            {
                0x0004FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0004FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0x001FFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

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

            Package (0x04)
            {
                0x0016FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0016FFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0016FFFF, 
                One, 
                LNKB, 
                Zero
            }, 

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

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

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

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

            Package (0x04)
            {
                0x0019FFFF, 
                Zero, 
                LNKE, 
                Zero
            }, 

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

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

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

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

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKA, 
                Zero
            }
        })
        Name (AR00, Package (0x29)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x001AFFFF, 
                One, 
                Zero, 
                0x15
            }, 

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

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

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x10
            }
        })
        Name (PR20, Package (0x10)
        {
            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

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

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

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

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

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

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

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

            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

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

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKH, 
                Zero
            }
        })
        Name (AR20, Package (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)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

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

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

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

            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

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

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x17
            }
        })
        Name (PR11, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR11, 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
            }
        })
        Name (PR12, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR12, 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
            }
        })
        Name (PR13, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                Zero
            }
        })
        Name (AR13, 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
            }
        })
        Name (PR14, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                Zero
            }
        })
        Name (AR14, 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
            }
        })
        Name (PR15, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR15, 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
            }
        })
        Name (PR16, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR16, 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
            }
        })
        Name (PR17, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                Zero
            }
        })
        Name (AR17, 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
            }
        })
        Name (PR18, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                Zero
            }
        })
        Name (AR18, 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
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,6,7,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Name (PRSC, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,6,10,11,12,14,15}
        })
        Alias (PRSC, PRSD)
        Alias (PRSA, PRSE)
        Alias (PRSA, PRSF)
        Alias (PRSA, PRSG)
        Alias (PRSA, PRSH)
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08"))
            Name (_CID, EisaId ("PNP0A03"))
            Name (_ADR, Zero)
            Method (^BN00, 0, NotSerialized)
            {
                Return (Zero)
            }

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

            Name (_UID, Zero)
            Method (_PRT, 0, NotSerialized)
            {
                If (PICM)
                {
                    Return (AR00)
                }

                Return (PR00)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (0x03)
                }
            }

            Device (MCH)
            {
                Name (_HID, EisaId ("PNP0C01"))
                Name (_UID, 0x0A)
                Name (MCHR, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00006000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x1FE00000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED20000,         // Address Base
                        0x00020000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFEE00000,         // Address Base
                        0x00010000,         // Address Length
                        )
                })
                Method (_CRS, 0, NotSerialized)
                {
                    CreateDWordField (MCHR, 0x10, PCIB)
                    CreateDWordField (MCHR, 0x14, PCIL)
                    Store (PEBS, PCIB)
                    Store (PEBL, PCIL)
                    CreateDWordField (MCHR, 0x1C, VTCB)
                    CreateDWordField (MCHR, 0x20, VTCL)
                    Store (VTDS, VTCB)
                    Store (VTDL, VTCL)
                    Return (MCHR)
                }
            }

            Method (NPTS, 1, NotSerialized)
            {
            }

            Method (NWAK, 1, NotSerialized)
            {
            }

            Device (P0P1)
            {
                Name (_ADR, 0x00010000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Device (PEGP)
                {
                    Name (_ADR, Zero)
                }
            }

            Device (P0P2)
            {
                Name (_ADR, 0x00030000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }
            }

            Device (P0P3)
            {
                Name (_ADR, 0x00040000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }
            }

            Device (P0P4)
            {
                Name (_ADR, 0x00050000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }
            }

            Device (P0P5)
            {
                Name (_ADR, 0x00060000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }
            }

            Device (SBRG)
            {
                Name (_ADR, 0x001F0000)
                Method (SPTS, 1, NotSerialized)
                {
                    Store (One, PS1S)
                    Store (One, PS1E)
                    Store (One, SLPS)
                }

                Method (SWAK, 1, NotSerialized)
                {
                    Store (Zero, SLPS)
                    Store (Zero, PS1E)
                    If (RTCS) {}
                    Else
                    {
                        Notify (PWRB, 0x02)
                    }
                }

                OperationRegion (APMP, SystemIO, SMIP, 0x02)
                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    APMC,   8, 
                    APMS,   8
                }

                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x01), 
                        ,   1, 
                    BRTC,   1
                }

                OperationRegion (SMIE, SystemIO, PM30, 0x08)
                Field (SMIE, ByteAcc, NoLock, Preserve)
                {
                        ,   4, 
                    PS1E,   1, 
                        ,   31, 
                    PS1S,   1, 
                            Offset (0x08)
                }

                Scope (\_SB)
                {
                    Name (SLPS, Zero)
                    OperationRegion (PMS0, SystemIO, PMBS, 0x04)
                    Field (PMS0, ByteAcc, NoLock, Preserve)
                    {
                            ,   10, 
                        RTCS,   1, 
                            ,   3, 
                        PEXS,   1, 
                        WAKS,   1, 
                                Offset (0x03), 
                        PWBT,   1, 
                                Offset (0x04)
                    }

                    Device (SLPB)
                    {
                        Name (_HID, EisaId ("PNP0C0E"))
                        Method (_STA, 0, NotSerialized)
                        {
                            If (LNotEqual (SUSW, 0xFF))
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (_PRW, 0, NotSerialized)
                        {
                            If (LNotEqual (SUSW, 0xFF))
                            {
                                Return (Package (0x02)
                                {
                                    SUSW, 
                                    0x04
                                })
                            }
                            Else
                            {
                                Return (Package (0x02)
                                {
                                    Zero, 
                                    Zero
                                })
                            }
                        }
                    }
                }

                Scope (\_SB)
                {
                    Scope (PCI0)
                    {
                        Device (PCH)
                        {
                            Name (_HID, EisaId ("PNP0C01"))
                            Name (_UID, 0x01C7)
                            Name (_STA, 0x0F)
                            Name (ICHR, ResourceTemplate ()
                            {
                                IO (Decode16,
                                    0x0000,             // Range Minimum
                                    0x0000,             // Range Maximum
                                    0x00,               // Alignment
                                    0x00,               // Length
                                    )
                                IO (Decode16,
                                    0x0000,             // Range Minimum
                                    0x0000,             // Range Maximum
                                    0x00,               // Alignment
                                    0x00,               // Length
                                    )
                                IO (Decode16,
                                    0x0000,             // Range Minimum
                                    0x0000,             // Range Maximum
                                    0x00,               // Alignment
                                    0x00,               // Length
                                    )
                                Memory32Fixed (ReadWrite,
                                    0x00000000,         // Address Base
                                    0x00000000,         // Address Length
                                    )
                                Memory32Fixed (ReadWrite,
                                    0x00000000,         // Address Base
                                    0x00000000,         // Address Length
                                    )
                                Memory32Fixed (ReadWrite,
                                    0x00000000,         // Address Base
                                    0x00000000,         // Address Length
                                    )
                                Memory32Fixed (ReadWrite,
                                    0xFF000000,         // Address Base
                                    0x01000000,         // Address Length
                                    )
                            })
                            Method (_CRS, 0, NotSerialized)
                            {
                                CreateWordField (ICHR, 0x02, PBB)
                                CreateWordField (ICHR, 0x04, PBH)
                                CreateByteField (ICHR, 0x07, PML)
                                Store (PMBS, PBB)
                                Store (PMBS, PBH)
                                Store (PMLN, PML)
                                If (SMBS)
                                {
                                    CreateWordField (ICHR, 0x0A, SMB)
                                    CreateWordField (ICHR, 0x0C, SMH)
                                    CreateByteField (ICHR, 0x0F, SML)
                                    Store (SMBS, SMB)
                                    Store (SMBS, SMH)
                                    Store (SMBL, SML)
                                }

                                If (GPBS)
                                {
                                    CreateWordField (ICHR, 0x12, IGB)
                                    CreateWordField (ICHR, 0x14, IGH)
                                    CreateByteField (ICHR, 0x17, IGL)
                                    Store (GPBS, IGB)
                                    Store (GPBS, IGH)
                                    Store (GPLN, IGL)
                                }

                                If (APCB)
                                {
                                    CreateDWordField (ICHR, 0x28, APB)
                                    CreateDWordField (ICHR, 0x2C, APL)
                                    Store (APCB, APB)
                                    Store (APCL, APL)
                                }

                                CreateDWordField (ICHR, 0x1C, RCB)
                                CreateDWordField (ICHR, 0x20, RCL)
                                Store (SRCB, RCB)
                                Store (SRCL, RCL)
                                If (TCBR)
                                {
                                    CreateDWordField (ICHR, 0x34, TCB)
                                    CreateDWordField (ICHR, 0x38, TCL)
                                    Store (TCBR, TCB)
                                    Store (TCLT, TCL)
                                }

                                Return (ICHR)
                            }
                        }
                    }
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (DMAD)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        DMA (Compatibility, BusMaster, Transfer8, )
                            {4}
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0087,             // Range Minimum
                            0x0087,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0089,             // Range Minimum
                            0x0089,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x008F,             // Range Minimum
                            0x008F,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x00,               // Alignment
                            0x20,               // Length
                            )
                    })
                }

                Device (TMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x00,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (RTC0)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

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

                Device (COPR)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Range Minimum
                            0x00F0,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (RMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x10)
                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Range Minimum
                            0x0010,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0022,             // Range Minimum
                            0x0022,             // Range Maximum
                            0x00,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x0044,             // Range Minimum
                            0x0044,             // Range Maximum
                            0x00,               // Alignment
                            0x1C,               // Length
                            )
                        IO (Decode16,
                            0x0068,             // Range Minimum
                            0x0068,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0072,             // Range Minimum
                            0x0072,             // Range Maximum
                            0x00,               // Alignment
                            0x0E,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0084,             // Range Minimum
                            0x0084,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0088,             // Range Minimum
                            0x0088,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x008C,             // Range Minimum
                            0x008C,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0090,             // Range Minimum
                            0x0090,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x00A2,             // Range Minimum
                            0x00A2,             // Range Maximum
                            0x00,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x00E0,             // Range Minimum
                            0x00E0,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFE800000,         // Address Base
                            0x00000200,         // Address Length
                            )
                    })
                    OperationRegion (MBOX, SystemMemory, 0xFE800000, 0x0200)
                    Field (MBOX, ByteAcc, Lock, Preserve)
                    {
                                Offset (0x01), 
                        ENTF,   8, 
                                Offset (0x101), 
                        MBX0,   8, 
                        MBX1,   8, 
                        MBX2,   8, 
                        MBX3,   8, 
                        MBX4,   8, 
                        MBX5,   8, 
                        MBX6,   8, 
                        MBX7,   8, 
                        MBX8,   8, 
                        MBX9,   8
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS)
                    }
                }
            }

            Device (BR20)
            {
                Name (_ADR, 0x001E0000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0B, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR20)
                    }

                    Return (PR20)
                }
            }

            Device (SAT0)
            {
                Name (_ADR, 0x001F0002)
                Name (^NATA, Package (0x01)
                {
                    0x001F0002
                })
                Name (\FZTF, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5
                })
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                            Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                            Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                            Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                            Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                            Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                            Offset (0x0C), 
                            Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, 
                        Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), 
                        Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, 
                        Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), 
                        Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), 
                            DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), 
                            DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, 
                                Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), 
                                GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, 
                                Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), 
                                GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), 
                            Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), 
                            Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00
                        )), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, 
                            Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, 
                                Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0
                                )), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0
                            )), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (Concatenate (RETB, FZTF))
                }
            }

            Device (SAT1)
            {
                Name (_ADR, 0x001F0005)
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                            Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                            Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                            Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                            Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                            Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                            Offset (0x0C), 
                            Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (PMUT, GMUT)
                        Store (PMCR, GMCR)
                        Store (PSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (PSUT, GSUT)
                        Store (PSCR, GSCR)
                        STM ()
                        Store (GMPT, PMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT)
                        Store (GMCR, PMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT)
                        Store (GSCR, PSCR)
                        If (And (Local0, One))
                        {
                            Store (One, PM3E)
                        }
                        Else
                        {
                            Store (Zero, PM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E)
                        }
                        Else
                        {
                            Store (Zero, PM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE)
                        }
                        Else
                        {
                            Store (Zero, PMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E)
                        }
                        Else
                        {
                            Store (Zero, PS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E)
                        }
                        Else
                        {
                            Store (Zero, PS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE)
                        }
                        Else
                        {
                            Store (Zero, PSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA0)
                        Store (GTF (One, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)
                    Method (_GTM, 0, NotSerialized)
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT)
                        Store (Local0, GMUE)
                        Store (SMUT, GMUT)
                        Store (SMCR, GMCR)
                        Store (SSRI, GSPT)
                        Store (Local1, GSUE)
                        Store (SSUT, GSUT)
                        Store (SSCR, GSCR)
                        STM ()
                        Store (GMPT, SMRI)
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT)
                        Store (GMCR, SMCR)
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT)
                        Store (GSCR, SSCR)
                        If (And (Local0, One))
                        {
                            Store (One, SM3E)
                        }
                        Else
                        {
                            Store (Zero, SM3E)
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E)
                        }
                        Else
                        {
                            Store (Zero, SM6E)
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE)
                        }
                        Else
                        {
                            Store (Zero, SMAE)
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E)
                        }
                        Else
                        {
                            Store (Zero, SS3E)
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E)
                        }
                        Else
                        {
                            Store (Zero, SS6E)
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE)
                        }
                        Else
                        {
                            Store (Zero, SSAE)
                        }

                        Store (GTF (Zero, Arg1), ATA2)
                        Store (GTF (One, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, 
                        Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), 
                        Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, 
                        Zero, Zero), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), 
                        Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), 
                            DMA0)
                        Or (CHNF, One, CHNF)
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), 
                            DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE)
                        Store (Zero, GMUT)
                        Store (Zero, GSUE)
                        Store (Zero, GSUT)
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, 
                                Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), 
                                GMUT)
                            Or (GMUE, One, GMUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE)
                                Or (GMUE, 0x04, GMUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                            {
                                If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                                {
                                    Store (DMA0, PIO0)
                                    Or (GMUE, 0x80, GMUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, 
                                Zero, Zero), Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), 
                                GSUT)
                            Or (GSUE, One, GSUE)
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE)
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE)
                                Or (GSUE, 0x04, GSUE)
                            }
                        }
                        Else
                        {
                            If (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                            {
                                If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                                {
                                    Store (DMA1, PIO1)
                                    Or (GSUE, 0x80, GSUE)
                                }
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE)
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), 
                            Local1)
                        Store (Local1, GMPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE)
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), 
                            Local1)
                        Store (Local1, GSPT)
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE)
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90
                })
                Name (AT03, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT04, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX)
                    Store (Arg1, A001)
                    Store (Arg2, A005)
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC)
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49)
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53)
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63)
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59)
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88)
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY)
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT)
                        }
                        Else
                        {
                            Store (PIO0, PIOT)
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT)
                            }
                            Else
                            {
                                Store (DMA0, DMAT)
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY)
                        Store (PIO0, PIOT)
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT)
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00
                        )), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, 
                            Zero, Zero), Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    Else
                    {
                        If (LAnd (And (ID63, 0xFF00), PIOT))
                        {
                            And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, 
                                Zero, Zero), 0x03, Local0)
                            Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0
                                )), Local1)
                            GTFB (AT01, Local1, Local7)
                        }
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, 
                            Zero, Zero), 0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0
                            )), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    Else
                    {
                        If (And (ID49, 0x0400))
                        {
                            GTFB (AT01, One, Local7)
                        }
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB)
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (Concatenate (RETB, FZTF))
                }
            }

            Device (SMB)
            {
                Name (_ADR, 0x001F0003)
                OperationRegion (SMBP, PCI_Config, 0x40, 0xC0)
                Field (SMBP, DWordAcc, NoLock, Preserve)
                {
                        ,   2, 
                    I2CE,   1
                }

                OperationRegion (SMPB, PCI_Config, 0x20, 0x04)
                Field (SMPB, DWordAcc, NoLock, Preserve)
                {
                        ,   5, 
                    SBAR,   11
                }

                OperationRegion (SMBI, SystemIO, ShiftLeft (SBAR, 0x05), 0x10)
                Field (SMBI, ByteAcc, NoLock, Preserve)
                {
                    HSTS,   8, 
                            Offset (0x02), 
                    HCON,   8, 
                    HCOM,   8, 
                    TXSA,   8, 
                    DAT0,   8, 
                    DAT1,   8, 
                    HBDR,   8, 
                    PECR,   8, 
                    RXSA,   8, 
                    SDAT,   16
                }

                Method (SSXB, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRXB, 1, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (0x44, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SWRB, 3, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (Arg2, DAT0)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRDB, 2, Serialized)
                {
                    Store (0xF3, DBG8)
                    Sleep (0x03E8)
                    Store (0xF4, DBG8)
                    Sleep (0x03E8)
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SWRW, 3, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    And (Arg2, 0xFF, DAT1)
                    And (ShiftRight (Arg2, 0x08), 0xFF, DAT0)
                    Store (0x4C, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SRDW, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (Zero, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x4C, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (Or (ShiftLeft (DAT0, 0x08), DAT1))
                    }

                    Return (0xFFFFFFFF)
                }

                Method (SBLW, 4, Serialized)
                {
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Arg3, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (SizeOf (Arg2), DAT0)
                    Store (Zero, Local1)
                    Store (DerefOf (Index (Arg2, Zero)), HBDR)
                    Store (0x54, HCON)
                    While (LGreater (SizeOf (Arg2), Local1))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (Zero)
                        }

                        Store (0x80, HSTS)
                        Increment (Local1)
                        If (LGreater (SizeOf (Arg2), Local1))
                        {
                            Store (DerefOf (Index (Arg2, Local1)), HBDR)
                        }
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (One)
                    }

                    Return (Zero)
                }

                Method (SBLR, 3, Serialized)
                {
                    Name (TBUF, Buffer (0x0100) {})
                    If (STRT ())
                    {
                        Return (Zero)
                    }

                    Store (Arg2, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, One), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x54, HCON)
                    Store (0x0FA0, Local0)
                    While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                    {
                        Decrement (Local0)
                        Stall (0x32)
                    }

                    If (LNot (Local0))
                    {
                        KILL ()
                        Return (Zero)
                    }

                    Store (DAT0, Index (TBUF, Zero))
                    Store (0x80, HSTS)
                    Store (One, Local1)
                    While (LLess (Local1, DerefOf (Index (TBUF, Zero))))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (Zero)
                        }

                        Store (HBDR, Index (TBUF, Local1))
                        Store (0x80, HSTS)
                        Increment (Local1)
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (TBUF)
                    }

                    Return (Zero)
                }

                Method (STRT, 0, Serialized)
                {
                    Store (0xC8, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x40))
                        {
                            Decrement (Local0)
                            Sleep (One)
                            If (LEqual (Local0, Zero))
                            {
                                Return (One)
                            }
                        }
                        Else
                        {
                            Store (Zero, Local0)
                        }
                    }

                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, One))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, Zero))
                            {
                                KILL ()
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Return (One)
                }

                Method (COMP, 0, Serialized)
                {
                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x02))
                        {
                            Return (One)
                        }
                        Else
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, Zero))
                            {
                                KILL ()
                            }
                        }
                    }

                    Return (Zero)
                }

                Method (KILL, 0, Serialized)
                {
                    Or (HCON, 0x02, HCON)
                    Or (HSTS, 0xFF, HSTS)
                }

                Scope (\_GPE)
                {
                    Method (_L07, 0, NotSerialized)
                    {
                        Store (0x20, \_SB.PCI0.SMB.HSTS)
                    }

                    Method (_L1B, 0, NotSerialized)
                    {
                        Store (0x20, \_SB.PCI0.SMB.HSTS)
                    }
                }
            }

            Device (PEX0)
            {
                Name (_ADR, 0x001C0000)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR11)
                    }

                    Return (PR11)
                }
            }

            Device (PEX1)
            {
                Name (_ADR, 0x001C0001)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR12)
                    }

                    Return (PR12)
                }
            }

            Device (PEX2)
            {
                Name (_ADR, 0x001C0002)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR13)
                    }

                    Return (PR13)
                }
            }

            Device (PEX3)
            {
                Name (_ADR, 0x001C0003)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR14)
                    }

                    Return (PR14)
                }
            }

            Device (PEX4)
            {
                Name (_ADR, 0x001C0004)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR15)
                    }

                    Return (PR15)
                }
            }

            Device (PEX5)
            {
                Name (_ADR, 0x001C0005)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR16)
                    }

                    Return (PR16)
                }
            }

            Device (PEX6)
            {
                Name (_ADR, 0x001C0006)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR17)
                    }

                    Return (PR17)
                }
            }

            Device (PEX7)
            {
                Name (_ADR, 0x001C0007)
                OperationRegion (PXRC, PCI_Config, Zero, 0x0100)
                Field (PXRC, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                            Offset (0x62), 
                    PMS,    1, 
                    PMP,    1, 
                            Offset (0xD8), 
                        ,   30, 
                    HPE,    1, 
                    PCE,    1, 
                        ,   30, 
                    HPS,    1, 
                    PCS,    1
                }

                Method (CSS, 0, NotSerialized)
                {
                    Store (One, PMS)
                    Store (One, PCS)
                    Store (One, PMS)
                }

                Method (SPRT, 1, NotSerialized)
                {
                    CSS ()
                    Store (One, PCE)
                    CSS ()
                }

                Method (WPRT, 1, NotSerialized)
                {
                    Store (Zero, PCE)
                    CSS ()
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x03))
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR18)
                    }

                    Return (PR18)
                }
            }

            Device (GBE)
            {
                Name (_ADR, 0x00190000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P1, 0x02)
                Notify (\_SB.PCI0.P0P2, 0x02)
                Notify (\_SB.PCI0.P0P3, 0x02)
                Notify (\_SB.PCI0.P0P4, 0x02)
                Notify (\_SB.PCI0.P0P5, 0x02)
                Notify (\_SB.PCI0.PEX0, 0x02)
                Notify (\_SB.PCI0.PEX1, 0x02)
                Notify (\_SB.PCI0.PEX2, 0x02)
                Notify (\_SB.PCI0.PEX3, 0x02)
                Notify (\_SB.PCI0.PEX4, 0x02)
                Notify (\_SB.PCI0.PEX5, 0x02)
                Notify (\_SB.PCI0.PEX6, 0x02)
                Notify (\_SB.PCI0.PEX7, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L0B, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.BR20, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

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

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_UID, 0xAA)
            Name (_STA, 0x0B)
        }
    }

    OperationRegion (_SB.PCI0.SBRG.PIX0, PCI_Config, 0x60, 0x0C)
    Field (\_SB.PCI0.SBRG.PIX0, ByteAcc, NoLock, Preserve)
    {
        PIRA,   8, 
        PIRB,   8, 
        PIRC,   8, 
        PIRD,   8, 
                Offset (0x08), 
        PIRE,   8, 
        PIRF,   8, 
        PIRG,   8, 
        PIRH,   8
    }

    Scope (_SB)
    {
        Name (BUFA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {15}
        })
        CreateWordField (BUFA, One, IRA0)
        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, One)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRA, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSA)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRA, 0x80, PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRA, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRA)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRB, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSB)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRB, 0x80, PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRB, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRB)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRC, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSC)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRC, 0x80, PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRC, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRC)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRD, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSD)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRD, 0x80, PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRD, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRD)
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x05)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRE, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSE)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRE, 0x80, PIRE)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRE, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRE)
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x06)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRF, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSF)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRF, 0x80, PIRF)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRF, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRF)
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x07)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRG, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSG)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRG, 0x80, PIRG)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRG, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRG)
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x08)
            Method (_STA, 0, NotSerialized)
            {
                And (PIRH, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (PRSH)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PIRH, 0x80, PIRH)
            }

            Method (_CRS, 0, NotSerialized)
            {
                And (PIRH, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0)
                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRH)
            }
        }
    }

    Name (MISC, Buffer (0x07)
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    })
    CreateByteField (MISC, Zero, MIS0)
    CreateByteField (MISC, One, MIS1)
    CreateByteField (MISC, 0x02, MIS2)
    CreateByteField (MISC, 0x03, MIS3)
    CreateByteField (MISC, 0x04, MIS4)
    CreateByteField (MISC, 0x06, MIS6)
    Scope (_PR)
    {
        OperationRegion (SSDT, SystemMemory, 0xAB622C18, 0x03A4)
        Name (NCST, 0x02)
        Name (NPSS, 0x0A)
        Name (HNDL, 0x80000000)
        Name (TNLP, 0x0004)
        Name (CINT, Zero)
        Name (PDCV, 0xFFFFFFFF)
        Name (APSS, Package (0x0A)
        {
            Package (0x06)
            {
                0x095B, 
                0x00000DAC, 
                0x000A, 
                0x000A, 
                0x0013, 
                0x0013
            }, 

            Package (0x06)
            {
                0x095A, 
                0x00000C35, 
                0x000A, 
                0x000A, 
                0x0012, 
                0x0012
            }, 

            Package (0x06)
            {
                0x08D5, 
                0x00000A41, 
                0x000A, 
                0x000A, 
                0x0011, 
                0x0011
            }, 

            Package (0x06)
            {
                0x0850, 
                0x000008CA, 
                0x000A, 
                0x000A, 
                0x0010, 
                0x0010
            }, 

            Package (0x06)
            {
                0x07CB, 
                0x000007D0, 
                0x000A, 
                0x000A, 
                0x000F, 
                0x000F
            }, 

            Package (0x06)
            {
                0x0746, 
                0x00000659, 
                0x000A, 
                0x000A, 
                0x000E, 
                0x000E
            }, 

            Package (0x06)
            {
                0x06C1, 
                0x0000055F, 
                0x000A, 
                0x000A, 
                0x000D, 
                0x000D
            }, 

            Package (0x06)
            {
                0x063C, 
                0x000004E2, 
                0x000A, 
                0x000A, 
                0x000C, 
                0x000C
            }, 

            Package (0x06)
            {
                0x05B7, 
                0x000003E8, 
                0x000A, 
                0x000A, 
                0x000B, 
                0x000B
            }, 

            Package (0x06)
            {
                0x04AD, 
                0x000002EE, 
                0x000A, 
                0x000A, 
                0x0009, 
                0x0009
            }
        })
        Name (PTCI, Package (0x02)
        {
            ResourceTemplate ()
            {
                Register (SystemIO, 
                    0x04,               // Bit Width
                    0x01,               // Bit Offset
                    0x0000000000000410, // Address
                    ,)
            }, 

            ResourceTemplate ()
            {
                Register (SystemIO, 
                    0x04,               // Bit Width
                    0x01,               // Bit Offset
                    0x0000000000000410, // Address
                    ,)
            }
        })
        Name (\PSTE, Zero)
        Name (\TSTE, Zero)
        Name (TSSI, Package (0x01)
        {
            Package (0x05)
            {
                0x64, 
                0x03E8, 
                Zero, 
                Zero, 
                Zero
            }
        })
        Name (TSSM, Package (0x08)
        {
            Package (0x05)
            {
                0x64, 
                0x03E8, 
                Zero, 
                Zero, 
                Zero
            }, 

            Package (0x05)
            {
                0x58, 
                0x036B, 
                Zero, 
                0x1E, 
                Zero
            }, 

            Package (0x05)
            {
                0x4B, 
                0x02EE, 
                Zero, 
                0x1C, 
                Zero
            }, 

            Package (0x05)
            {
                0x3F, 
                0x0271, 
                Zero, 
                0x1A, 
                Zero
            }, 

            Package (0x05)
            {
                0x32, 
                0x01F4, 
                Zero, 
                0x18, 
                Zero
            }, 

            Package (0x05)
            {
                0x26, 
                0x0177, 
                Zero, 
                0x16, 
                Zero
            }, 

            Package (0x05)
            {
                0x19, 
                0xFA, 
                Zero, 
                0x14, 
                Zero
            }, 

            Package (0x05)
            {
                0x0D, 
                0x7D, 
                Zero, 
                0x12, 
                Zero
            }
        })
        Name (C1ST, Package (0x02)
        {
            One, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x00,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000000, // Address
                        ,)
                }, 

                0x01, 
                0x03, 
                0x03E8
            }
        })
        Name (CMST, Package (0x04)
        {
            0x03, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x00,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000000, // Address
                        ,)
                }, 

                0x01, 
                0x03, 
                0x03E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x03,               // Access Size
                        )
                }, 

                0x02, 
                0xCD, 
                0x01F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000020, // Address
                        0x03,               // Access Size
                        )
                }, 

                0x03, 
                0xF5, 
                0x015E
            }
        })
        Name (CIST, Package (0x04)
        {
            0x03, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x00,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000000, // Address
                        ,)
                }, 

                0x01, 
                0x03, 
                0x03E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x08,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000414, // Address
                        ,)
                }, 

                0x02, 
                0xCD, 
                0x01F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x08,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000415, // Address
                        ,)
                }, 

                0x03, 
                0xF5, 
                0x015E
            }
        })
        Method (CST, 0, NotSerialized)
        {
            If (LNotEqual (And (PDCV, 0x0200), 0x0200))
            {
                If (LEqual (NCST, 0x02))
                {
                    Store (One, NCST)
                }
            }

            If (LEqual (NCST, Zero))
            {
                Return (C1ST)
            }

            If (LEqual (NCST, One))
            {
                Return (CIST)
            }

            If (LEqual (NCST, 0x02))
            {
                Return (CMST)
            }

            Return (C1ST)
        }

        Method (PDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS0, TEMP, Local2)
            OSC (Buffer (0x10)
                {
                    /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                    /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2)
        }

        Method (OSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, Zero, STS)
            CreateDWordField (Arg3, 0x04, CAP)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, Buffer (0x10)
            {
                /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (UID0, Zero, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, Index (STS, Zero))
                Return (Arg3)
            }

            And (PDCV, CAP, PDCV)
            If (LEqual (CINT, Zero))
            {
                Store (One, CINT)
                If (LEqual (And (PDCV, 0x09), 0x09))
                {
                    If (LNotEqual (NPSS, Zero))
                    {
                        Load (SSDT, HNDL)
                    }
                }
            }

            Return (Arg3)
        }
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Device (HPET)
            {
                Name (_HID, EisaId ("PNP0103"))
                Name (CRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED00000,         // Address Base
                        0x00000400,         // Address Length
                        )
                })
                OperationRegion (HCNT, SystemMemory, HPTC, 0x04)
                Field (HCNT, DWordAcc, NoLock, Preserve)
                {
                    HPTS,   2, 
                        ,   5, 
                    HPTE,   1
                }

                Method (_STA, 0, NotSerialized)
                {
                    If (HPTE)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    CreateDWordField (CRS, 0x04, HTBS)
                    Multiply (HPTS, 0x1000, Local0)
                    Add (Local0, 0xFED00000, HTBS)
                    Return (CRS)
                }
            }
        }
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Method (_INI, 0, NotSerialized)
            {
            }

            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x0CF7,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0CF8,             // Length
                    ,, , TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0D00,             // Range Minimum
                    0xFFFF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0xF300,             // Length
                    ,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
            })
            CreateDWordField (CRS, 0x5C, MIN5)
            CreateDWordField (CRS, 0x60, MAX5)
            CreateDWordField (CRS, 0x68, LEN5)
            CreateDWordField (CRS, 0x76, MIN6)
            CreateDWordField (CRS, 0x7A, MAX6)
            CreateDWordField (CRS, 0x82, LEN6)
            Method (_CRS, 0, NotSerialized)
            {
                Store (MG1L, Local0)
                If (Local0)
                {
                    Store (MG1B, MIN5)
                    Store (MG1L, LEN5)
                    Add (MIN5, Decrement (Local0), MAX5)
                }

                Store (MG2B, MIN6)
                Store (MG2L, LEN6)
                Store (MG2L, Local0)
                Add (MIN6, Decrement (Local0), MAX6)
                Return (CRS)
            }
        }
    }

    Name (WOTB, Zero)
    Name (WSSB, Zero)
    Name (WAXB, Zero)
    Method (_PTS, 1, NotSerialized)
    {
        Store (Arg0, DBG8)
        If (LAnd (LEqual (Arg0, 0x04), LEqual (OSFL (), 0x02)))
        {
            Sleep (0x0BB8)
        }

        PTS (Arg0)
        Store (Zero, Index (WAKP, Zero))
        Store (Zero, Index (WAKP, One))
        Store (ASSB, WSSB)
        Store (AOTB, WOTB)
        Store (AAXB, WAXB)
        Store (Arg0, ASSB)
        Store (OSFL (), AOTB)
        Store (Zero, AAXB)
        Store (One, \_SB.SLPS)
    }

    Method (_WAK, 1, NotSerialized)
    {
        ShiftLeft (Arg0, 0x04, DBG8)
        WAK (Arg0)
        If (ASSB)
        {
            Store (WSSB, ASSB)
            Store (WOTB, AOTB)
            Store (WAXB, AAXB)
        }

        If (DerefOf (Index (WAKP, Zero)))
        {
            Store (Zero, Index (WAKP, One))
        }
        Else
        {
            Store (Arg0, Index (WAKP, One))
        }

        Return (WAKP)
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Method (_OSC, 4, NotSerialized)
            {
                Name (SUPP, Zero)
                Name (CTRL, Zero)
                CreateDWordField (Arg3, Zero, CDW1)
                CreateDWordField (Arg3, 0x04, CDW2)
                CreateDWordField (Arg3, 0x08, CDW3)
                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40, 
                            /* 0008 */    0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
                        }))
                {
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    If (LNotEqual (And (SUPP, 0x16), 0x16))
                    {
                        And (CTRL, 0x1E, CTRL)
                    }

                    If (LNot (PEHP))
                    {
                        And (CTRL, 0x1E, CTRL)
                    }

                    If (LNot (SHPC))
                    {
                        And (CTRL, 0x1D, CTRL)
                    }

                    If (LNot (PEPM))
                    {
                        And (CTRL, 0x1B, CTRL)
                    }

                    If (LNot (PEER))
                    {
                        And (CTRL, 0x15, CTRL)
                    }

                    If (LNot (PECS))
                    {
                        And (CTRL, 0x0F, CTRL)
                    }

                    If (LNotEqual (Arg1, One))
                    {
                        Or (CDW1, 0x08, CDW1)
                    }

                    If (LNotEqual (CDW3, CTRL))
                    {
                        Or (CDW1, 0x10, CDW1)
                    }

                    Store (CTRL, CDW3)
                    Return (Arg3)
                }
                Else
                {
                    Or (CDW1, 0x04, CDW1)
                    Return (Arg3)
                }
            }
        }
    }

    Device (OMSC)
    {
        Name (_HID, EisaId ("PNP0C02"))
        Name (_UID, 0x0E11)
    }

    Device (_SB.RMEM)
    {
        Name (_HID, EisaId ("PNP0C01"))
        Name (_UID, One)
    }

    OperationRegion (PRT0, SystemIO, 0x80, 0x04)
    Field (PRT0, DWordAcc, Lock, Preserve)
    {
        P80H,   32
    }

    Method (P8XH, 2, Serialized)
    {
        If (LEqual (Arg0, Zero))
        {
            Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)
        }

        If (LEqual (Arg0, One))
        {
            Store (Or (And (P80D, 0xFFFF00FF), ShiftLeft (Arg1, 0x08)
                ), P80D)
        }

        If (LEqual (Arg0, 0x02))
        {
            Store (Or (And (P80D, 0xFF00FFFF), ShiftLeft (Arg1, 0x10)
                ), P80D)
        }

        If (LEqual (Arg0, 0x03))
        {
            Store (Or (And (P80D, 0x00FFFFFF), ShiftLeft (Arg1, 0x18)
                ), P80D)
        }

        Store (P80D, P80H)
    }

    OperationRegion (SPRT, SystemIO, 0xB2, 0x02)
    Field (SPRT, ByteAcc, Lock, Preserve)
    {
        SSMP,   8
    }

    Method (GETB, 3, Serialized)
    {
        Multiply (Arg0, 0x08, Local0)
        Multiply (Arg1, 0x08, Local1)
        CreateField (Arg2, Local0, Local1, TBF3)
        Return (TBF3)
    }

    Method (PNOT, 0, Serialized)
    {
    }

    Method (BRTN, 1, Serialized)
    {
        If (LEqual (And (DID1, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD01, Arg0)
        }

        If (LEqual (And (DID2, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD02, Arg0)
        }

        If (LEqual (And (DID3, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD03, Arg0)
        }

        If (LEqual (And (DID4, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD04, Arg0)
        }

        If (LEqual (And (DID5, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD05, Arg0)
        }

        If (LEqual (And (DID6, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD06, Arg0)
        }

        If (LEqual (And (DID7, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD07, Arg0)
        }

        If (LEqual (And (DID8, 0x0F00), 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD08, Arg0)
        }
    }

    Scope (_SB.PCI0)
    {
        Device (GFX0)
        {
            Scope (^^PCI0)
            {
                OperationRegion (MCHP, PCI_Config, 0x40, 0xC0)
                Field (MCHP, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x60), 
                    TASM,   10, 
                            Offset (0x62)
                }
            }

            Scope (\_SB.PCI0.GFX0)
            {
                OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)
                Field (IGDP, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x12), 
                        ,   1, 
                    GIVD,   1, 
                        ,   2, 
                    GUMA,   3, 
                            Offset (0x14), 
                        ,   4, 
                    GMFN,   1, 
                            Offset (0x18), 
                            Offset (0xA4), 
                    ASLE,   8, 
                            Offset (0xA8), 
                    GSSE,   1, 
                    GSSB,   14, 
                    GSES,   1, 
                            Offset (0xB0), 
                        ,   12, 
                    CDVL,   1, 
                            Offset (0xB2), 
                            Offset (0xB5), 
                    LBPC,   8, 
                            Offset (0xBC), 
                    ASLS,   32
                }
            }

            Name (M512, 0x04)
            Name (M1GB, 0x08)
            OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)
            Field (IGDM, AnyAcc, NoLock, Preserve)
            {
                SIGN,   128, 
                SIZE,   32, 
                OVER,   32, 
                SVER,   256, 
                VVER,   128, 
                GVER,   128, 
                MBOX,   32, 
                DMOD,   32, 
                        Offset (0xE0), 
                KSV0,   32, 
                KSV1,   8, 
                CSTE,   16, 
                NSTE,   16, 
                        Offset (0xF0), 
                        Offset (0x100), 
                DRDY,   32, 
                CSTS,   32, 
                CEVT,   32, 
                        Offset (0x120), 
                DIDL,   32, 
                DDL2,   32, 
                DDL3,   32, 
                DDL4,   32, 
                DDL5,   32, 
                DDL6,   32, 
                DDL7,   32, 
                DDL8,   32, 
                CPDL,   32, 
                CPL2,   32, 
                CPL3,   32, 
                CPL4,   32, 
                CPL5,   32, 
                CPL6,   32, 
                CPL7,   32, 
                CPL8,   32, 
                CADL,   32, 
                CAL2,   32, 
                CAL3,   32, 
                CAL4,   32, 
                CAL5,   32, 
                CAL6,   32, 
                CAL7,   32, 
                CAL8,   32, 
                NADL,   32, 
                NDL2,   32, 
                NDL3,   32, 
                NDL4,   32, 
                NDL5,   32, 
                NDL6,   32, 
                NDL7,   32, 
                NDL8,   32, 
                ASLP,   32, 
                TIDX,   32, 
                CHPD,   32, 
                CLID,   32, 
                CDCK,   32, 
                SXSW,   32, 
                EVTS,   32, 
                CNOT,   32, 
                NRDY,   32, 
                        Offset (0x200), 
                SCIE,   1, 
                GEFC,   4, 
                GXFC,   3, 
                GESF,   8, 
                        Offset (0x204), 
                PARM,   32, 
                DSLP,   32, 
                        Offset (0x300), 
                ARDY,   32, 
                ASLC,   32, 
                TCHE,   32, 
                ALSI,   32, 
                BCLP,   32, 
                PFIT,   32, 
                CBLV,   32, 
                BCLM,   320, 
                CPFM,   32, 
                EPFM,   32, 
                PLUT,   592, 
                PFMB,   32, 
                CCDV,   32, 
                PCFT,   32, 
                        Offset (0x400), 
                GVD1,   49152, 
                PHED,   32, 
                BDDC,   2048
            }

            OperationRegion (TCOI, SystemIO, TOBS, 0x08)
            Field (TCOI, WordAcc, NoLock, Preserve)
            {
                        Offset (0x04), 
                    ,   9, 
                SCIS,   1, 
                        Offset (0x06)
            }

            Name (DBTB, Package (0x15)
            {
                Zero, 
                0x07, 
                0x38, 
                0x01C0, 
                0x0E00, 
                0x3F, 
                0x01C7, 
                0x0E07, 
                0x01F8, 
                0x0E38, 
                0x0FC0, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                0x7000, 
                0x7007, 
                0x7038, 
                0x71C0, 
                0x7E00
            })
            Name (CDCT, Package (0x05)
            {
                Package (0x02)
                {
                    0xE4, 
                    0x0140
                }, 

                Package (0x02)
                {
                    0xDE, 
                    0x014D
                }, 

                Package (0x02)
                {
                    0xDE, 
                    0x014D
                }, 

                Package (0x02)
                {
                    Zero, 
                    Zero
                }, 

                Package (0x02)
                {
                    0xDE, 
                    0x014D
                }
            })
            Name (SUCC, One)
            Name (NVLD, 0x02)
            Name (CRIT, 0x04)
            Name (NCRT, 0x06)
            Method (GSCI, 0, NotSerialized)
            {
                If (LEqual (GEFC, 0x04))
                {
                    Store (GBDA (), GXFC)
                }

                If (LEqual (GEFC, 0x06))
                {
                    Store (SBCB (), GXFC)
                }

                Store (Zero, GEFC)
                Store (One, SCIS)
                Store (Zero, GSSE)
                Store (Zero, SCIE)
                Return (Zero)
            }

            Method (GBDA, 0, Serialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x0679, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (0x0240, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x04))
                {
                    And (PARM, 0xEFFF0000, PARM)
                    And (PARM, ShiftLeft (DerefOf (Index (DBTB, IBTT)), 0x10), 
                        PARM)
                    Or (IBTT, PARM, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (IPSC, PARM)
                    Or (PARM, ShiftLeft (IPAT, 0x08), PARM)
                    Add (PARM, 0x0100, PARM)
                    Or (PARM, ShiftLeft (LIDS, 0x10), PARM)
                    Add (PARM, 0x00010000, PARM)
                    Or (PARM, ShiftLeft (IBIA, 0x14), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x06))
                {
                    Store (ITVF, PARM)
                    Or (PARM, ShiftLeft (ITVM, 0x04), PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x07))
                {
                    Store (GIVD, PARM)
                    XOr (PARM, One, PARM)
                    Or (PARM, ShiftLeft (GMFN, One), PARM)
                    Or (PARM, 0x1800, PARM)
                    Or (PARM, ShiftLeft (IDMS, 0x11), PARM)
                    Or (ShiftLeft (DerefOf (Index (DerefOf (Index (CDCT, HVCO)), CDVL
                        )), 0x15), PARM, PARM)
                    Store (One, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0A))
                {
                    Store (Zero, PARM)
                    If (ISSC)
                    {
                        Or (PARM, 0x03, PARM)
                    }

                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0B))
                {
                    Store (KSV0, PARM)
                    Store (KSV1, GESF)
                    Return (SUCC)
                }

                Store (Zero, GESF)
                Return (CRIT)
            }

            Method (SBCB, 0, Serialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (Zero, PARM)
                    Store (0x000F87FD, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, One))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x03))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x04))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x06))
                {
                    Store (And (PARM, 0x0F), ITVF)
                    Store (ShiftRight (And (PARM, 0xF0), 0x04), ITVM)
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x07))
                {
                    If (LEqual (PARM, Zero))
                    {
                        Store (CLID, Local0)
                        If (And (0x80000000, Local0))
                        {
                            And (CLID, 0x0F, CLID)
                            GLID (CLID)
                        }
                    }

                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x08))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x09))
                {
                    And (PARM, 0xFF, IBTT)
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0A))
                {
                    And (PARM, 0xFF, IPSC)
                    If (And (ShiftRight (PARM, 0x08), 0xFF))
                    {
                        And (ShiftRight (PARM, 0x08), 0xFF, IPAT)
                        Decrement (IPAT)
                    }

                    And (ShiftRight (PARM, 0x14), 0x07, IBIA)
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x0B))
                {
                    And (ShiftRight (PARM, One), One, IF1E)
                    If (And (PARM, 0x0001E000))
                    {
                        And (ShiftRight (PARM, 0x0D), 0x0F, IDMS)
                    }
                    Else
                    {
                        And (ShiftRight (PARM, 0x11), 0x0F, IDMS)
                    }

                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x10))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x11))
                {
                    Store (ShiftLeft (LIDS, 0x08), PARM)
                    Add (PARM, 0x0100, PARM)
                    Store (Zero, GESF)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x12))
                {
                    If (And (PARM, One))
                    {
                        If (LEqual (ShiftRight (PARM, One), One))
                        {
                            Store (One, ISSC)
                        }
                        Else
                        {
                            Store (Zero, GESF)
                            Return (CRIT)
                        }
                    }
                    Else
                    {
                        Store (Zero, ISSC)
                    }

                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x13))
                {
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                If (LEqual (GESF, 0x14))
                {
                    And (PARM, 0x0F, PAVP)
                    Store (Zero, GESF)
                    Store (Zero, PARM)
                    Return (SUCC)
                }

                Store (Zero, GESF)
                Return (SUCC)
            }

            Method (PDRD, 0, NotSerialized)
            {
                If (LNot (DRDY))
                {
                    Sleep (ASLP)
                }

                Return (LNot (DRDY))
            }

            Method (PSTS, 0, NotSerialized)
            {
                If (LGreater (CSTS, 0x02))
                {
                    Sleep (ASLP)
                }

                Return (LEqual (CSTS, 0x03))
            }

            Method (OSYS, 0, NotSerialized)
            {
                Store (0x07D0, Local1)
                If (CondRefOf (_OSI, Local0))
                {
                    If (_OSI ("Linux"))
                    {
                        Store (0x03E8, Local1)
                    }

                    If (_OSI ("Windows 2001"))
                    {
                        Store (0x07D1, Local1)
                    }

                    If (_OSI ("Windows 2001 SP1"))
                    {
                        Store (0x07D1, Local1)
                    }

                    If (_OSI ("Windows 2001 SP2"))
                    {
                        Store (0x07D2, Local1)
                    }

                    If (_OSI ("Windows 2006"))
                    {
                        Store (0x07D6, Local1)
                    }

                    If (_OSI ("Windows 2009"))
                    {
                        Store (0x07D9, Local1)
                    }
                }

                Return (Local1)
            }

            Method (GNOT, 2, NotSerialized)
            {
                If (PDRD ())
                {
                    Return (One)
                }

                Store (Arg0, CEVT)
                Store (0x03, CSTS)
                If (LAnd (LEqual (CHPD, Zero), LEqual (Arg1, Zero)))
                {
                    If (LOr (LGreater (OSYS (), 0x07D0), LLess (OSYS (), 0x07D6)))
                    {
                        Notify (PCI0, Arg1)
                    }
                    Else
                    {
                        Notify (GFX0, Arg1)
                    }
                }

                If (CondRefOf (HNOT))
                {
                    HNOT (Arg0)
                }
                Else
                {
                    Notify (GFX0, 0x80)
                }

                Return (Zero)
            }

            Method (GHDS, 1, NotSerialized)
            {
                Store (Arg0, TIDX)
                Return (GNOT (One, Zero))
            }

            Method (GLID, 1, NotSerialized)
            {
                Store (Arg0, CLID)
                Return (GNOT (0x02, Zero))
            }

            Method (GDCK, 1, NotSerialized)
            {
                Store (Arg0, CDCK)
                Return (GNOT (0x04, Zero))
            }

            Method (PARD, 0, NotSerialized)
            {
                If (LNot (ARDY))
                {
                    Sleep (ASLP)
                }

                Return (LNot (ARDY))
            }

            Method (AINT, 2, NotSerialized)
            {
                If (LNot (And (TCHE, ShiftLeft (One, Arg0))))
                {
                    Return (One)
                }

                If (PARD ())
                {
                    Return (One)
                }

                If (LEqual (Arg0, 0x02))
                {
                    If (CPFM)
                    {
                        And (CPFM, 0x0F, Local0)
                        And (EPFM, 0x0F, Local1)
                        If (LEqual (Local0, One))
                        {
                            If (And (Local1, 0x06))
                            {
                                Store (0x06, PFIT)
                            }
                            Else
                            {
                                If (And (Local1, 0x08))
                                {
                                    Store (0x08, PFIT)
                                }
                                Else
                                {
                                    Store (One, PFIT)
                                }
                            }
                        }

                        If (LEqual (Local0, 0x06))
                        {
                            If (And (Local1, 0x08))
                            {
                                Store (0x08, PFIT)
                            }
                            Else
                            {
                                If (And (Local1, One))
                                {
                                    Store (One, PFIT)
                                }
                                Else
                                {
                                    Store (0x06, PFIT)
                                }
                            }
                        }

                        If (LEqual (Local0, 0x08))
                        {
                            If (And (Local1, One))
                            {
                                Store (One, PFIT)
                            }
                            Else
                            {
                                If (And (Local1, 0x06))
                                {
                                    Store (0x06, PFIT)
                                }
                                Else
                                {
                                    Store (0x08, PFIT)
                                }
                            }
                        }
                    }
                    Else
                    {
                        XOr (PFIT, 0x07, PFIT)
                    }

                    Or (PFIT, 0x80000000, PFIT)
                    Store (0x04, ASLC)
                }
                Else
                {
                    If (LEqual (Arg0, One))
                    {
                        Store (Divide (Multiply (Arg1, 0xFF), 0x64, ), BCLP)
                        Or (BCLP, 0x80000000, BCLP)
                        Store (0x02, ASLC)
                    }
                    Else
                    {
                        If (LEqual (Arg0, Zero))
                        {
                            Store (Arg1, ALSI)
                            Store (One, ASLC)
                        }
                        Else
                        {
                            Return (One)
                        }
                    }
                }

                Store (One, ASLE)
                Return (Zero)
            }

            Method (SCIP, 0, NotSerialized)
            {
                If (LNotEqual (OVER, Zero))
                {
                    Return (LNot (GSMI))
                }

                Return (Zero)
            }

            Method (OPTS, 1, NotSerialized)
            {
            }

            Method (OWAK, 1, NotSerialized)
            {
                Store (One, GSES)
            }
        }
    }

    Scope (_GPE)
    {
        Method (_L06, 0, NotSerialized)
        {
            \_SB.PCI0.GFX0.GSCI ()
        }
    }

    Scope (_SB.PCI0.GFX0)
    {
        Name (_ADR, 0x00020000)
        Method (_DOS, 1, NotSerialized)
        {
            Store (And (Arg0, 0x07), DSEN)
        }

        Method (_DOD, 0, NotSerialized)
        {
            If (CondRefOf (IDAB))
            {
                IDAB ()
            }
            Else
            {
                Store (Zero, NDID)
                If (LNotEqual (DIDL, Zero))
                {
                    Store (SDDL (DID1), DID1)
                }

                If (LNotEqual (DDL2, Zero))
                {
                    Store (SDDL (DID2), DID2)
                }

                If (LNotEqual (DDL3, Zero))
                {
                    Store (SDDL (DID3), DID3)
                }

                If (LNotEqual (DDL4, Zero))
                {
                    Store (SDDL (DID4), DID4)
                }

                If (LNotEqual (DDL5, Zero))
                {
                    Store (SDDL (DID5), DID5)
                }
            }

            If (LEqual (NDID, One))
            {
                Name (TMP1, Package (0x01)
                {
                    0xFFFFFFFF
                })
                Store (DID1, Index (TMP1, Zero))
                Return (TMP1)
            }

            If (LEqual (NDID, 0x02))
            {
                Name (TMP2, Package (0x02)
                {
                    0xFFFFFFFF, 
                    0xFFFFFFFF
                })
                Store (DID1, Index (TMP2, Zero))
                Store (DID2, Index (TMP2, One))
                Return (TMP2)
            }

            If (LEqual (NDID, 0x03))
            {
                Name (TMP3, Package (0x03)
                {
                    0xFFFFFFFF, 
                    0xFFFFFFFF, 
                    0xFFFFFFFF
                })
                Store (DID1, Index (TMP3, Zero))
                Store (DID2, Index (TMP3, One))
                Store (DID3, Index (TMP3, 0x02))
                Return (TMP3)
            }

            If (LEqual (NDID, 0x04))
            {
                Name (TMP4, Package (0x04)
                {
                    0xFFFFFFFF, 
                    0xFFFFFFFF, 
                    0xFFFFFFFF, 
                    0xFFFFFFFF
                })
                Store (Or (0x00010000, DID1), Index (TMP4, Zero))
                Store (Or (0x00010000, DID2), Index (TMP4, One))
                Store (Or (0x00010000, DID3), Index (TMP4, 0x02))
                Store (Or (0x00010000, DID4), Index (TMP4, 0x03))
                Return (TMP4)
            }

            If (CondRefOf (NNAB))
            {
                Return (NNAB)
            }
            Else
            {
                If (LGreater (NDID, 0x04))
                {
                    Name (TMP5, Package (0x05)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    Store (Or (0x00010000, DID1), Index (TMP5, Zero))
                    Store (Or (0x00010000, DID2), Index (TMP5, One))
                    Store (Or (0x00010000, DID3), Index (TMP5, 0x02))
                    Store (Or (0x00010000, DID4), Index (TMP5, 0x03))
                    Store (Or (0x00010000, DID5), Index (TMP5, 0x04))
                    Return (TMP5)
                }
            }

            Return (Package (0x01)
            {
                0x0400
            })
        }

        Device (DD01)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID1, Zero))
                {
                    Return (One)
                }
                Else
                {
                    Return (And (0xFFFF, DID1))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                Return (CDDS (DID1))
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID1))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD02)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID2, Zero))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (And (0xFFFF, DID2))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                Return (CDDS (DID2))
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID2))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }

            Method (_BCL, 0, NotSerialized)
            {
                Return (BCLS)
            }

            Method (_BCM, 1, NotSerialized)
            {
                If (LAnd (LGreaterEqual (Arg0, Zero), LLessEqual (Arg0, 0x64)))
                {
                    AINT (One, Arg0)
                    Store (Arg0, BRTL)
                }
            }

            Method (_BQC, 0, NotSerialized)
            {
                Return (BRTL)
            }
        }

        Device (DD03)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID3, Zero))
                {
                    Return (0x03)
                }
                Else
                {
                    Return (And (0xFFFF, DID3))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID3, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID3))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID3))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD04)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID4, Zero))
                {
                    Return (0x04)
                }
                Else
                {
                    Return (And (0xFFFF, DID4))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID4, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID4))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID4))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD05)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID5, Zero))
                {
                    Return (0x05)
                }
                Else
                {
                    Return (And (0xFFFF, DID5))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID5, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID5))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID5))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD06)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID6, Zero))
                {
                    Return (0x06)
                }
                Else
                {
                    Return (And (0xFFFF, DID6))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID6, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID6))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID6))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD07)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID7, Zero))
                {
                    Return (0x07)
                }
                Else
                {
                    Return (And (0xFFFF, DID7))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID7, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID7))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID7))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Device (DD08)
        {
            Method (_ADR, 0, Serialized)
            {
                If (LEqual (DID8, Zero))
                {
                    Return (0x08)
                }
                Else
                {
                    Return (And (0xFFFF, DID8))
                }
            }

            Method (_DCS, 0, NotSerialized)
            {
                If (LEqual (DID8, Zero))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (CDDS (DID8))
                }
            }

            Method (_DGS, 0, NotSerialized)
            {
                Return (NDDS (DID8))
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
                {
                    Store (NSTE, CSTE)
                }
            }
        }

        Method (SDDL, 1, NotSerialized)
        {
            Increment (NDID)
            Store (And (Arg0, 0x0F0F), Local0)
            Or (0x80000000, Local0, Local1)
            If (LEqual (DIDL, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL2, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL3, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL4, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL5, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL6, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL7, Local0))
            {
                Return (Local1)
            }

            If (LEqual (DDL8, Local0))
            {
                Return (Local1)
            }

            Return (Zero)
        }

        Method (CDDS, 1, NotSerialized)
        {
            Store (And (Arg0, 0x0F0F), Local0)
            If (LEqual (Zero, Local0))
            {
                Return (0x1D)
            }

            If (LEqual (CADL, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL2, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL3, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL4, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL5, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL6, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL7, Local0))
            {
                Return (0x1F)
            }

            If (LEqual (CAL8, Local0))
            {
                Return (0x1F)
            }

            Return (0x1D)
        }

        Method (NDDS, 1, NotSerialized)
        {
            Store (And (Arg0, 0x0F0F), Local0)
            If (LEqual (Zero, Local0))
            {
                Return (Zero)
            }

            If (LEqual (NADL, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL2, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL3, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL4, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL5, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL6, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL7, Local0))
            {
                Return (One)
            }

            If (LEqual (NDL8, Local0))
            {
                Return (One)
            }

            Return (Zero)
        }
    }

    Device (_SB.PCI0.SBRG.TPM)
    {
        Name (_HID, EisaId ("PNP0C31"))
        Name (_STR, Unicode ("TPM 1.2 Device"))
        Name (_UID, One)
        Name (_CRS, ResourceTemplate ()
        {
            Memory32Fixed (ReadOnly,
                0xFED40000,         // Address Base
                0x00005000,         // Address Length
                )
        })
        OperationRegion (TMMB, SystemMemory, 0xFED40000, 0x1000)
        Field (TMMB, ByteAcc, Lock, Preserve)
        {
            ACCS,   8, 
                    Offset (0x18), 
            TSTA,   8, 
            TBCA,   8, 
                    Offset (0xF00), 
            TVID,   16, 
            TDID,   16
        }

        Method (_STA, 0, NotSerialized)
        {
            If (LEqual (VIDT, 0x8086))
            {
                Return (Zero)
            }
            Else
            {
                If (TPMF)
                {
                    Return (0x0F)
                }

                Return (Zero)
            }
        }
    }

    Scope (_SB.PCI0.SBRG.TPM)
    {
        OperationRegion (CMSR, SystemIO, 0x72, 0x02)
        Field (CMSR, ByteAcc, NoLock, Preserve)
        {
            INQ,    8, 
            DAQ,    8
        }

        IndexField (INQ, DAQ, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x50), 
            RQST,   4, 
            RCNT,   4, 
            ERRS,   16, 
            MOR,    1
        }

        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */    0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, 
                        /* 0008 */    0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
                    }))
            {
                Name (_T_0, Zero)
                Store (ToInteger (Arg2), _T_0)
                If (LEqual (_T_0, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x7F
                    })
                }
                Else
                {
                    If (LEqual (_T_0, One))
                    {
                        Return ("1.0")
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x02))
                        {
                            Store (ToInteger (DerefOf (Index (Arg3, Zero))), RQST)
                            Return (Zero)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x03))
                            {
                                Name (PPI1, Package (0x02)
                                {
                                    Zero, 
                                    Zero
                                })
                                Store (RQST, Index (PPI1, One))
                                Return (PPI1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x04))
                                {
                                    Return (One)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x05))
                                    {
                                        Name (PPI2, Package (0x03)
                                        {
                                            Zero, 
                                            Zero, 
                                            Zero
                                        })
                                        Store (RCNT, Index (PPI2, One))
                                        If (LEqual (ERRS, 0xFFF0))
                                        {
                                            Store (0xFFFFFFF0, Index (PPI2, 0x02))
                                        }
                                        Else
                                        {
                                            If (LEqual (ERRS, 0xFFF1))
                                            {
                                                Store (0xFFFFFFF1, Index (PPI2, 0x02))
                                            }
                                            Else
                                            {
                                                Store (ERRS, Index (PPI2, 0x02))
                                            }
                                        }

                                        Return (PPI2)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x06))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            Else
            {
                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0xED, 0x54, 0x60, 0x37, 0x13, 0xCC, 0x75, 0x46, 
                            /* 0008 */    0x90, 0x1C, 0x47, 0x56, 0xD7, 0xF2, 0xD4, 0x5D
                        }))
                {
                    Name (_T_1, Zero)
                    Store (ToInteger (Arg2), _T_1)
                    If (LEqual (_T_1, Zero))
                    {
                        Return (Buffer (One)
                        {
                            0x03
                        })
                    }
                    Else
                    {
                        If (LEqual (_T_1, One))
                        {
                            Store (ToInteger (DerefOf (Index (Arg3, Zero))), MOR)
                            Return (Zero)
                        }
                        Else
                        {
                        }
                    }
                }
            }

            Return (Buffer (One)
            {
                0x00
            })
        }
    }

    Scope (_SB.PCI0)
    {
        OperationRegion (ITPD, PCI_Config, 0xE8, 0x04)
        Field (ITPD, DWordAcc, NoLock, Preserve)
        {
                ,   15, 
            TPDI,   1
        }

        OperationRegion (TVID, SystemMemory, 0xFED40F00, 0x02)
        Field (TVID, WordAcc, NoLock, Preserve)
        {
            VIDT,   16
        }
    }

    Device (_SB.PCI0.ITPM)
    {
        Name (_HID, "INTC0102")
        Name (_CID, EisaId ("PNP0C31"))
        Name (_STR, Unicode ("TPM 1.2 Device"))
        Name (_CRS, ResourceTemplate ()
        {
            Memory32Fixed (ReadOnly,
                0xFED40000,         // Address Base
                0x00005000,         // Address Length
                )
        })
        OperationRegion (CMSR, SystemIO, 0x72, 0x02)
        Field (CMSR, ByteAcc, NoLock, Preserve)
        {
            INQ,    8, 
            DAQ,    8
        }

        IndexField (INQ, DAQ, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x50), 
            RQST,   4, 
            RCNT,   4, 
            ERRS,   16, 
            MOR,    1
        }

        OperationRegion (TPMR, SystemMemory, 0xFED40000, 0x5000)
        Field (TPMR, AnyAcc, NoLock, Preserve)
        {
            ACC0,   8
        }

        Method (_STA, 0, NotSerialized)
        {
            If (LNotEqual (ACC0, 0xFF))
            {
                If (LEqual (VIDT, 0x8086))
                {
                    If (TPMF)
                    {
                        Return (0x0F)
                    }

                    Return (Zero)
                }
            }

            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */    0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, 
                        /* 0008 */    0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
                    }))
            {
                Name (_T_0, Zero)
                Store (ToInteger (Arg2), _T_0)
                If (LEqual (_T_0, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x7F
                    })
                }
                Else
                {
                    If (LEqual (_T_0, One))
                    {
                        Return ("1.0")
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x02))
                        {
                            Store (ToInteger (DerefOf (Index (Arg3, Zero))), RQST)
                            Return (Zero)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x03))
                            {
                                Name (PPI1, Package (0x02)
                                {
                                    Zero, 
                                    Zero
                                })
                                Store (RQST, Index (PPI1, One))
                                Return (PPI1)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x04))
                                {
                                    Return (One)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x05))
                                    {
                                        Name (PPI2, Package (0x03)
                                        {
                                            Zero, 
                                            Zero, 
                                            Zero
                                        })
                                        Store (RCNT, Index (PPI2, One))
                                        If (LEqual (ERRS, 0xFFF0))
                                        {
                                            Store (0xFFFFFFF0, Index (PPI2, 0x02))
                                        }
                                        Else
                                        {
                                            If (LEqual (ERRS, 0xFFF1))
                                            {
                                                Store (0xFFFFFFF1, Index (PPI2, 0x02))
                                            }
                                            Else
                                            {
                                                Store (ERRS, Index (PPI2, 0x02))
                                            }
                                        }

                                        Return (PPI2)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x06))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            Else
            {
                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0xED, 0x54, 0x60, 0x37, 0x13, 0xCC, 0x75, 0x46, 
                            /* 0008 */    0x90, 0x1C, 0x47, 0x56, 0xD7, 0xF2, 0xD4, 0x5D
                        }))
                {
                    Name (_T_1, Zero)
                    Store (ToInteger (Arg2), _T_1)
                    If (LEqual (_T_1, Zero))
                    {
                        Return (Buffer (One)
                        {
                            0x03
                        })
                    }
                    Else
                    {
                        If (LEqual (_T_1, One))
                        {
                            Store (ToInteger (DerefOf (Index (Arg3, Zero))), MOR)
                            Return (Zero)
                        }
                        Else
                        {
                        }
                    }
                }
            }

            Return (Buffer (One)
            {
                0x00
            })
        }
    }

    OperationRegion (RCRB, SystemMemory, SRCB, SRCL)
    Field (RCRB, ByteAcc, NoLock, Preserve)
    {
                Offset (0x3418), 
                Offset (0x341A), 
        PE0E,   1, 
        PE1E,   1, 
        PE2E,   1, 
        PE3E,   1, 
        PE4E,   1, 
        PE5E,   1, 
        PE6E,   1, 
        PE7E,   1
    }

    Scope (_GPE)
    {
        Method (_L01, 0, NotSerialized)
        {
            Add (DBG8, One, DBG8)
            If (LAnd (LEqual (PE0E, Zero), \_SB.PCI0.PEX0.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX0.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX0.PDCX)
                    Store (One, \_SB.PCI0.PEX0.HPST)
                    Notify (\_SB.PCI0.PEX0, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX0.HPST)
                }
            }

            If (LAnd (LEqual (PE1E, Zero), \_SB.PCI0.PEX1.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX1.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX1.PDCX)
                    Store (One, \_SB.PCI0.PEX1.HPST)
                    Notify (\_SB.PCI0.PEX1, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX1.HPST)
                }
            }

            If (LAnd (LEqual (PE2E, Zero), \_SB.PCI0.PEX2.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX2.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX2.PDCX)
                    Store (One, \_SB.PCI0.PEX2.HPST)
                    Notify (\_SB.PCI0.PEX2, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX2.HPST)
                }
            }

            If (LAnd (LEqual (PE3E, Zero), \_SB.PCI0.PEX3.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX3.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX3.PDCX)
                    Store (One, \_SB.PCI0.PEX3.HPST)
                    Notify (\_SB.PCI0.PEX3, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX3.HPST)
                }
            }

            If (LAnd (LEqual (PE4E, Zero), \_SB.PCI0.PEX4.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX4.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX4.PDCX)
                    Store (One, \_SB.PCI0.PEX4.HPST)
                    Notify (\_SB.PCI0.PEX4, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX4.HPST)
                }
            }

            If (LAnd (LEqual (PE5E, Zero), \_SB.PCI0.PEX5.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX5.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX5.PDCX)
                    Store (One, \_SB.PCI0.PEX5.HPST)
                    Notify (\_SB.PCI0.PEX5, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX5.HPST)
                }
            }

            If (LAnd (LEqual (PE6E, Zero), \_SB.PCI0.PEX6.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX6.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX6.PDCX)
                    Store (One, \_SB.PCI0.PEX6.HPST)
                    Notify (\_SB.PCI0.PEX6, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX6.HPST)
                }
            }

            If (LAnd (LEqual (PE7E, Zero), \_SB.PCI0.PEX7.HPST))
            {
                Sleep (0x64)
                If (\_SB.PCI0.PEX7.PDCX)
                {
                    Store (One, \_SB.PCI0.PEX7.PDCX)
                    Store (One, \_SB.PCI0.PEX7.HPST)
                    Notify (\_SB.PCI0.PEX7, Zero)
                }
                Else
                {
                    Store (One, \_SB.PCI0.PEX7.HPST)
                }
            }
        }
    }

    Scope (_SB.PCI0.PEX0)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, WriteAsZeros)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P0HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX1)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P1HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX2)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P2HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX3)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P3HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX4)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P4HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX5)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P5HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX6)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P6HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.PEX7)
    {
        Name (_HPP, Package (0x04)
        {
            0x08, 
            0x40, 
            One, 
            Zero
        })
        OperationRegion (PXRG, PCI_Config, Zero, 0x0100)
        Field (PXRG, AnyAcc, NoLock, Preserve)
        {
                    Offset (0x5A), 
                ,   3, 
            PDCX,   1, 
                    Offset (0xD8), 
                ,   30, 
            HPEN,   1, 
            PCEN,   1, 
                ,   30, 
            HPST,   1, 
            PCST,   1
        }

        Device (PXSX)
        {
            Name (_ADR, Zero)
            Method (_RMV, 0, NotSerialized)
            {
                Store (Zero, Local0)
                If (LEqual (P7HP, One))
                {
                    Store (One, Local0)
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Method (PEWK, 0, NotSerialized)
        {
            If (LEqual (PE4E, Zero))
            {
                If (^PEX4.PDCX)
                {
                    Store (One, ^PEX4.PDCX)
                    Store (One, ^PEX4.HPST)
                }
                Else
                {
                    Store (One, ^PEX4.HPST)
                }

                Notify (PEX4, Zero)
            }
        }
    }

    Method (NEVT, 0, NotSerialized)
    {
        Store (ECG1 (), Local0)
        If (LEqual (GPUF, 0x03))
        {
            If (And (Local0, 0x0800))
            {
                If (\_SB.PCI0.P0P1.PEGP.PO52)
                {
                    Store (0x10, SGTF)
                    WMIA (0x0800)
                }
                Else
                {
                    SX10 ()
                    SX30 (0x20)
                    SX11 ()
                    Store (SX41 (), Local1)
                    SX12 ()
                    If (LAnd (LNotEqual (Local1, 0xE01B), LNotEqual (Local1, 0xE09B)))
                    {
                        WMIA (0x0800)
                    }
                    Else
                    {
                        If (LEqual (Local1, 0xE01B))
                        {
                            If (LNotEqual (SGTF, 0x04))
                            {
                                Store (One, SGTF)
                                Notify (\_SB.PCI0.P0P1.PEGP, 0x80)
                            }
                            Else
                            {
                                WMIA (0x0800)
                                Notify (\_SB.PCI0.P0P1.PEGP, 0x80)
                            }
                        }
                        Else
                        {
                            If (LEqual (Local1, 0xE09B))
                            {
                                WMIA (0x0800)
                            }
                        }
                    }
                }
            }
        }

        If (And (Local0, One))
        {
            Notify (\_SB.PWRB, 0x80)
        }

        If (And (Local0, 0x04))
        {
            LIDE ()
        }

        If (And (Local0, 0x08))
        {
            PWRE ()
        }

        If (And (Local0, 0x80))
        {
            SMIE ()
        }

        If (LNotEqual (GPUF, 0x03))
        {
            If (And (Local0, 0x0800))
            {
                WMIA (0x0800)
            }
        }
    }

    Name (WAKE, Zero)
    Method (NWAK, 0, NotSerialized)
    {
        Store (One, WAKE)
        Store (ECG7 (), Local0)
        Store (Zero, Local1)
        If (LEqual (Local0, Zero))
        {
            Store (One, Local1)
        }

        If (And (Local0, One))
        {
            Store (One, Local1)
        }

        If (And (Local0, 0x02))
        {
            LIDE ()
        }

        If (And (Local0, 0x20)) {}
        If (Local1)
        {
            Notify (\_SB.PWRB, 0x02)
        }

        Store (Zero, WAKE)
    }

    Mutex (GFXM, 0x01)
    Method (ILID, 0, NotSerialized)
    {
        Acquire (GFXM, 0xFFFF)
        Store (SMI (0x46, Zero), Local0)
        \_SB.PCI0.GFX0.GLID (Local0)
        Notify (\_SB.LID0, 0x80)
        Release (GFXM)
    }

    Method (LIDE, 0, NotSerialized)
    {
        Store (GPUF, Local1)
        If (LEqual (Local1, 0x04))
        {
            ILID ()
        }
        Else
        {
            Notify (\_SB.LID0, 0x80)
        }
    }

    Method (PWRE, 0, NotSerialized)
    {
        If (LEqual (OSYS, 0x10))
        {
            Notify (\_SB.PWRB, 0x02)
        }

        Store (ECG5 (), Local0)
        XOr (Local0, MIS0, Local1)
        And (Local0, 0x13, MIS0)
        If (And (Local1, One))
        {
            Notify (\_SB.AC, 0x80)
        }

        And (MIS0, 0x02, Local2)
        If (And (Local1, 0x02))
        {
            If (Local2)
            {
                Notify (\_SB.BAT0, 0x81)
            }
            Else
            {
                Notify (\_SB.BAT0, 0x81)
            }
        }

        If (And (Local1, 0x04))
        {
            If (Local2)
            {
                Notify (\_SB.BAT0, 0x80)
            }
        }

        If (And (Local1, 0x08))
        {
            If (Local2)
            {
                Notify (\_SB.BAT0, 0x80)
            }
        }
    }

    Method (SMIE, 0, NotSerialized)
    {
        Store (SMI (0x96, Zero), Local0)
        If (And (Local0, One))
        {
            Notify (\_TZ.THM, 0x80)
        }

        If (And (Local0, 0x02))
        {
            Store (GPUF, Local1)
            Name (_T_0, Zero)
            Store (Local1, _T_0)
            If (LEqual (_T_0, One))
            {
                Notify (\_SB.PCI0.P0P1.PEGP, 0x80)
            }
            Else
            {
                If (LEqual (_T_0, 0x02))
                {
                    Notify (\_SB.PCI0.P0P2.PEGP, 0x80)
                }
                Else
                {
                    If (LEqual (_T_0, 0x03))
                    {
                        SGTG ()
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x04))
                        {
                            \_SB.PCI0.GFX0.GHDS (Zero)
                        }
                        Else
                        {
                        }
                    }
                }
            }
        }

        If (And (Local0, 0x04))
        {
            CESM (Local0)
        }

        If (And (Local0, 0x08))
        {
            Notify (\_PR.P000, 0x80)
            Notify (\_PR.P001, 0x80)
            Notify (\_PR.P002, 0x80)
            Notify (\_PR.P003, 0x80)
        }
    }

    Method (CESM, 1, NotSerialized)
    {
        Store (Arg0, Local0)
        SX10 ()
        SX30 (0x18)
        SX11 ()
        Store (SX42 (), Local0)
        SX12 ()
        If (LEqual (GPUF, 0x03))
        {
            If (And (Local0, 0x02))
            {
                If (LEqual (SGTF, 0x02))
                {
                    Store (0x03, SGTF)
                    WMIA (0x0800)
                }
            }
        }

        If (LGreaterEqual (OSYS, 0x20))
        {
            If (And (Local0, 0x0400))
            {
                Store (GPUF, Local1)
                Name (_T_0, Zero)
                Store (Local1, _T_0)
                If (LEqual (_T_0, One))
                {
                    Notify (\_SB.PCI0.P0P1.PEGP.LCD, 0x86)
                }
                Else
                {
                    If (LEqual (_T_0, 0x02))
                    {
                        Notify (\_SB.PCI0.P0P2.PEGP.LCD, 0x86)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x03))
                        {
                            SGBU ()
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x04))
                            {
                                Notify (\_SB.PCI0.GFX0.DD02, 0x86)
                            }
                            Else
                            {
                            }
                        }
                    }
                }
            }
        }

        If (LGreaterEqual (OSYS, 0x20))
        {
            If (And (Local0, 0x0200))
            {
                Store (GPUF, Local1)
                Name (_T_1, Zero)
                Store (Local1, _T_1)
                If (LEqual (_T_1, One))
                {
                    Notify (\_SB.PCI0.P0P1.PEGP.LCD, 0x87)
                }
                Else
                {
                    If (LEqual (_T_1, 0x02))
                    {
                        Notify (\_SB.PCI0.P0P2.PEGP.LCD, 0x87)
                    }
                    Else
                    {
                        If (LEqual (_T_1, 0x03))
                        {
                            SGBD ()
                        }
                        Else
                        {
                            If (LEqual (_T_1, 0x04))
                            {
                                Notify (\_SB.PCI0.GFX0.DD02, 0x87)
                            }
                            Else
                            {
                            }
                        }
                    }
                }
            }
        }
    }

    Method (SGTG, 0, NotSerialized)
    {
        If (\_SB.PCI0.P0P1.PEGP.PO52)
        {
            Store (0x03, \_SB.PCI0.GFX0.HGNC)
            Store (One, \_SB.PCI0.GFX0.DACE)
            Notify (\_SB.PCI0.GFX0, 0x80)
            Notify (\_SB.PCI0.WMI1, 0x80)
        }
        Else
        {
            Notify (\_SB.PCI0.P0P1.PEGP, 0x80)
        }
    }

    Method (SGBD, 0, NotSerialized)
    {
        If (\_SB.PCI0.P0P1.PEGP.PO52)
        {
            Notify (\_SB.PCI0.GFX0.DD02, 0x87)
        }
        Else
        {
            Notify (\_SB.PCI0.P0P1.PEGP.DD02, 0x87)
        }
    }

    Method (SGBU, 0, NotSerialized)
    {
        If (\_SB.PCI0.P0P1.PEGP.PO52)
        {
            Notify (\_SB.PCI0.GFX0.DD02, 0x86)
        }
        Else
        {
            Notify (\_SB.PCI0.P0P1.PEGP.DD02, 0x86)
        }
    }

    Scope (_GPE)
    {
        Method (_L11, 0, NotSerialized)
        {
            NEVT ()
        }

        Method (_L17, 0, NotSerialized)
        {
            NWAK ()
        }
    }

    Method (OPTS, 1, NotSerialized)
    {
        SMI (0x8A, Arg0)
        Store (SMI (0x46, Zero), MIS1)
    }

    Method (OWAK, 1, NotSerialized)
    {
        SOST ()
        Store (ECG5 (), MIS0)
        Notify (\_SB.AC, 0x80)
        SMI (0x9A, Arg0)
        Store (GPUF, Local1)
        If (LEqual (Local1, 0x04))
        {
            Store (SMI (0x46, Zero), Local0)
            Store (Local0, \_SB.PCI0.GFX0.CLID)
            If (LEqual (Arg0, 0x03))
            {
                If (Or (LNotEqual (MIS1, Local0), LEqual (Local0, Zero)))
                {
                    If (LGreaterEqual (OSYS, 0x20))
                    {
                        \_SB.PCI0.GFX0.GLID (Local0)
                    }
                    Else
                    {
                        LIDE ()
                    }
                }
            }
        }
    }

    Method (PSW, 2, NotSerialized)
    {
        SX10 ()
        SX30 (0x06)
        SX30 (Arg0)
        SX30 (Arg1)
        SX11 ()
        SX12 ()
    }

    Method (DSS, 2, NotSerialized)
    {
        SX10 ()
        SX30 (0x08)
        SX30 (Arg0)
        SX32 (Arg1)
        SX11 ()
        SX12 ()
    }

    Scope (_SB)
    {
        OperationRegion (SMIR, SystemIO, 0xB2, 0x02)
        Field (SMIR, ByteAcc, NoLock, Preserve)
        {
            SMII,   8, 
            SMID,   8
        }

        OperationRegion (SMR2, SystemIO, 0x86, One)
        Field (SMR2, ByteAcc, NoLock, Preserve)
        {
            SMIA,   8
        }
    }

    Mutex (SMIX, 0x01)
    Method (SMI, 2, NotSerialized)
    {
        Acquire (SMIX, 0xFFFF)
        Store (Arg1, SMIB)
        Store (Arg0, \_SB.SMII)
        Store (SMIB, Local1)
        Release (SMIX)
        Return (Local1)
    }

    Name (SXX0, Buffer (0x0100) {})
    Name (SXX1, Buffer (0x08) {})
    Name (NSMI, Zero)
    CreateWordField (SXX1, Zero, SXX2)
    CreateWordField (SXX1, 0x04, SXX3)
    Method (SX10, 0, NotSerialized)
    {
        Acquire (SMIX, 0xFFFF)
        Store (Zero, SXX2)
        If (LEqual (\_SB.PCI0.SBRG.RMSC.ENTF, Zero))
        {
            Store (Zero, NSMI)
        }
        Else
        {
            Store (One, NSMI)
        }
    }

    Method (SX30, 1, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Increment (Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateByteField (SXX0, SXX2, SX20)
                Store (Arg0, SX20)
                Store (Local0, SXX2)
            }
        }
    }

    Method (SX31, 1, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Add (Local0, 0x02, Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateWordField (SXX0, SXX2, SX21)
                Store (Arg0, SX21)
                Store (Local0, SXX2)
            }
        }
    }

    Method (SX32, 1, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Add (Local0, 0x04, Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateDWordField (SXX0, SXX2, SX22)
                Store (Arg0, SX22)
                Store (Local0, SXX2)
            }
        }
    }

    Method (SX33, 2, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            If (LLess (Arg1, SizeOf (Arg0)))
            {
                CreateByteField (Arg0, Arg1, SX20)
                SX30 (SX20)
            }
        }
    }

    Method (SX34, 2, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (Zero, Local0)
            While (LLess (Local0, Arg1))
            {
                SX33 (Arg0, Local0)
                Increment (Local0)
            }
        }
    }

    Method (SXX6, 2, NotSerialized)
    {
        Store (Arg1, SMIB)
        Store (Arg0, \_SB.SMII)
        Return (SMIB)
    }

    Method (SXX5, 2, NotSerialized)
    {
        If (LLess (Arg1, SizeOf (Arg0)))
        {
            CreateByteField (Arg0, Arg1, SX20)
            SXX6 (0x7C, SX20)
        }
    }

    Method (SXX4, 0, NotSerialized)
    {
        SXX6 (0x7B, Zero)
        Store (Zero, Local0)
        While (LLess (Local0, SXX2))
        {
            SXX5 (SXX0, Local0)
            Increment (Local0)
        }
    }

    Method (SXX8, 2, NotSerialized)
    {
        If (LLess (Arg1, SizeOf (Arg0)))
        {
            CreateByteField (Arg0, Arg1, SX20)
            Store (SXX6 (0x7D, Zero), SX20)
        }
    }

    Method (SXX7, 0, NotSerialized)
    {
        Store (Zero, Local0)
        While (LLess (Local0, SXX3))
        {
            Add (SXX2, Local0, Local1)
            SXX8 (SXX0, Local1)
            Increment (Local0)
        }
    }

    Method (SX11, 0, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            SXX4 ()
            Store (SXX6 (0x79, Zero), SXX3)
            Add (SXX2, SXX3, Local0)
            If (LLess (SizeOf (SXX0), Local0))
            {
                Store (SizeOf (SXX0), Local0)
                Subtract (Local0, SXX2, Local0)
                Store (Local0, SXX3)
            }

            SXX7 ()
        }
    }

    Method (SX40, 0, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Increment (Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateByteField (SXX0, SXX2, SX20)
                Store (Local0, SXX2)
                Return (SX20)
            }
        }

        Return (Zero)
    }

    Method (SX41, 0, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Add (Local0, 0x02, Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateWordField (SXX0, SXX2, SX21)
                Store (Local0, SXX2)
                Return (SX21)
            }
        }

        Return (Zero)
    }

    Method (SX42, 0, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SXX2, Local0)
            Add (Local0, 0x04, Local0)
            If (LLessEqual (Local0, SizeOf (SXX0)))
            {
                CreateDWordField (SXX0, SXX2, SX22)
                Store (Local0, SXX2)
                Return (SX22)
            }
        }

        Return (Zero)
    }

    Method (SX43, 2, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            If (LLess (Arg1, SizeOf (Arg0)))
            {
                CreateByteField (Arg0, Arg1, SX20)
                Store (SX40 (), SX20)
            }
        }
    }

    Method (SX44, 2, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (Zero, Local0)
            While (LLess (Local0, Arg1))
            {
                SX43 (Arg0, Local0)
                Increment (Local0)
            }
        }
    }

    Method (SX45, 0, NotSerialized)
    {
        If (LEqual (NSMI, Zero))
        {
            Store (SX40 (), Local0)
            Name (SX23, Buffer (Local0) {})
            SX44 (SX23, Local0)
            Return (SX23)
        }
    }

    Method (SX12, 0, NotSerialized)
    {
        Release (SMIX)
    }

    Scope (_SB.PCI0)
    {
        Method (UCMD, 3, NotSerialized)
        {
            SX10 ()
            SX30 (0x0F)
            SX30 (Arg0)
            SX30 (Arg1)
            SX30 (Arg2)
            SX11 ()
            Store (SX40 (), Local0)
            SX12 ()
            Return (Local0)
        }

        Method (UPSW, 2, NotSerialized)
        {
            Return (UCMD (0x02, Arg0, Arg1))
        }

        Method (UPRW, 2, NotSerialized)
        {
            Return (UCMD (One, Arg0, Arg1))
        }

        Device (EHC2)
        {
            Name (_ADR, 0x001A0000)
            Name (_S1D, 0x02)
            Name (_S3D, 0x02)
            Device (HUB7)
            {
                Name (_ADR, Zero)
                Device (RMCH)
                {
                    Name (_ADR, One)
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        0xFF, 
                        Zero, 
                        Zero
                    })
                    Name (_PLD, Buffer (0x10)
                    {
                        /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                    })
                    Device (CH00)
                    {
                        Name (_ADR, One)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }

                    Device (CH01)
                    {
                        Name (_ADR, 0x02)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }

                    Device (CH10)
                    {
                        Name (_ADR, 0x03)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }

                    Device (CH11)
                    {
                        Name (_ADR, 0x04)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }

                    Device (CH20)
                    {
                        Name (_ADR, 0x05)
                    }

                    Device (CH21)
                    {
                        Name (_ADR, 0x06)
                    }
                }
            }
        }

        Device (EHCI)
        {
            Name (_ADR, 0x001D0000)
            Name (_S1D, 0x02)
            Name (_S3D, 0x02)
            Method (_PRW, 0, NotSerialized)
            {
                Store (UPRW (Zero, 0x02), Local0)
                If (LEqual (Local0, 0x03))
                {
                    Return (Package (0x02)
                    {
                        0x0D, 
                        0x03
                    })
                }

                If (LEqual (Local0, One))
                {
                    Return (Package (0x02)
                    {
                        0x0D, 
                        One
                    })
                }

                Return (Package (0x02)
                {
                    0x0D, 
                    Zero
                })
            }

            Method (_PSW, 1, NotSerialized)
            {
                UPSW (Arg0, 0x02)
            }

            Device (HUB7)
            {
                Name (_ADR, Zero)
                Device (RMCH)
                {
                    Name (_ADR, One)
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        0xFF, 
                        Zero, 
                        Zero
                    })
                    Name (_PLD, Buffer (0x10)
                    {
                        /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                    })
                    Device (CH00)
                    {
                        Name (_ADR, One)
                    }

                    Device (CH01)
                    {
                        Name (_ADR, 0x02)
                    }

                    Device (CH10)
                    {
                        Name (_ADR, 0x03)
                    }

                    Device (CH11)
                    {
                        Name (_ADR, 0x04)
                    }

                    Device (CH20)
                    {
                        Name (_ADR, 0x05)
                    }

                    Device (CH21)
                    {
                        Name (_ADR, 0x06)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }

                    Device (CH30)
                    {
                        Name (_ADR, 0x07)
                    }

                    Device (CH31)
                    {
                        Name (_ADR, 0x08)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
                        })
                    }
                }
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Device (A_CC)
        {
            Name (_HID, "SMO8800")
            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }

            Name (_UID, One)
            Name (BUF2, ResourceTemplate ()
            {
                Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
                {
                    0x00000014,
                }
            })
            Method (_CRS, 0, Serialized)
            {
                Return (BUF2)
            }

            Method (_SRS, 1, Serialized)
            {
                Return (BUF2)
            }
        }
    }

    Scope (_SB.PCI0.SBRG)
    {
        Device (PS2)
        {
            Name (_HID, EisaId ("SYN0604"))
            Name (_CID, Package (0x03)
            {
                EisaId ("SYN0600"), 
                EisaId ("SYN0002"), 
                EisaId ("PNP0F13")
            })
            Name (CRS, ResourceTemplate ()
            {
                IRQNoFlags ()
                    {12}
            })
            Method (_CRS, 0, NotSerialized)
            {
                Return (CRS)
            }
        }

        Device (KBC)
        {
            Name (_HID, EisaId ("PNP0303"))
            Name (CRS, ResourceTemplate ()
            {
                IO (Decode16,
                    0x0060,             // Range Minimum
                    0x0060,             // Range Maximum
                    0x10,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0064,             // Range Minimum
                    0x0064,             // Range Maximum
                    0x04,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0062,             // Range Minimum
                    0x0062,             // Range Maximum
                    0x02,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0066,             // Range Minimum
                    0x0066,             // Range Maximum
                    0x06,               // Alignment
                    0x01,               // Length
                    )
                IRQNoFlags ()
                    {1}
            })
            Method (_CRS, 0, NotSerialized)
            {
                Return (CRS)
            }
        }

        OperationRegion (GPI1, SystemIO, 0x0500, 0x4A)
        Field (GPI1, ByteAcc, Lock, Preserve)
        {
                    Offset (0x38), 
                ,   4, 
            GO36,   1, 
            GI37,   1
        }
    }

    Scope (_SB)
    {
        Device (AMW0)
        {
            Mutex (WMIX, 0x01)
            Name (_HID, "pnp0c14")
            Name (_UID, Zero)
            Method (STBY, 3, NotSerialized)
            {
                CreateByteField (Arg0, Arg1, TMP)
                Store (Arg2, TMP)
            }

            Method (STWD, 3, NotSerialized)
            {
                CreateWordField (Arg0, Arg1, TMP)
                Store (Arg2, TMP)
            }

            Method (STDW, 3, NotSerialized)
            {
                CreateDWordField (Arg0, Arg1, TMP)
                Store (Arg2, TMP)
            }

            Method (CLBY, 1, NotSerialized)
            {
                Store (Zero, Local0)
                While (LLess (Local0, SizeOf (Arg0)))
                {
                    STBY (Arg0, Local0, Zero)
                    Increment (Local0)
                }
            }

            Name (_WDG, Buffer (0x78)
            {
                /* 0000 */    0xBC, 0xDC, 0x9D, 0x8D, 0x97, 0xA9, 0xDA, 0x11, 
                /* 0008 */    0xB0, 0x12, 0xB6, 0x22, 0xA1, 0xEF, 0x54, 0x92, 
                /* 0010 */    0x41, 0x41, 0x01, 0x00, 0xCE, 0x93, 0x05, 0xA8, 
                /* 0018 */    0x97, 0xA9, 0xDA, 0x11, 0xB0, 0x12, 0xB6, 0x22, 
                /* 0020 */    0xA1, 0xEF, 0x54, 0x92, 0x42, 0x41, 0x01, 0x02, 
                /* 0028 */    0x94, 0x59, 0xBB, 0x9D, 0x97, 0xA9, 0xDA, 0x11, 
                /* 0030 */    0xB0, 0x12, 0xB6, 0x22, 0xA1, 0xEF, 0x54, 0x92, 
                /* 0038 */    0xD0, 0x00, 0x01, 0x08, 0xE0, 0x6C, 0x77, 0xA3, 
                /* 0040 */    0x88, 0x1E, 0xDB, 0x11, 0xA9, 0x8B, 0x08, 0x00, 
                /* 0048 */    0x20, 0x0C, 0x9A, 0x66, 0x42, 0x43, 0x01, 0x00, 
                /* 0050 */    0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, 
                /* 0058 */    0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, 
                /* 0060 */    0x4D, 0x4F, 0x01, 0x00, 0x28, 0x07, 0xBD, 0x77, 
                /* 0068 */    0x34, 0x2E, 0x8C, 0x47, 0xB6, 0x25, 0x67, 0xF0, 
                /* 0070 */    0x2A, 0x7E, 0x48, 0x97, 0x42, 0x44, 0x01, 0x02
            })
            Name (INFO, Buffer (0x80) {})
            Name (ECD0, Zero)
            Method (WED0, 1, NotSerialized)
            {
                Store (Arg0, ECD0)
                Return (Arg0)
            }

            Method (WCAA, 1, NotSerialized)
            {
                Return (Zero)
            }

            Method (WQAA, 1, NotSerialized)
            {
                Acquire (WMIX, 0xFFFF)
                CLBY (INFO)
                If (LNotEqual (Arg0, Zero))
                {
                    Store (INFO, Local1)
                }
                Else
                {
                    STDW (INFO, Zero, 0x4C4C4544)
                    STDW (INFO, 0x04, 0x494D5720)
                    STDW (INFO, 0x08, One)
                    STDW (INFO, 0x0C, 0x1000)
                    Store (INFO, Local1)
                }

                Release (WMIX)
                Return (Local1)
            }

            Method (WSAA, 2, NotSerialized)
            {
                Return (Arg1)
            }

            Method (WMI, 2, NotSerialized)
            {
                Return (PHWM (Arg0, Arg1))
            }

            Method (WMBA, 3, NotSerialized)
            {
                CreateDWordField (Arg2, 0x28, WBUF)
                Add (WBUF, 0x2C, Local1)
                If (LLessEqual (Local1, 0x1000))
                {
                    Store (WMI (Arg2, Local1), Local0)
                }

                Return (Local0)
            }

            Name (WMI1, Zero)
            Name (WMI2, Buffer (0x80) {})
            Name (WMI3, Zero)
            Method (WMI4, 1, NotSerialized)
            {
                Or (WMI1, Arg0, WMI1)
            }

            Method (WMI5, 1, NotSerialized)
            {
                And (WMI1, Not (Arg0), WMI1)
            }

            Method (WMI6, 0, NotSerialized)
            {
                Acquire (WMIX, 0xFFFF)
                Store (Zero, WMI3)
                CLBY (WMI2)
            }

            Method (WMI7, 0, NotSerialized)
            {
                Acquire (WMIX, 0xFFFF)
                Store (Zero, WMI3)
            }

            Method (WMI8, 1, NotSerialized)
            {
                Store (WMI3, Local0)
                Add (Local0, 0x02, Local0)
                If (LLessEqual (Local0, SizeOf (WMI2)))
                {
                    CreateWordField (WMI2, WMI3, WMI9)
                    Store (Arg0, WMI9)
                    Store (Local0, WMI3)
                }
            }

            Method (_WED, 1, NotSerialized)
            {
                WMI6 ()
                If (LNotEqual (Arg0, 0xD0))
                {
                    WMI7 ()
                    Return (WMI2)
                }

                If (LEqual (ECD0, Zero))
                {
                    WMI7 ()
                    Return (WMI2)
                }

                SX10 ()
                SX30 (0x16)
                SX11 ()
                Store (SX41 (), Local0)
                While (LGreater (Local0, Zero))
                {
                    WMI8 (Local0)
                    While (LGreater (Local0, Zero))
                    {
                        WMI8 (SX41 ())
                        Subtract (Local0, One, Local0)
                    }
                }

                WMI8 (Zero)
                SX12 ()
                WMI7 ()
                Return (WMI2)
            }

            Name (WQMO, Buffer (0x079B)
            {
                /* 0000 */    0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, 
                /* 0008 */    0x8B, 0x07, 0x00, 0x00, 0x60, 0x2C, 0x00, 0x00, 
                /* 0010 */    0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, 
                /* 0018 */    0x28, 0xD1, 0x95, 0x00, 0x01, 0x06, 0x18, 0x42, 
                /* 0020 */    0x10, 0x13, 0x10, 0x22, 0x21, 0x04, 0x12, 0x01, 
                /* 0028 */    0xA1, 0xC8, 0x2C, 0x0C, 0x86, 0x10, 0x38, 0x2E, 
                /* 0030 */    0x84, 0x1C, 0x40, 0x48, 0x1C, 0x14, 0x4A, 0x08, 
                /* 0038 */    0x84, 0xFA, 0x13, 0xC8, 0xAF, 0x00, 0x84, 0x0E, 
                /* 0040 */    0x05, 0xC8, 0x14, 0x60, 0x50, 0x80, 0x53, 0x04, 
                /* 0048 */    0x11, 0xF4, 0x2A, 0xC0, 0xA6, 0x00, 0x93, 0x02, 
                /* 0050 */    0x2C, 0x0A, 0xD0, 0x2E, 0xC0, 0xB2, 0x00, 0xDD, 
                /* 0058 */    0x02, 0xA4, 0xC3, 0x12, 0x91, 0xE0, 0x28, 0x31, 
                /* 0060 */    0xE0, 0x28, 0x9D, 0xD8, 0xC2, 0x0D, 0x1B, 0xBC, 
                /* 0068 */    0x50, 0x14, 0xCD, 0x20, 0x4A, 0x82, 0x72, 0x11, 
                /* 0070 */    0xA4, 0x0B, 0x42, 0xCA, 0x05, 0xF8, 0x46, 0xD0, 
                /* 0078 */    0x00, 0xA2, 0xF4, 0x2E, 0xC0, 0xB6, 0x00, 0xD3, 
                /* 0080 */    0xF0, 0x44, 0xEA, 0x10, 0x50, 0x72, 0x86, 0x80, 
                /* 0088 */    0x1A, 0x40, 0xAB, 0x13, 0x10, 0x7E, 0xA5, 0x53, 
                /* 0090 */    0x42, 0x12, 0x84, 0x33, 0x56, 0xF1, 0x33, 0xD0, 
                /* 0098 */    0x1C, 0x4E, 0xE0, 0x9C, 0x3A, 0xC7, 0x90, 0xE3, 
                /* 00A0 */    0x71, 0xA1, 0x07, 0xC1, 0x03, 0x29, 0x00, 0x61, 
                /* 00A8 */    0xE1, 0x21, 0x14, 0x01, 0x06, 0x25, 0x61, 0x2C, 
                /* 00B0 */    0xD4, 0xC5, 0xA8, 0x51, 0x23, 0x65, 0x03, 0x32, 
                /* 00B8 */    0x44, 0x69, 0xA3, 0x46, 0x0F, 0xE8, 0xEC, 0x8E, 
                /* 00C0 */    0xA4, 0x61, 0x01, 0xB2, 0x47, 0x22, 0x02, 0xA3, 
                /* 00C8 */    0x1E, 0xD3, 0x11, 0x16, 0x36, 0x23, 0xA1, 0xC6, 
                /* 00D0 */    0x68, 0x0E, 0x8A, 0x40, 0xE3, 0x06, 0x6D, 0x89, 
                /* 00D8 */    0xB0, 0x1A, 0x57, 0xEC, 0x33, 0xB3, 0xF0, 0x61, 
                /* 00E0 */    0x09, 0xE3, 0x08, 0x0E, 0x2C, 0x41, 0xA3, 0x68, 
                /* 00E8 */    0x9A, 0xE3, 0xD9, 0x86, 0x48, 0x70, 0x10, 0xA1, 
                /* 00F0 */    0x31, 0x32, 0x20, 0xE4, 0x59, 0x80, 0x75, 0x50, 
                /* 00F8 */    0x49, 0x06, 0x22, 0xEE, 0x11, 0xA5, 0x10, 0x41, 
                /* 0100 */    0xF3, 0x3D, 0x91, 0x1A, 0x05, 0x68, 0xC3, 0x90, 
                /* 0108 */    0xAD, 0xB3, 0x81, 0x86, 0x1A, 0xAB, 0x31, 0x14, 
                /* 0110 */    0x41, 0x44, 0x08, 0x1A, 0xC5, 0x60, 0x11, 0x42, 
                /* 0118 */    0x85, 0xF8, 0xFF, 0x47, 0x89, 0x7A, 0x4A, 0x41, 
                /* 0120 */    0xA2, 0x56, 0x06, 0x22, 0xB4, 0x60, 0x46, 0x60, 
                /* 0128 */    0xF6, 0x07, 0x41, 0x62, 0x9C, 0x19, 0x74, 0x58, 
                /* 0130 */    0xB0, 0x0C, 0x10, 0x19, 0x11, 0x34, 0x1A, 0x76, 
                /* 0138 */    0x16, 0xF0, 0x70, 0x3C, 0x93, 0xE6, 0x27, 0xA6, 
                /* 0140 */    0xC1, 0x99, 0x60, 0x6C, 0x08, 0x69, 0x80, 0x90, 
                /* 0148 */    0xA8, 0x83, 0x03, 0x25, 0xB0, 0x94, 0x81, 0x93, 
                /* 0150 */    0xCB, 0x81, 0xC7, 0x77, 0xC6, 0x51, 0x43, 0x9C, 
                /* 0158 */    0xFA, 0x99, 0xF9, 0x1F, 0xE1, 0x2D, 0xF8, 0x08, 
                /* 0160 */    0xC0, 0xC7, 0xE0, 0xC1, 0x1E, 0x42, 0xC0, 0x23, 
                /* 0168 */    0x64, 0x67, 0x00, 0x03, 0xE2, 0xAF, 0x0B, 0x27, 
                /* 0170 */    0xED, 0xB9, 0xF8, 0x2C, 0x00, 0x63, 0xF8, 0x70, 
                /* 0178 */    0x8D, 0x8F, 0x42, 0xE3, 0x61, 0xE7, 0x03, 0x36, 
                /* 0180 */    0x2E, 0x0E, 0xEF, 0x43, 0xC1, 0x09, 0x17, 0x0B, 
                /* 0188 */    0xA2, 0x00, 0x10, 0x92, 0x75, 0x3E, 0x40, 0xCF, 
                /* 0190 */    0xFA, 0xD8, 0x02, 0x3E, 0x0C, 0x34, 0x7B, 0x87, 
                /* 0198 */    0x20, 0x04, 0x2F, 0x02, 0x3E, 0x3A, 0xF8, 0xB8, 
                /* 01A0 */    0xE1, 0x71, 0x3F, 0x6F, 0x80, 0xE1, 0x70, 0xE0, 
                /* 01A8 */    0xE1, 0xF8, 0xB4, 0x01, 0x5C, 0x46, 0xC0, 0xA5, 
                /* 01B0 */    0x3D, 0x29, 0x4C, 0x20, 0xC9, 0x4F, 0x00, 0x89, 
                /* 01B8 */    0x81, 0x41, 0x1D, 0x08, 0x7C, 0xB0, 0x80, 0x2B, 
                /* 01C0 */    0x09, 0x0E, 0x35, 0x3C, 0x4F, 0xEC, 0x01, 0xE1, 
                /* 01C8 */    0xFF, 0x7F, 0x94, 0x67, 0x76, 0x20, 0x9E, 0xFE, 
                /* 01D0 */    0x63, 0x00, 0x8C, 0x03, 0x82, 0xA7, 0x75, 0x4A, 
                /* 01D8 */    0xBE, 0x79, 0x3C, 0x48, 0xF8, 0x22, 0x10, 0x26, 
                /* 01E0 */    0x81, 0x4F, 0x09, 0x0C, 0x8D, 0x1F, 0x37, 0xC0, 
                /* 01E8 */    0x3A, 0x6A, 0xFC, 0x01, 0x01, 0xDE, 0x49, 0xE2, 
                /* 01F0 */    0xFC, 0xFA, 0x1C, 0x80, 0x0E, 0x0D, 0xA7, 0xC8, 
                /* 01F8 */    0x40, 0x5E, 0x03, 0x9E, 0x09, 0x4E, 0xC9, 0xE3, 
                /* 0200 */    0x4B, 0xE0, 0x33, 0x07, 0xEC, 0xBB, 0xC1, 0x61, 
                /* 0208 */    0x1C, 0x4C, 0x88, 0x08, 0xEF, 0x01, 0x4F, 0x1D, 
                /* 0210 */    0xBE, 0x6B, 0x3C, 0x0A, 0x04, 0x8A, 0xD0, 0xDB, 
                /* 0218 */    0x99, 0x83, 0x9E, 0x42, 0x8C, 0x12, 0xED, 0xAC, 
                /* 0220 */    0xC2, 0x3C, 0x70, 0x44, 0xF1, 0x91, 0xC3, 0x08, 
                /* 0228 */    0xEF, 0x1E, 0xBE, 0x13, 0x3C, 0x80, 0xB4, 0x36, 
                /* 0230 */    0x39, 0xE1, 0x06, 0x7A, 0xE6, 0x60, 0xD1, 0xCE, 
                /* 0238 */    0x2C, 0xB2, 0x00, 0xA2, 0x48, 0xA3, 0x41, 0x9D, 
                /* 0240 */    0x11, 0x7C, 0x1A, 0xF0, 0xB4, 0x9E, 0x62, 0x7C, 
                /* 0248 */    0x94, 0x30, 0xC8, 0x19, 0x1E, 0xD8, 0x73, 0xC2, 
                /* 0250 */    0x63, 0x80, 0x07, 0xCC, 0x6E, 0x0C, 0x3E, 0x4E, 
                /* 0258 */    0xF8, 0x5C, 0x80, 0x77, 0x0D, 0xA8, 0x19, 0xFA, 
                /* 0260 */    0xB0, 0x01, 0xE7, 0xD0, 0x81, 0x3F, 0x4D, 0xE0, 
                /* 0268 */    0x0F, 0x16, 0xF8, 0xF1, 0xF8, 0x9A, 0xC3, 0x26, 
                /* 0270 */    0x9C, 0xC0, 0xF2, 0x07, 0x81, 0x1A, 0x99, 0xA1, 
                /* 0278 */    0x3D, 0xCB, 0xD3, 0x7A, 0x0D, 0xF0, 0x69, 0xC7, 
                /* 0280 */    0x04, 0x3E, 0x6F, 0xF8, 0xFF, 0xFF, 0xCF, 0xF1, 
                /* 0288 */    0x78, 0xC0, 0xAF, 0xF8, 0x6C, 0x41, 0xEE, 0x0A, 
                /* 0290 */    0x9E, 0xAF, 0xCF, 0x2E, 0xCC, 0xC6, 0x78, 0x50, 
                /* 0298 */    0xA3, 0xF0, 0x01, 0x07, 0x77, 0x76, 0xF1, 0x11, 
                /* 02A0 */    0xC0, 0x67, 0x17, 0xE0, 0x39, 0x89, 0x67, 0x09, 
                /* 02A8 */    0xF0, 0x1E, 0x02, 0xAC, 0x19, 0x4F, 0x87, 0x2D, 
                /* 02B0 */    0x18, 0x23, 0xC6, 0x43, 0x9E, 0x71, 0xD5, 0xC3, 
                /* 02B8 */    0xD0, 0x45, 0xC0, 0xEA, 0xEE, 0x2B, 0xA8, 0xA3, 
                /* 02C0 */    0x17, 0x98, 0xA0, 0x5E, 0x33, 0x70, 0xA7, 0x17, 
                /* 02C8 */    0xE0, 0x73, 0xCA, 0x82, 0xF7, 0xFF, 0x3F, 0x65, 
                /* 02D0 */    0x01, 0xF7, 0xAB, 0x02, 0x3F, 0xA2, 0x80, 0x01, 
                /* 02D8 */    0xB2, 0xB3, 0xD3, 0x89, 0x10, 0xDE, 0x4B, 0x9E, 
                /* 02E0 */    0x43, 0x7C, 0xBB, 0xF2, 0xC1, 0x24, 0xC8, 0x73, 
                /* 02E8 */    0x40, 0x84, 0xA7, 0x2C, 0x7E, 0x1F, 0x88, 0x12, 
                /* 02F0 */    0xF3, 0x80, 0x22, 0x45, 0x31, 0x62, 0x90, 0x27, 
                /* 02F8 */    0x2C, 0x5F, 0x4F, 0x62, 0x18, 0x3A, 0x58, 0xB8, 
                /* 0300 */    0xF0, 0x11, 0x9E, 0xB2, 0x00, 0x8B, 0x97, 0x2C, 
                /* 0308 */    0xCC, 0x29, 0x0B, 0xE6, 0xDB, 0xC0, 0xA7, 0x2C, 
                /* 0310 */    0x70, 0xFC, 0xFF, 0x4F, 0x59, 0xE0, 0x1A, 0xF7, 
                /* 0318 */    0x53, 0x16, 0x30, 0x93, 0xFE, 0x14, 0xF0, 0xA9, 
                /* 0320 */    0xC6, 0x4F, 0x00, 0x45, 0x3F, 0x58, 0x50, 0x18, 
                /* 0328 */    0x9F, 0xB2, 0x00, 0x57, 0xF2, 0x0E, 0x08, 0xA0, 
                /* 0330 */    0x39, 0x3B, 0xF9, 0xB6, 0x60, 0xB0, 0xE7, 0x98, 
                /* 0338 */    0x93, 0x78, 0xC9, 0xF0, 0x29, 0x11, 0x0C, 0x87, 
                /* 0340 */    0x0C, 0xDF, 0xA9, 0x0E, 0xE5, 0x91, 0xE3, 0x29, 
                /* 0348 */    0xC0, 0x47, 0x2C, 0xB0, 0xC7, 0x39, 0x06, 0xE8, 
                /* 0350 */    0xB8, 0xE2, 0x23, 0x96, 0xFF, 0xFF, 0x47, 0x2C, 
                /* 0358 */    0x80, 0x1B, 0x07, 0x10, 0xFC, 0xA9, 0x03, 0xD6, 
                /* 0360 */    0x3D, 0x20, 0xAC, 0x0F, 0x1D, 0xC0, 0x43, 0xF6, 
                /* 0368 */    0x43, 0x40, 0x67, 0x18, 0x4B, 0x06, 0x91, 0x8D, 
                /* 0370 */    0x73, 0x0D, 0x1D, 0xA3, 0xC5, 0x2F, 0x54, 0x37, 
                /* 0378 */    0x85, 0xB8, 0x07, 0xC3, 0x65, 0x03, 0x09, 0xD4, 
                /* 0380 */    0xC3, 0xB5, 0x60, 0x0A, 0x89, 0xA2, 0xD1, 0x68, 
                /* 0388 */    0x0C, 0x4C, 0x60, 0x04, 0x67, 0x10, 0x03, 0x3A, 
                /* 0390 */    0x23, 0x84, 0x0E, 0x65, 0x38, 0x15, 0xE7, 0x21, 
                /* 0398 */    0xD4, 0xFF, 0x9F, 0x60, 0xA8, 0x1B, 0x13, 0x9D, 
                /* 03A0 */    0x9D, 0xE7, 0xCF, 0x6F, 0x23, 0x3E, 0x11, 0x18, 
                /* 03A8 */    0xD8, 0x57, 0x88, 0xB7, 0x0C, 0xB0, 0x0C, 0xCB, 
                /* 03B0 */    0x8B, 0x7B, 0x02, 0x78, 0xBC, 0x78, 0xCB, 0x48, 
                /* 03B8 */    0x50, 0xCD, 0xB1, 0x06, 0x35, 0x07, 0x5F, 0x05, 
                /* 03C0 */    0xDE, 0xC8, 0x4C, 0xE0, 0x2B, 0x18, 0xD8, 0x4E, 
                /* 03C8 */    0x33, 0x18, 0x7D, 0x77, 0x02, 0x50, 0x00, 0xF9, 
                /* 03D0 */    0x28, 0xE0, 0xFB, 0xF2, 0xDB, 0x00, 0x9B, 0xC5, 
                /* 03D8 */    0x2B, 0xB3, 0xD1, 0x7C, 0xFE, 0x44, 0x0C, 0x1D, 
                /* 03E0 */    0x25, 0x66, 0xE8, 0x14, 0xC4, 0x43, 0x77, 0xD0, 
                /* 03E8 */    0xA1, 0xA3, 0x8F, 0x03, 0x3E, 0x59, 0xE1, 0x82, 
                /* 03F0 */    0x1D, 0xBE, 0xA0, 0x4D, 0xEE, 0x68, 0x4F, 0xCC, 
                /* 03F8 */    0xB3, 0xF0, 0x3C, 0x71, 0x73, 0x07, 0xD3, 0x11, 
                /* 0400 */    0x09, 0xC6, 0xE0, 0x31, 0x93, 0x07, 0xB3, 0xC0, 
                /* 0408 */    0xC9, 0x83, 0xE2, 0xFF, 0x3F, 0x79, 0x98, 0xF0, 
                /* 0410 */    0x98, 0xB0, 0x87, 0x43, 0x7A, 0xE8, 0xF0, 0xC8, 
                /* 0418 */    0xF8, 0x38, 0x7D, 0xFA, 0x61, 0xD8, 0xA7, 0x73, 
                /* 0420 */    0x2E, 0x45, 0xCF, 0x48, 0x57, 0x91, 0x67, 0x2E, 
                /* 0428 */    0x0C, 0xAC, 0x47, 0xCE, 0x61, 0x8D, 0x16, 0xF6, 
                /* 0430 */    0x80, 0x9F, 0x43, 0x7C, 0x87, 0xF1, 0x81, 0x87, 
                /* 0438 */    0xC1, 0xFA, 0xF4, 0x02, 0x8E, 0xE3, 0x17, 0xFC, 
                /* 0440 */    0xD3, 0x00, 0x78, 0x0E, 0x20, 0x1E, 0xC3, 0x0B, 
                /* 0448 */    0x08, 0x3F, 0xBE, 0xE8, 0xFC, 0x4B, 0x85, 0x2E, 
                /* 0450 */    0x4E, 0xF2, 0x60, 0x50, 0xA7, 0x29, 0xC0, 0xD5, 
                /* 0458 */    0xE9, 0x0D, 0x3C, 0x57, 0x7D, 0xDC, 0x59, 0x0A, 
                /* 0460 */    0xF7, 0xFF, 0x3F, 0x4B, 0xC1, 0x38, 0xFC, 0xFA, 
                /* 0468 */    0x02, 0xEF, 0xBB, 0x94, 0x11, 0x0E, 0xE4, 0x59, 
                /* 0470 */    0x0A, 0xEC, 0xB1, 0x9F, 0x21, 0x3A, 0x04, 0xF8, 
                /* 0478 */    0x2C, 0x05, 0xF0, 0xE3, 0xF5, 0xE1, 0xF3, 0x0C, 
                /* 0480 */    0xDC, 0xC0, 0xA7, 0x5F, 0xA0, 0xF5, 0xFF, 0x3F, 
                /* 0488 */    0x85, 0x80, 0xFF, 0x18, 0xE1, 0x23, 0x0E, 0xEE, 
                /* 0490 */    0xE8, 0x0B, 0xDC, 0x0E, 0xC6, 0xFC, 0x8C, 0x81, 
                /* 0498 */    0x3B, 0x8E, 0x01, 0x8F, 0x93, 0x33, 0xEE, 0x34, 
                /* 04A0 */    0xE1, 0x21, 0xF0, 0x01, 0xB4, 0x3A, 0x3D, 0x72, 
                /* 04A8 */    0xEA, 0x39, 0x25, 0xDC, 0x71, 0x80, 0x4F, 0x09, 
                /* 04B0 */    0x37, 0x00, 0x4C, 0x80, 0x33, 0x26, 0xA0, 0xEA, 
                /* 04B8 */    0xFF, 0x7F, 0xC6, 0x04, 0xC6, 0x20, 0x11, 0xDE, 
                /* 04C0 */    0x15, 0xA2, 0xBE, 0x23, 0x1B, 0xE2, 0x19, 0x99, 
                /* 04C8 */    0xE1, 0xBC, 0x35, 0x3C, 0xBE, 0x3C, 0x23, 0x83, 
                /* 04D0 */    0xF3, 0x8C, 0x09, 0xF0, 0xE7, 0xFF, 0x7F, 0xA4, 
                /* 04D8 */    0xC7, 0xDE, 0x14, 0x82, 0x3F, 0x85, 0x00, 0x13, 
                /* 04E0 */    0xF1, 0x67, 0x4C, 0x2A, 0xFC, 0x8C, 0x09, 0x6D, 
                /* 04E8 */    0x2E, 0x9E, 0xB6, 0xCF, 0x98, 0x00, 0xF7, 0xFE, 
                /* 04F0 */    0xFF, 0x67, 0x4C, 0xC0, 0x77, 0xE4, 0x33, 0x26, 
                /* 04F8 */    0xA0, 0xE7, 0x48, 0x85, 0x3B, 0x63, 0x82, 0x61, 
                /* 0500 */    0x9C, 0xEF, 0x4F, 0x06, 0x79, 0x5E, 0xF2, 0x81, 
                /* 0508 */    0xC0, 0x47, 0x19, 0x16, 0xE3, 0x8C, 0x49, 0xCF, 
                /* 0510 */    0x3D, 0x16, 0x0E, 0x83, 0x3A, 0x50, 0xC1, 0xF9, 
                /* 0518 */    0xFF, 0x1F, 0xA8, 0x00, 0x2F, 0x01, 0x86, 0x0C, 
                /* 0520 */    0x9A, 0x03, 0xC3, 0x19, 0x9C, 0x42, 0xB4, 0x08, 
                /* 0528 */    0x67, 0x7C, 0xC0, 0x31, 0x5E, 0x09, 0x8C, 0x12, 
                /* 0530 */    0xF0, 0xBC, 0x0D, 0x11, 0xF5, 0xA8, 0x7C, 0x81, 
                /* 0538 */    0x30, 0x48, 0xA0, 0x77, 0x03, 0xDF, 0x13, 0x38, 
                /* 0540 */    0xB0, 0x27, 0x60, 0x8C, 0x78, 0x21, 0x82, 0x3E, 
                /* 0548 */    0x5F, 0xF9, 0xBC, 0x14, 0xE3, 0x05, 0xE0, 0xA8, 
                /* 0550 */    0xD8, 0x09, 0x0B, 0xF6, 0x41, 0xE2, 0xC5, 0xD3, 
                /* 0558 */    0xE3, 0x39, 0xB7, 0xE7, 0x8D, 0xA7, 0x98, 0x20, 
                /* 0560 */    0x6F, 0x56, 0x8F, 0x19, 0xCF, 0x12, 0x2F, 0x9C, 
                /* 0568 */    0x3E, 0x61, 0x71, 0x14, 0x1F, 0xAE, 0x0C, 0xF5, 
                /* 0570 */    0xA2, 0x65, 0xC4, 0xB3, 0x0C, 0xF2, 0xE8, 0x69, 
                /* 0578 */    0x90, 0x68, 0xC1, 0x8C, 0xC0, 0x4E, 0x58, 0x2C, 
                /* 0580 */    0xEA, 0xE3, 0x44, 0xA7, 0x0A, 0x9F, 0xB0, 0x80, 
                /* 0588 */    0xF3, 0xFF, 0xFF, 0x84, 0x05, 0xB8, 0x92, 0x73, 
                /* 0590 */    0xC2, 0x90, 0x91, 0x23, 0x14, 0x3D, 0xE5, 0x70, 
                /* 0598 */    0xDC, 0x37, 0x12, 0x1F, 0x10, 0x12, 0x38, 0xFE, 
                /* 05A0 */    0xC1, 0x88, 0x9E, 0x3C, 0x81, 0xE7, 0xD9, 0x04, 
                /* 05A8 */    0x3C, 0x23, 0x7B, 0x9A, 0x78, 0xA4, 0xF0, 0x8C, 
                /* 05B0 */    0x9E, 0x36, 0x3C, 0x8B, 0x77, 0x00, 0x5F, 0x7D, 
                /* 05B8 */    0xC2, 0x3D, 0xFB, 0xC0, 0x19, 0xF0, 0x3B, 0xC0, 
                /* 05C0 */    0x03, 0x80, 0x61, 0x7C, 0x3A, 0xC3, 0x0F, 0x1C, 
                /* 05C8 */    0x7F, 0xA9, 0xF0, 0x7D, 0xC6, 0xA7, 0x20, 0x9F, 
                /* 05D0 */    0xCE, 0x70, 0x07, 0x35, 0x98, 0x67, 0x15, 0x43, 
                /* 05D8 */    0x1D, 0x14, 0xEE, 0xFF, 0x3F, 0xA8, 0x27, 0xD2, 
                /* 05E0 */    0x43, 0x88, 0xE3, 0xCB, 0x83, 0xCF, 0x6B, 0xC0, 
                /* 05E8 */    0xE4, 0x30, 0x84, 0x78, 0x98, 0xF9, 0x40, 0x43, 
                /* 05F0 */    0xC5, 0x2E, 0x95, 0x9E, 0x69, 0x00, 0x6E, 0x8D, 
                /* 05F8 */    0xEB, 0x99, 0x06, 0x6C, 0xFF, 0xFF, 0x33, 0x0D, 
                /* 0600 */    0x3E, 0xDE, 0x21, 0x14, 0xA0, 0xC9, 0xF1, 0xE1, 
                /* 0608 */    0x61, 0x04, 0x4C, 0xC7, 0x82, 0xD0, 0x46, 0x7A, 
                /* 0610 */    0x61, 0xF0, 0xA9, 0xC1, 0x90, 0xEF, 0x0A, 0x1E, 
                /* 0618 */    0xA3, 0x27, 0xE1, 0xC3, 0x28, 0x50, 0xF1, 0x30, 
                /* 0620 */    0x56, 0x96, 0xED, 0x30, 0x8A, 0x3A, 0x14, 0x38, 
                /* 0628 */    0x0F, 0x95, 0x6E, 0xD8, 0x0F, 0x15, 0xC6, 0x3E, 
                /* 0630 */    0x86, 0xC7, 0x09, 0x8F, 0xE1, 0x24, 0x22, 0x1D, 
                /* 0638 */    0x96, 0xFF, 0xFF, 0x63, 0x74, 0x82, 0x03, 0x29, 
                /* 0640 */    0x4A, 0x3B, 0x85, 0x94, 0x1D, 0x23, 0x51, 0x5A, 
                /* 0648 */    0x8E, 0x91, 0x14, 0xC4, 0xC7, 0x48, 0xAE, 0xE4, 
                /* 0650 */    0x34, 0x80, 0xD2, 0x71, 0xEC, 0x21, 0xE3, 0xC4, 
                /* 0658 */    0x10, 0xCC, 0x75, 0x22, 0x85, 0x3E, 0x9B, 0xB7, 
                /* 0660 */    0x48, 0xF0, 0xCC, 0xCB, 0x87, 0x8B, 0xE3, 0xC0, 
                /* 0668 */    0x6C, 0xF2, 0x05, 0x13, 0x73, 0x2A, 0x85, 0x39, 
                /* 0670 */    0xEF, 0xB7, 0x1F, 0xB0, 0x9C, 0x37, 0xDE, 0x59, 
                /* 0678 */    0x7D, 0x25, 0x05, 0x16, 0x02, 0x27, 0x8F, 0x92, 
                /* 0680 */    0x34, 0x79, 0x0A, 0xE2, 0xC9, 0x3B, 0xEE, 0xE4, 
                /* 0688 */    0xD1, 0x33, 0xF1, 0xE4, 0xB1, 0x04, 0xC3, 0xDD, 
                /* 0690 */    0x49, 0x41, 0x71, 0x73, 0xC0, 0x0F, 0x1F, 0xAC, 
                /* 0698 */    0x97, 0x29, 0xFC, 0xFF, 0xFF, 0x5E, 0x8A, 0xBD, 
                /* 06A0 */    0x71, 0xC0, 0x1F, 0x3F, 0xF6, 0x56, 0x0A, 0x4C, 
                /* 06A8 */    0x24, 0x8C, 0x5D, 0xB7, 0x52, 0xC0, 0x0D, 0xAA, 
                /* 06B0 */    0xCF, 0x03, 0xE0, 0xB8, 0x87, 0xB0, 0xD3, 0x92, 
                /* 06B8 */    0x2F, 0x62, 0x06, 0x89, 0xF8, 0xAA, 0xC2, 0x06, 
                /* 06C0 */    0xC5, 0x8E, 0x4A, 0xEC, 0xBA, 0xF6, 0xA8, 0x04, 
                /* 06C8 */    0x2B, 0xDD, 0xED, 0x04, 0x35, 0x12, 0xA7, 0x79, 
                /* 06D0 */    0x3F, 0x68, 0xEA, 0xAF, 0x00, 0x2F, 0x27, 0xC0, 
                /* 06D8 */    0xEE, 0xFF, 0x7F, 0x39, 0x01, 0xF8, 0xFF, 0xFF, 
                /* 06E0 */    0xBF, 0x9C, 0x80, 0x57, 0xC6, 0xE5, 0x04, 0x74, 
                /* 06E8 */    0xC7, 0x00, 0x5F, 0x4E, 0x80, 0xEB, 0xE9, 0x0F, 
                /* 06F0 */    0x77, 0x1E, 0x80, 0x3B, 0xCC, 0x53, 0xF3, 0xCC, 
                /* 06F8 */    0x83, 0x3D, 0x10, 0xFA, 0x78, 0x02, 0x4E, 0x82, 
                /* 0700 */    0x0A, 0x6D, 0xFA, 0xD4, 0x68, 0xD4, 0xAA, 0x41, 
                /* 0708 */    0x99, 0x1A, 0x65, 0x1A, 0xD4, 0xEA, 0x53, 0xA9, 
                /* 0710 */    0x31, 0x63, 0x86, 0xC6, 0xE3, 0x55, 0x6B, 0xD8, 
                /* 0718 */    0x0E, 0xB5, 0x72, 0x81, 0x58, 0xD2, 0x67, 0x43, 
                /* 0720 */    0x20, 0x16, 0x75, 0x32, 0x13, 0x88, 0xE3, 0x9A, 
                /* 0728 */    0x00, 0x61, 0xC2, 0xD7, 0x27, 0x10, 0xC7, 0x06, 
                /* 0730 */    0xA1, 0x62, 0xFF, 0x25, 0x32, 0x32, 0x58, 0x83, 
                /* 0738 */    0x08, 0xC8, 0x21, 0x7C, 0x00, 0xB1, 0x48, 0x20, 
                /* 0740 */    0x02, 0x27, 0xCF, 0x0A, 0x81, 0x12, 0x27, 0x20, 
                /* 0748 */    0x4C, 0xE8, 0x73, 0x53, 0x20, 0x96, 0xE7, 0x05, 
                /* 0750 */    0x84, 0x85, 0x03, 0xA1, 0x92, 0xCC, 0x80, 0x33, 
                /* 0758 */    0x7D, 0x20, 0x02, 0xB2, 0xD4, 0xFF, 0x88, 0x80, 
                /* 0760 */    0x2C, 0x1C, 0x44, 0x87, 0x03, 0xA2, 0x07, 0x84, 
                /* 0768 */    0xFD, 0xFF, 0xE5, 0x83, 0xD0, 0x38, 0x7E, 0x40, 
                /* 0770 */    0x58, 0x0C, 0x45, 0x20, 0x4C, 0x84, 0xA3, 0x41, 
                /* 0778 */    0xD0, 0x27, 0xA9, 0xC0, 0x9D, 0x14, 0x44, 0x40, 
                /* 0780 */    0x4E, 0x6E, 0x09, 0x88, 0xE9, 0xD0, 0x04, 0xC4, 
                /* 0788 */    0x54, 0xBF, 0x85, 0x05, 0xE4, 0x08, 0x20, 0x02, 
                /* 0790 */    0x72, 0x24, 0x53, 0x40, 0x2C, 0x20, 0x88, 0x80, 
                /* 0798 */    0xFC, 0xFF, 0x07
            })
        }

        Mutex (PSMX, 0x00)
        Method (PHWM, 2, NotSerialized)
        {
            Acquire (PSMX, 0xFFFF)
            Store ("QSET", WCMD)
            Store (Arg1, WDID)
            Store (Arg0, WBUF)
            Store (WSMI, SMII)
            Name (RETB, Buffer (0x1000) {})
            Store (WBUF, RETB)
            Release (PSMX)
            Return (RETB)
        }
    }

    Scope (\)
    {
        Method (WMIA, 1, NotSerialized)
        {
            \_SB.AMW0.WMI4 (Arg0)
            Notify (\_SB.AMW0, 0xD0)
        }
    }

    Scope (_TZ)
    {
        ThermalZone (THM)
        {
            Method (_CRT, 0, NotSerialized)
            {
                Store (GINF (0x12), Local0)
                Return (Local0)
            }

            Method (_TMP, 0, NotSerialized)
            {
                If (LEqual (THML, One))
                {
                    Store (GINF (0x12), Local0)
                    Add (Local0, One, Local0)
                }
                Else
                {
                    Store (GINT (0x04), Local0)
                }

                Return (Local0)
            }

            Method (GINF, 1, NotSerialized)
            {
                SX10 ()
                SX30 (Arg0)
                SX11 ()
                Store (SX41 (), Local0)
                SX12 ()
                If (LLess (Local0, 0x0DF4))
                {
                    Store (0x0DF4, Local0)
                }

                Return (Local0)
            }

            Method (GINT, 1, NotSerialized)
            {
                SX10 ()
                SX30 (Arg0)
                SX11 ()
                Store (SX41 (), Local0)
                SX12 ()
                If (LLess (Local0, 0x0BA6))
                {
                    Store (0x0BA6, Local0)
                }

                Return (Local0)
            }
        }
    }

    Name (W98S, "Microsoft Windows")
    Name (NT5S, "Microsoft Windows NT")
    Name (WINM, "Microsoft WindowsME: Millennium Edition")
    Name (WXP, "Windows 2001")
    Name (WLG, "Windows 2006")
    Name (WIN7, "Windows 2009")
    Name (LNX, "Linux")
    Method (GETZ, 2, NotSerialized)
    {
        CreateByteField (Arg0, Arg1, TCHR)
        Return (TCHR)
    }

    Method (STRE, 2, NotSerialized)
    {
        Name (STR1, Buffer (0x50) {})
        Name (STR2, Buffer (0x50) {})
        Store (Arg0, STR1)
        Store (Arg1, STR2)
        Store (Zero, Local0)
        Store (One, Local1)
        While (Local1)
        {
            Store (GETZ (STR1, Local0), Local1)
            Store (GETZ (STR2, Local0), Local2)
            If (LNotEqual (Local1, Local2))
            {
                Return (Zero)
            }

            Increment (Local0)
        }

        Return (One)
    }

    Method (OSID, 0, NotSerialized)
    {
        If (LEqual (MIS3, Zero))
        {
            Store (One, MIS3)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI (WXP))
                {
                    Store (0x10, MIS3)
                }

                If (_OSI (WLG))
                {
                    Store (0x20, MIS3)
                }

                If (_OSI (WIN7))
                {
                    Store (0x80, MIS3)
                }

                If (_OSI (LNX))
                {
                    Store (0x40, MIS3)
                }
            }
            Else
            {
                If (STRE (_OS, W98S))
                {
                    Store (0x02, MIS3)
                }

                If (STRE (_OS, NT5S))
                {
                    Store (0x08, MIS3)
                }

                If (STRE (_OS, WINM))
                {
                    Store (0x04, MIS3)
                }
            }
        }

        Store (MIS3, OSYS)
        Return (MIS3)
    }

    Method (SOST, 0, NotSerialized)
    {
        SX10 ()
        SX30 (0x0A)
        OSID ()
        SX30 (MIS3)
        SX11 ()
        SX12 ()
    }

    Scope (_SB)
    {
        Method (_INI, 0, NotSerialized)
        {
            Store (SMI (0x98, Zero), MIS0)
            And (MIS0, 0x13, MIS0)
            SOST ()
        }
    }

    Scope (_SB)
    {
        OperationRegion (SMI1, SystemIO, SMIP, 0x02)
        Field (SMI1, ByteAcc, NoLock, Preserve)
        {
            SSMI,   8
        }

        Mutex (MUTE, 0x00)
        Method (ESWI, 1, NotSerialized)
        {
            Acquire (MUTE, 0xFFFF)
            Store (Arg0, ECMD)
            Store (0xEC, SSMI)
            Release (MUTE)
        }
    }

    Scope (_SB)
    {
        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, One)
            Name (_PCL, Package (0x01)
            {
                _SB
            })
            Method (_STA, 0, NotSerialized)
            {
                And (MIS0, 0x02, Local0)
                If (Local0)
                {
                    Return (0x1F)
                }

                Return (0x0F)
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BIF0, Package (0x0D) {})
                ECG9 (One, BIF0)
                Return (BIF0)
            }

            Method (_BST, 0, NotSerialized)
            {
                Name (BST0, Package (0x04) {})
                ECG6 (One, BST0)
                Return (BST0)
            }
        }
    }

    Scope (_SB)
    {
        Device (AC)
        {
            Name (_HID, "ACPI0003")
            Name (_PCL, Package (0x01)
            {
                BAT0
            })
            Method (_PSR, 0, NotSerialized)
            {
                And (MIS0, One, Local0)
                Return (Local0)
            }

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

    Scope (_SB)
    {
        Device (LID0)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Method (_LID, 0, NotSerialized)
            {
                Store (ECG3 (), Local0)
                Return (Local0)
            }

            Name (_PRW, Package (0x02)
            {
                0x17, 
                0x03
            })
            Method (_PSW, 1, NotSerialized)
            {
                PSW (Arg0, 0x02)
            }
        }

        Device (SBTN)
        {
            Name (_HID, EisaId ("PNP0C0E"))
        }
    }

    Method (ECG1, 0, NotSerialized)
    {
        SX10 ()
        SX30 (0x1C)
        SX11 ()
        Store (SX41 (), Local0)
        SX12 ()
        Return (Local0)
    }

    Method (ECG7, 0, NotSerialized)
    {
        Return (SMI (0x89, Zero))
    }

    Method (ECG3, 0, NotSerialized)
    {
        Return (SMI (0x84, Zero))
    }

    Method (ECG4, 0, NotSerialized)
    {
        Return (Zero)
    }

    Method (ECG5, 0, NotSerialized)
    {
        Return (SMI (0x98, Zero))
    }

    Method (ECG6, 2, NotSerialized)
    {
        SX10 ()
        SX30 (0x02)
        SX30 (Arg0)
        SX11 ()
        Store (SX42 (), Index (Arg1, Zero))
        Store (SX42 (), Index (Arg1, One))
        Store (SX42 (), Index (Arg1, 0x02))
        Store (SX42 (), Index (Arg1, 0x03))
        SX12 ()
    }

    Method (ECG9, 2, NotSerialized)
    {
        SX10 ()
        SX30 (One)
        SX30 (Arg0)
        SX11 ()
        Store (SX42 (), Index (Arg1, Zero))
        Store (SX42 (), Index (Arg1, One))
        Store (SX42 (), Index (Arg1, 0x02))
        Store (SX42 (), Index (Arg1, 0x03))
        Store (SX42 (), Index (Arg1, 0x04))
        Store (SX42 (), Index (Arg1, 0x05))
        Store (SX42 (), Index (Arg1, 0x06))
        Store (SX42 (), Index (Arg1, 0x07))
        Store (SX42 (), Index (Arg1, 0x08))
        Store (SX45 (), Index (Arg1, 0x09))
        Store (SX45 (), Index (Arg1, 0x0A))
        Store (SX45 (), Index (Arg1, 0x0B))
        Store (SX45 (), Index (Arg1, 0x0C))
        SX12 ()
    }

    Name (_S0, Package (0x04)
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    If (SS3)
    {
        Name (_S3, Package (0x04)
        {
            0x05, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS4)
    {
        Name (_S4, Package (0x04)
        {
            0x06, 
            Zero, 
            Zero, 
            Zero
        })
    }

    Name (_S5, Package (0x04)
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.PCI0.SBRG.SPTS (Arg0)
            \_SB.PCI0.PEX0.SPRT (Arg0)
            \_SB.PCI0.PEX1.SPRT (Arg0)
            \_SB.PCI0.PEX2.SPRT (Arg0)
            \_SB.PCI0.PEX3.SPRT (Arg0)
            \_SB.PCI0.PEX4.SPRT (Arg0)
            \_SB.PCI0.PEX5.SPRT (Arg0)
            \_SB.PCI0.PEX6.SPRT (Arg0)
            \_SB.PCI0.PEX7.SPRT (Arg0)
            \_SB.PCI0.GFX0.OPTS (Arg0)
            OPTS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        If (\_SB.PCI0.PEX0.PMS)
        {
            \_SB.PCI0.PEX0.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX0, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX0.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX1.PMS)
        {
            \_SB.PCI0.PEX1.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX1, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX1.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX2.PMS)
        {
            \_SB.PCI0.PEX2.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX2, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX2.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX3.PMS)
        {
            \_SB.PCI0.PEX3.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX3, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX3.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX4.PMS)
        {
            \_SB.PCI0.PEX4.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX4, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX4.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX5.PMS)
        {
            \_SB.PCI0.PEX5.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX5, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX5.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX6.PMS)
        {
            \_SB.PCI0.PEX6.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX6, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX6.WPRT (Arg0)
        }

        If (\_SB.PCI0.PEX7.PMS)
        {
            \_SB.PCI0.PEX7.WPRT (Arg0)
            Notify (\_SB.PCI0.PEX7, 0x02)
        }
        Else
        {
            \_SB.PCI0.PEX7.WPRT (Arg0)
        }

        \_SB.PCI0.GFX0.OWAK (Arg0)
        \_SB.PCI0.PEWK ()
        OWAK (Arg0)
    }
}


Follow ups

References