← Back to team overview

hybrid-graphics-linux team mailing list archive

Re: Dell Latitude E6420

 

I already tried the dell script (sorry, I forgot to mention). It does not work.

Here is my DSDT.dsl (I forgot to attach it before).

Let me know how may I help.

Ciao
  G.


On 15 April 2011 17:17, Sunil Mujumdar <sunil_mujumdar@xxxxxxxxx> wrote:
>
> Have you tried this version of the script written for Dell XPS laptops ? Let
> me know if it works.
>
> Sunil.
>
> ________________________________
> From: Gianpaolo Cugola <gianpaoloc@xxxxxxxxx>
> To: hybrid-graphics-linux@xxxxxxxxxxxxxxxxxxx
> Sent: Fri, April 15, 2011 5:36:08 AM
> Subject: [Hybrid-graphics-linux] Dell Latitude E6420
>
> The machine has an I7 2720QM cpu with the sandy bridge integrated
> graphics plus a Nvidia Quadro NVS4200M (optimus).
>
> The BIOS allows to disable Optimus. This way you loose access to the
> integrated card and may use the nvidia card (I use the latest
> proprietary drivers). The problem with this setup is power
> consumption. Much greater than in Windows. With Optimus enabled in
> BIOS you can use the intel X drivers (if you block nouveau and nvidia
> drivers) but the power consumption is still there (the nvidia card is
> on). Also there are some problems in switching from X to console. In
> summary, a lot of good reasons to disable the nvidia card :-)
>
> Unfortunately, the acpi_call method does not work. It returns "failed"
> for all tests.
>
> Here is the relevant data:
>
> sudo dmidecode -s system-product-name
> Latitude E6420
>
> sudo dmidecode -s system-version
> 01
>
> lspci -vnnn | perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA
> 00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd
> Generation Core Processor Family Integrated Graphics Controller
> [8086:0126] (rev 09) (prog-if 00 [VGA controller])
> 01:00.0 VGA compatible controller [0300]: nVidia Corporation Device
> [10de:1056] (rev a1) (prog-if 00 [VGA controller])
>
> In attachment the DSDT.dsl
>
> How may I help?
>
> G.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~hybrid-graphics-linux
> Post to    : hybrid-graphics-linux@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~hybrid-graphics-linux
> More help  : https://help.launchpad.net/ListHelp
>
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20100528
 *
 * Disassembly of DSDT.dat, Fri Apr 15 14:08:02 2011
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000089D5 (35285)
 *     Revision         0x02
 *     Checksum         0x80
 *     OEM ID           "INT430"
 *     OEM Table ID     "SYSFexxx"
 *     OEM Revision     0x00001001 (4097)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20090903 (537463043)
 */
DefinitionBlock ("DSDT.aml", "DSDT", 2, "INT430", "SYSFexxx", 0x00001001)
{
    External (HNOT, MethodObj)    // 1 Arguments
    External (EPTR)
    External (DPTR, IntObj)
    External (\_PR_.CPU0._PPC)
    External (\_SB_.PCI0.PEG0.VID_.LCD_)

    Method (BCLR, 1, NotSerialized)
    {
        Store (0x00, Local0)
        While (LLess (Local0, SizeOf (Arg0)))
        {
            BBWR (Arg0, Local0, 0x00)
            Increment (Local0)
        }
    }

    Method (BBWR, 3, NotSerialized)
    {
        CreateByteField (Arg0, Arg1, VAL)
        Store (Arg2, VAL)
    }

    Method (BBRD, 2, NotSerialized)
    {
        CreateByteField (Arg0, Arg1, VAL)
        Return (VAL)
    }

    Method (BWWR, 3, NotSerialized)
    {
        CreateWordField (Arg0, Arg1, VAL)
        Store (Arg2, VAL)
    }

    Method (BWRD, 2, NotSerialized)
    {
        CreateWordField (Arg0, Arg1, VAL)
        Return (VAL)
    }

    Method (BDWR, 3, NotSerialized)
    {
        CreateDWordField (Arg0, Arg1, VAL)
        Store (Arg2, VAL)
    }

    Method (BDRD, 2, NotSerialized)
    {
        CreateDWordField (Arg0, Arg1, VAL)
        Return (VAL)
    }

    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 (BBRD (STR1, Local0), Local1)
            Store (BBRD (STR2, Local0), Local2)
            If (LNotEqual (Local1, Local2))
            {
                Return (Zero)
            }

            Increment (Local0)
        }

        Return (One)
    }

    Method (XPTB, 1, NotSerialized)
    {
        Store (SizeOf (Arg0), Local0)
        If (LEqual (ObjectType (Arg0), 0x02))
        {
            Increment (Local0)
        }

        Name (OBUF, Buffer (Local0) {})
        Store (Arg0, OBUF)
        If (LEqual (ObjectType (Arg0), 0x02))
        {
            Decrement (Local0)
            Store (0x00, Index (OBUF, Local0))
        }

        Return (OBUF)
    }

    Method (STDG, 3, NotSerialized)
    {
        Store (Arg0, Local0)
        If (LGreaterEqual (Arg0, 0x0A))
        {
            Divide (Arg0, 0x0A, Local0, Local1)
            Store (STDG (Local1, Arg1, Arg2), Arg2)
        }

        Add (Local0, 0x30, Local0)
        Store (Local0, Index (Arg1, Arg2))
        Increment (Arg2)
        Return (Arg2)
    }

    Method (XPTS, 1, NotSerialized)
    {
        Name (LBUF, Buffer (0x20) {})
        Store (STDG (Arg0, LBUF, 0x00), Local0)
        Store (0x00, Index (LBUF, Local0))
        Increment (Local0)
        Name (OBUF, Buffer (Local0) {})
        Store (LBUF, OBUF)
        Return (OBUF)
    }

    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 (LINX, "Linux")
    Scope (\_SB)
    {
        Name (ACOS, 0x00)
        Method (OSID, 0, NotSerialized)
        {
            If (LEqual (ACOS, 0x00))
            {
                Store (0x01, ACOS)
                If (CondRefOf (\_OSI, Local0))
                {
                    If (\_OSI (WXP))
                    {
                        Store (0x10, ACOS)
                    }

                    If (\_OSI (WLG))
                    {
                        Store (0x20, ACOS)
                    }

                    If (\_OSI (WIN7))
                    {
                        Store (0x80, ACOS)
                    }

                    If (\_OSI (LINX))
                    {
                        Store (0x40, ACOS)
                    }
                }
                Else
                {
                    If (STRE (\_OS, W98S))
                    {
                        Store (0x02, ACOS)
                    }

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

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

            Return (ACOS)
        }

        Method (STOS, 0, NotSerialized)
        {
            OSID ()
            GENS (0x06, ACOS, 0x00)
        }

        Method (SOS0, 2, NotSerialized)
        {
            STOS ()
        }

        Method (SOS4, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x04))
            {
                STOS ()
            }
        }
    }

    Name (SS1, 0x00)
    Name (SS2, 0x00)
    Name (SS3, 0x00)
    Name (SS4, 0x00)
    Name (IOST, 0x4400)
    Name (TOPM, 0xBF9FFFFF)
    Name (ROMS, 0xFFE00000)
    Name (MG1B, 0x00000000)
    Name (MG1L, 0x00000000)
    Name (MG2B, 0xBFA00000)
    Name (MG2L, 0x3CE0C000)
    Name (MCHB, 0xFED10000)
    Name (MCHL, 0x4000)
    Name (EGPB, 0xFED19000)
    Name (EGPL, 0x1000)
    Name (DMIB, 0xFED18000)
    Name (DMIL, 0x1000)
    Name (IFPB, 0xFED14000)
    Name (IFPL, 0x1000)
    Name (PEBS, 0xF8000000)
    Name (PELN, 0x04000000)
    Name (TTTB, 0xFED20000)
    Name (TTTL, 0x00020000)
    Name (PBLK, 0x0410)
    Name (PM30, 0x0430)
    Name (SRCB, 0xFED1C000)
    Name (SRCL, 0x4000)
    Name (SUSW, 0xFF)
    Name (FMBL, 0x01)
    Name (FDTP, 0x02)
    Name (FUPS, 0x03)
    Name (TCGM, 0x01)
    Name (SP3O, 0x2E)
    Name (SP1O, 0x094E)
    Name (IO2B, 0x0680)
    Name (ACPH, 0xDE)
    Name (ASSB, 0x00)
    Name (AOTB, 0x00)
    Name (AAXB, 0x00)
    Name (PEHP, 0x01)
    Name (SHPC, 0x01)
    Name (PEPM, 0x01)
    Name (PEER, 0x01)
    Name (PECS, 0x01)
    Name (ITKE, 0x00)
    Name (TRTP, 0x01)
    Name (TRTD, 0x02)
    Name (TRTI, 0x03)
    Name (GCDD, 0x01)
    Name (DSTA, 0x0A)
    Name (DSLO, 0x0C)
    Name (DSLC, 0x0E)
    Name (PITS, 0x10)
    Name (SBCS, 0x12)
    Name (SALS, 0x13)
    Name (LSSS, 0x2A)
    Name (SOOT, 0x35)
    Name (PDBR, 0x4D)
    OperationRegion (GNVS, SystemMemory, 0xBAF88E18, 0x01A8)
    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, 
        C67L,   8, 
        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, 
        MORD,   8, 
        TCGP,   8, 
        PPRP,   32, 
        PPRQ,   8, 
        LPPR,   8, 
        GTF0,   56, 
        GTF2,   56, 
        IDEM,   8, 
        GTF1,   56, 
        BID,    8, 
                Offset (0xA0), 
        TCMP,   8, 
        TCME,   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, 
        SBV1,   8, 
        SBV2,   8, 
                Offset (0xEB), 
        DSEN,   8, 
        ECON,   8, 
        GPIC,   8, 
        CTYP,   8, 
        L01C,   8, 
        VFN0,   8, 
        VFN1,   8, 
        VFN2,   8, 
        VFN3,   8, 
        VFN4,   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, 
        SGMD,   8, 
        SGFL,   8, 
        PWOK,   8, 
        HLRS,   8, 
        DSEL,   8, 
        ESEL,   8, 
        PSEL,   8, 
        PWEN,   8, 
        PRST,   8, 
        MXD1,   32, 
        MXD2,   32, 
        MXD3,   32, 
        MXD4,   32, 
        MXD5,   32, 
        MXD6,   32, 
        MXD7,   32, 
        MXD8,   32, 
        GBAS,   16, 
                Offset (0x19D), 
        ALFP,   8, 
        IMON,   8, 
        PDTS,   8, 
        PKGA,   8, 
        PAMT,   8, 
        AC0F,   8, 
        AC1F,   8, 
        DTS3,   8, 
        DTS4,   8, 
        PECI,   8
    }

    Scope (\_SB)
    {
        Name (PR00, Package (0x29)
        {
            Package (0x04)
            {
                0x001FFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x001FFFFF, 
                0x03, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x01, 
                LNKD, 
                0x00
            }, 

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

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

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

            Package (0x04)
            {
                0x001AFFFF, 
                0x01, 
                LNKF, 
                0x00
            }, 

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

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

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

            Package (0x04)
            {
                0x001BFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                0x02, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                0x03, 
                LNKD, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x0019FFFF, 
                0x01, 
                LNKF, 
                0x00
            }, 

            Package (0x04)
            {
                0x0019FFFF, 
                0x02, 
                LNKG, 
                0x00
            }, 

            Package (0x04)
            {
                0x0019FFFF, 
                0x03, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x0016FFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x0016FFFF, 
                0x03, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0x001CFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

            Package (0x04)
            {
                0x0006FFFF, 
                0x00, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x01, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x02, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x03, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x0004FFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0x0004FFFF, 
                0x03, 
                LNKD, 
                0x00
            }
        })
        Name (AR00, Package (0x29)
        {
            Package (0x04)
            {
                0x001FFFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

            Package (0x04)
            {
                0x001FFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0x001FFFFF, 
                0x03, 
                0x00, 
                0x13
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x00, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                0x01, 
                0x00, 
                0x13
            }, 

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

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

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

            Package (0x04)
            {
                0x001AFFFF, 
                0x01, 
                0x00, 
                0x15
            }, 

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

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

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

            Package (0x04)
            {
                0x001BFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                0x02, 
                0x00, 
                0x12
            }, 

            Package (0x04)
            {
                0x001BFFFF, 
                0x03, 
                0x00, 
                0x13
            }, 

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

            Package (0x04)
            {
                0x0019FFFF, 
                0x01, 
                0x00, 
                0x15
            }, 

            Package (0x04)
            {
                0x0019FFFF, 
                0x02, 
                0x00, 
                0x16
            }, 

            Package (0x04)
            {
                0x0019FFFF, 
                0x03, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0x0016FFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0x0016FFFF, 
                0x03, 
                0x00, 
                0x13
            }, 

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

            Package (0x04)
            {
                0x001CFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

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

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

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

            Package (0x04)
            {
                0x0006FFFF, 
                0x00, 
                0x00, 
                0x13
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x01, 
                0x00, 
                0x10
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x02, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0x0006FFFF, 
                0x03, 
                0x00, 
                0x12
            }, 

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

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

            Package (0x04)
            {
                0x0004FFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0x0004FFFF, 
                0x03, 
                0x00, 
                0x13
            }
        })
        Name (PR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                0x00
            }
        })
        Name (AR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x13
            }
        })
        Name (PR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKC, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                0x00
            }
        })
        Name (AR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x12
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x10
            }
        })
        Name (PR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKD, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                0x00
            }
        })
        Name (AR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x13
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x11
            }
        })
        Name (PR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKA, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (AR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x10
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x12
            }
        })
        Name (PR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                0x00
            }
        })
        Name (AR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x13
            }
        })
        Name (PR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKC, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                0x00
            }
        })
        Name (AR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x12
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x10
            }
        })
        Name (PR0A, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKC, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                0x00
            }
        })
        Name (AR0A, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x12
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x10
            }
        })
        Name (PR0B, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKD, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                0x00
            }
        })
        Name (AR0B, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x13
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x11
            }
        })
        Name (PR0E, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKD, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                0x00
            }
        })
        Name (AR0E, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x13
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x11
            }
        })
        Name (PR0F, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKA, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (AR0F, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x10
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x12
            }
        })
        Name (PR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKB, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                0x00
            }
        })
        Name (AR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x11
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x13
            }
        })
        Name (PR0C, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKD, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKA, 
                0x00
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (AR0C, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x10
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                0x00, 
                0x12
            }
        })
        Name (PR01, Package (0x0C)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKF, 
                0x00
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                LNKG, 
                0x00
            }, 

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

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

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

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

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

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

            Package (0x04)
            {
                0x0005FFFF, 
                0x00, 
                LNKC, 
                0x00
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x01, 
                LNKE, 
                0x00
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x02, 
                LNKG, 
                0x00
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x03, 
                LNKF, 
                0x00
            }
        })
        Name (AR01, Package (0x0C)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x15
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x01, 
                0x00, 
                0x16
            }, 

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

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

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

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

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

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

            Package (0x04)
            {
                0x0005FFFF, 
                0x00, 
                0x00, 
                0x12
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x01, 
                0x00, 
                0x14
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x02, 
                0x00, 
                0x16
            }, 

            Package (0x04)
            {
                0x0005FFFF, 
                0x03, 
                0x00, 
                0x15
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,6,7,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, 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, 0x00)
            Method (^BN00, 0, NotSerialized)
            {
                Return (0x00)
            }

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

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

                Return (PR00 ())
            }

            OperationRegion (HBUS, PCI_Config, 0x00, 0x0100)
            Field (HBUS, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x40), 
                EPEN,   1, 
                    ,   11, 
                EPBR,   20, 
                        Offset (0x48), 
                MHEN,   1, 
                    ,   14, 
                MHBR,   17, 
                        Offset (0x50), 
                GCLK,   1, 
                        Offset (0x54), 
                D0EN,   1, 
                        Offset (0x60), 
                PXEN,   1, 
                PXSZ,   2, 
                    ,   23, 
                PXBR,   6, 
                        Offset (0x68), 
                DIEN,   1, 
                    ,   11, 
                DIBR,   20, 
                        Offset (0x70), 
                    ,   20, 
                MEBR,   12, 
                        Offset (0x80), 
                    ,   4, 
                PM0H,   2, 
                        Offset (0x81), 
                PM1L,   2, 
                    ,   2, 
                PM1H,   2, 
                        Offset (0x82), 
                PM2L,   2, 
                    ,   2, 
                PM2H,   2, 
                        Offset (0x83), 
                PM3L,   2, 
                    ,   2, 
                PM3H,   2, 
                        Offset (0x84), 
                PM4L,   2, 
                    ,   2, 
                PM4H,   2, 
                        Offset (0x85), 
                PM5L,   2, 
                    ,   2, 
                PM5H,   2, 
                        Offset (0x86), 
                PM6L,   2, 
                    ,   2, 
                PM6H,   2, 
                        Offset (0x87), 
                        Offset (0xA8), 
                    ,   20, 
                TUUD,   19, 
                        Offset (0xBC), 
                    ,   20, 
                TLUD,   12, 
                        Offset (0xC8), 
                    ,   7, 
                HTSE,   1
            }

            OperationRegion (MCHT, SystemMemory, 0xFED10000, 0x1100)
            Field (MCHT, ByteAcc, NoLock, Preserve)
            {
            }

            Name (BUF0, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000CF7,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000CF8,         // Length
                    ,, , TypeStatic)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000D00,         // Range Minimum
                    0x0000FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0000F300,         // Length
                    ,, , 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
                    0x000C0000,         // Range Minimum
                    0x000C3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C4000,         // Range Minimum
                    0x000C7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000CBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000CC000,         // Range Minimum
                    0x000CFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D0000,         // Range Minimum
                    0x000D3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D4000,         // Range Minimum
                    0x000D7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D8000,         // Range Minimum
                    0x000DBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000DC000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E0000,         // Range Minimum
                    0x000E3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E4000,         // Range Minimum
                    0x000E7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E8000,         // Range Minimum
                    0x000EBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000EC000,         // Range Minimum
                    0x000EFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000F0000,         // Range Minimum
                    0x000FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00010000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFEAFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0xFEB00000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFED40000,         // Range Minimum
                    0xFED44FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00005000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, Serialized)
            {
                CreateWordField (BUF0, 0x0A, PBMX)
                Store (Subtract (ShiftRight (\PELN, 0x14), 0x02), PBMX)
                CreateWordField (BUF0, 0x0E, PBLN)
                Store (Subtract (ShiftRight (\PELN, 0x14), 0x01), PBLN)
                If (PM1L)
                {
                    CreateDWordField (BUF0, 0x7C, C0LN)
                    Store (Zero, C0LN)
                }

                If (LEqual (PM1L, 0x01))
                {
                    CreateBitField (BUF0, 0x0358, C0RW)
                    Store (Zero, C0RW)
                }

                If (PM1H)
                {
                    CreateDWordField (BUF0, 0x96, C4LN)
                    Store (Zero, C4LN)
                }

                If (LEqual (PM1H, 0x01))
                {
                    CreateBitField (BUF0, 0x0428, C4RW)
                    Store (Zero, C4RW)
                }

                If (PM2L)
                {
                    CreateDWordField (BUF0, 0xB0, C8LN)
                    Store (Zero, C8LN)
                }

                If (LEqual (PM2L, 0x01))
                {
                    CreateBitField (BUF0, 0x04F8, C8RW)
                    Store (Zero, C8RW)
                }

                If (PM2H)
                {
                    CreateDWordField (BUF0, 0xCA, CCLN)
                    Store (Zero, CCLN)
                }

                If (LEqual (PM2H, 0x01))
                {
                    CreateBitField (BUF0, 0x05C8, CCRW)
                    Store (Zero, CCRW)
                }

                If (PM3L)
                {
                    CreateDWordField (BUF0, 0xE4, D0LN)
                    Store (Zero, D0LN)
                }

                If (LEqual (PM3L, 0x01))
                {
                    CreateBitField (BUF0, 0x0698, D0RW)
                    Store (Zero, D0RW)
                }

                If (PM3H)
                {
                    CreateDWordField (BUF0, 0xFE, D4LN)
                    Store (Zero, D4LN)
                }

                If (LEqual (PM3H, 0x01))
                {
                    CreateBitField (BUF0, 0x0768, D4RW)
                    Store (Zero, D4RW)
                }

                If (PM4L)
                {
                    CreateDWordField (BUF0, 0x0118, D8LN)
                    Store (Zero, D8LN)
                }

                If (LEqual (PM4L, 0x01))
                {
                    CreateBitField (BUF0, 0x0838, D8RW)
                    Store (Zero, D8RW)
                }

                If (PM4H)
                {
                    CreateDWordField (BUF0, 0x0132, DCLN)
                    Store (Zero, DCLN)
                }

                If (LEqual (PM4H, 0x01))
                {
                    CreateBitField (BUF0, 0x0908, DCRW)
                    Store (Zero, DCRW)
                }

                If (PM5L)
                {
                    CreateDWordField (BUF0, 0x014C, E0LN)
                    Store (Zero, E0LN)
                }

                If (LEqual (PM5L, 0x01))
                {
                    CreateBitField (BUF0, 0x09D8, E0RW)
                    Store (Zero, E0RW)
                }

                If (PM5H)
                {
                    CreateDWordField (BUF0, 0x0166, E4LN)
                    Store (Zero, E4LN)
                }

                If (LEqual (PM5H, 0x01))
                {
                    CreateBitField (BUF0, 0x0AA8, E4RW)
                    Store (Zero, E4RW)
                }

                If (PM6L)
                {
                    CreateDWordField (BUF0, 0x0180, E8LN)
                    Store (Zero, E8LN)
                }

                If (LEqual (PM6L, 0x01))
                {
                    CreateBitField (BUF0, 0x0B78, E8RW)
                    Store (Zero, E8RW)
                }

                If (PM6H)
                {
                    CreateDWordField (BUF0, 0x019A, ECLN)
                    Store (Zero, ECLN)
                }

                If (LEqual (PM6H, 0x01))
                {
                    CreateBitField (BUF0, 0x0C48, ECRW)
                    Store (Zero, ECRW)
                }

                If (PM0H)
                {
                    CreateDWordField (BUF0, 0x01B4, F0LN)
                    Store (Zero, F0LN)
                }

                If (LEqual (PM0H, 0x01))
                {
                    CreateBitField (BUF0, 0x0D18, F0RW)
                    Store (Zero, F0RW)
                }

                CreateDWordField (BUF0, 0x01C2, M1MN)
                CreateDWordField (BUF0, 0x01C6, M1MX)
                CreateDWordField (BUF0, 0x01CE, M1LN)
                ShiftLeft (TLUD, 0x14, M1MN)
                Add (Subtract (M1MX, M1MN), 0x01, M1LN)
                Return (BUF0)
            }

            Name (GUID, Buffer (0x10)
            {
                /* 0000 */    0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40, 
                /* 0008 */    0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
            })
            Name (SUPP, 0x00)
            Name (CTRL, 0x00)
            Method (_OSC, 4, Serialized)
            {
                Store (Arg3, Local0)
                CreateDWordField (Local0, 0x00, CDW1)
                CreateDWordField (Local0, 0x04, CDW2)
                CreateDWordField (Local0, 0x08, CDW3)
                If (LAnd (LEqual (Arg0, GUID), NEXP))
                {
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    If (Not (And (CDW1, 0x01)))
                    {
                        If (And (CTRL, 0x01))
                        {
                            NHPG ()
                        }

                        If (And (CTRL, 0x04))
                        {
                            NPME ()
                        }
                    }

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

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

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

            Scope (\_SB.PCI0)
            {
                Method (AR00, 0, NotSerialized)
                {
                    Return (\_SB.AR00)
                }

                Method (PR00, 0, NotSerialized)
                {
                    Return (\_SB.PR00)
                }

                Method (AR01, 0, NotSerialized)
                {
                    Return (\_SB.AR01)
                }

                Method (PR01, 0, NotSerialized)
                {
                    Return (\_SB.PR01)
                }

                Method (AR02, 0, NotSerialized)
                {
                    Return (\_SB.AR02)
                }

                Method (PR02, 0, NotSerialized)
                {
                    Return (\_SB.PR02)
                }

                Method (AR04, 0, NotSerialized)
                {
                    Return (\_SB.AR04)
                }

                Method (PR04, 0, NotSerialized)
                {
                    Return (\_SB.PR04)
                }

                Method (AR05, 0, NotSerialized)
                {
                    Return (\_SB.AR05)
                }

                Method (PR05, 0, NotSerialized)
                {
                    Return (\_SB.PR05)
                }

                Method (AR06, 0, NotSerialized)
                {
                    Return (\_SB.AR06)
                }

                Method (PR06, 0, NotSerialized)
                {
                    Return (\_SB.PR06)
                }

                Method (AR07, 0, NotSerialized)
                {
                    Return (\_SB.AR07)
                }

                Method (PR07, 0, NotSerialized)
                {
                    Return (\_SB.PR07)
                }

                Method (AR08, 0, NotSerialized)
                {
                    Return (\_SB.AR08)
                }

                Method (PR08, 0, NotSerialized)
                {
                    Return (\_SB.PR08)
                }

                Method (AR09, 0, NotSerialized)
                {
                    Return (\_SB.AR09)
                }

                Method (PR09, 0, NotSerialized)
                {
                    Return (\_SB.PR09)
                }

                Method (AR0A, 0, NotSerialized)
                {
                    Return (\_SB.AR0A)
                }

                Method (PR0A, 0, NotSerialized)
                {
                    Return (\_SB.PR0A)
                }

                Method (AR0B, 0, NotSerialized)
                {
                    Return (\_SB.AR0B)
                }

                Method (PR0B, 0, NotSerialized)
                {
                    Return (\_SB.PR0B)
                }
            }

            Device (P0P1)
            {
                Name (_ADR, 0x001E0000)
                Method (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR01 ())
                    }

                    Return (PR01 ())
                }
            }

            Device (LPCB)
            {
                Name (_ADR, 0x001F0000)
                Scope (\_SB)
                {
                    OperationRegion (\_SB.PCI0.LPCB.LPC1, PCI_Config, 0x40, 0xC0)
                    Field (\_SB.PCI0.LPCB.LPC1, AnyAcc, NoLock, Preserve)
                    {
                                Offset (0x20), 
                        PARC,   8, 
                        PBRC,   8, 
                        PCRC,   8, 
                        PDRC,   8, 
                                Offset (0x28), 
                        PERC,   8, 
                        PFRC,   8, 
                        PGRC,   8, 
                        PHRC,   8
                    }

                    Device (LNKA)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x01)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PARC, 0x80, PARC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,10,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLA, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLA, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PARC, 0x0F), IRQ0)
                            Return (RTLA)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PARC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PARC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKB)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x02)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PBRC, 0x80, PBRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,11,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLB, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLB, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PBRC, 0x0F), IRQ0)
                            Return (RTLB)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PBRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PBRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKC)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x03)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PCRC, 0x80, PCRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,10,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLC, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLC, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PCRC, 0x0F), IRQ0)
                            Return (RTLC)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PCRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PCRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKD)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x04)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PDRC, 0x80, PDRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,11,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLD, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLD, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PDRC, 0x0F), IRQ0)
                            Return (RTLD)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PDRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PDRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKE)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x05)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PERC, 0x80, PERC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,10,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLE, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLE, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PERC, 0x0F), IRQ0)
                            Return (RTLE)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PERC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PERC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKF)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x06)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PFRC, 0x80, PFRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,11,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLF, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLF, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PFRC, 0x0F), IRQ0)
                            Return (RTLF)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PFRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PFRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKG)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x07)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PGRC, 0x80, PGRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,10,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLG, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLG, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PGRC, 0x0F), IRQ0)
                            Return (RTLG)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PGRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PGRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKH)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x08)
                        Method (_DIS, 0, Serialized)
                        {
                            Or (PHRC, 0x80, PHRC)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {1,3,4,5,6,7,11,12,14,15}
                        })
                        Method (_CRS, 0, Serialized)
                        {
                            Name (RTLH, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLH, 0x01, IRQ0)
                            Store (Zero, IRQ0)
                            ShiftLeft (0x01, And (PHRC, 0x0F), IRQ0)
                            Return (RTLH)
                        }

                        Method (_SRS, 1, Serialized)
                        {
                            CreateWordField (Arg0, 0x01, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Decrement (Local0)
                            Store (Local0, PHRC)
                        }

                        Method (_STA, 0, Serialized)
                        {
                            If (And (PHRC, 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }
                }

                OperationRegion (LPC0, PCI_Config, 0x40, 0xC0)
                Field (LPC0, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x40), 
                    IOD0,   8, 
                    IOD1,   8, 
                            Offset (0xB0), 
                    RAEN,   1, 
                        ,   13, 
                    RCBA,   18
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x01,               // Alignment
                            0x11,               // Length
                            )
                        IO (Decode16,
                            0x0093,             // Range Minimum
                            0x0093,             // Range Maximum
                            0x01,               // Alignment
                            0x0D,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8_16, )
                            {4}
                    })
                }

                Device (FWHD)
                {
                    Name (_HID, EisaId ("INT0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFF000000,         // Address Base
                            0x01000000,         // Address Length
                            )
                    })
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Name (_CID, EisaId ("PNP0C01"))
                    Name (BUF0, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            )
                    })
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LGreaterEqual (OSYS, 0x07D1))
                        {
                            If (HPAE)
                            {
                                Return (0x0F)
                            }
                        }
                        Else
                        {
                            If (HPAE)
                            {
                                Return (0x0B)
                            }
                        }

                        Return (0x00)
                    }

                    Method (_CRS, 0, Serialized)
                    {
                        If (HPAE)
                        {
                            CreateDWordField (BUF0, 0x04, HPT0)
                            If (LEqual (HPAS, 0x01))
                            {
                                Store (0xFED01000, HPT0)
                            }

                            If (LEqual (HPAS, 0x02))
                            {
                                Store (0xFED02000, HPT0)
                            }

                            If (LEqual (HPAS, 0x03))
                            {
                                Store (0xFED03000, HPT0)
                            }
                        }

                        Return (BUF0)
                    }
                }

                Device (IPIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0024,             // Range Minimum
                            0x0024,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0028,             // Range Minimum
                            0x0028,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x002C,             // Range Minimum
                            0x002C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0030,             // Range Minimum
                            0x0030,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0034,             // Range Minimum
                            0x0034,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0038,             // Range Minimum
                            0x0038,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x003C,             // Range Minimum
                            0x003C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A4,             // Range Minimum
                            0x00A4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A8,             // Range Minimum
                            0x00A8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00AC,             // Range Minimum
                            0x00AC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B0,             // Range Minimum
                            0x00B0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B4,             // Range Minimum
                            0x00B4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B8,             // Range Minimum
                            0x00B8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00BC,             // Range Minimum
                            0x00BC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

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

                Device (LDRC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x02)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x004E,             // Range Minimum
                            0x004E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0680,             // Range Minimum
                            0x0680,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x1000,             // Range Minimum
                            0x1000,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0xFFFF,             // Range Minimum
                            0xFFFF,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0xFFFF,             // Range Minimum
                            0xFFFF,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0400,             // Range Minimum
                            0x0400,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x164E,             // Range Minimum
                            0x164E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                }

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

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

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {1}
                    })
                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            FixedIO (
                                0x0060,             // Address
                                0x01,               // Length
                                )
                            FixedIO (
                                0x0064,             // Address
                                0x01,               // Length
                                )
                            IRQNoFlags ()
                                {1}
                        }
                        EndDependentFn ()
                    })
                }
            }

            Device (HDEF)
            {
                Name (_ADR, 0x001B0000)
                OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)
                Field (HDAR, WordAcc, NoLock, Preserve)
                {
                    DCKA,   1, 
                            Offset (0x01), 
                    DCKM,   1, 
                        ,   6, 
                    DCKS,   1, 
                            Offset (0x08), 
                        ,   15, 
                    PMES,   1
                }

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

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

            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR04 ())
                }
            }

            Device (RP02)
            {
                Name (_ADR, 0x001C0001)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR05 ())
                }
            }

            Device (RP04)
            {
                Name (_ADR, 0x001C0003)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR07 ())
                }
            }

            Device (RP05)
            {
                Name (_ADR, 0x001C0004)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR08 ())
                }
            }

            Device (RP06)
            {
                Name (_ADR, 0x001C0005)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR09 ())
                }
            }

            Device (RP07)
            {
                Name (_ADR, 0x001C0006)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR0E)
                }
            }

            Device (RP08)
            {
                Name (_ADR, 0x001C0007)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR0F)
                }
            }

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

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

                    Return (PR02 ())
                }

                Device (PEGP)
                {
                    Name (_ADR, 0xFFFF)
                    Method (_PRW, 0, NotSerialized)
                    {
                        Return (GPRW (0x09, 0x04))
                    }
                }

                Device (VID)
                {
                    Name (_ADR, 0x00)
                }
            }

            Device (PEG1)
            {
                Name (_ADR, 0x00010001)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

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

                    Return (PR0A ())
                }
            }

            Device (PEG2)
            {
                Name (_ADR, 0x00010002)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }

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

                    Return (PR0B ())
                }
            }

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

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

                    Return (PR0C)
                }
            }

            Device (B0D4)
            {
                Name (_ADR, 0x00040000)
            }

            Device (RP03)
            {
                Name (_ADR, 0x001C0002)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                            Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                            Offset (0x1B), 
                    LSCX,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSPX,   1, 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (PXSX)
                {
                    Name (_ADR, 0x00)
                    Name (_EJD, "\\_SB.PCI0.EHC2.RHUB.PRT1.PRT3")
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }

                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                }

                Method (HPME, 0, Serialized)
                {
                    If (PMSX)
                    {
                        Store (0xC8, Local0)
                        While (Local0)
                        {
                            Store (0x01, PMSX)
                            If (PMSX)
                            {
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                            }
                        }

                        Notify (PXSX, 0x02)
                    }
                }

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

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

                    Return (PR06 ())
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L0D, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.HDEF, 0x02)
                Notify (\_SB.PCI0.GLAN, 0x02)
            }

            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.RP01, 0x02)
                Notify (\_SB.PCI0.RP02, 0x02)
                Notify (\_SB.PCI0.RP04, 0x02)
                Notify (\_SB.PCI0.RP05, 0x02)
                Notify (\_SB.PCI0.RP06, 0x02)
                Notify (\_SB.PCI0.RP07, 0x02)
                Notify (\_SB.PCI0.RP08, 0x02)
                Notify (\_SB.PCI0.PEG0, 0x02)
                Notify (\_SB.PCI0.PEG0.PEGP, 0x02)
                Notify (\_SB.PCI0.PEG1, 0x02)
                Notify (\_SB.PCI0.PEG2, 0x02)
                Notify (\_SB.PCI0.PEG3, 0x02)
                Notify (\_SB.PCI0.RP03, 0x02)
            }
        }
    }

    Device (\_SB.PCI0.LPCB.TPM)
    {
        Name (_HID, EisaId ("BCM0102"))
        Name (_CID, EisaId ("PNP0C31"))
        Name (_STR, Unicode ("TPM 1.2 Device"))
        Name (_CRS, ResourceTemplate ()
        {
            Memory32Fixed (ReadOnly,
                0xFED40000,         // Address Base
                0x00005000,         // Address Length
                )
        })
        OperationRegion (SMIP, SystemIO, 0xB2, 0x01)
        Field (SMIP, ByteAcc, NoLock, Preserve)
        {
            IOB2,   8
        }

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

        Method (PTS, 1, Serialized)
        {
            If (LAnd (LLess (Arg0, 0x06), LGreater (Arg0, 0x03)))
            {
                If (LNot (And (MORD, 0x10)))
                {
                    Store (0x02, TCGP)
                    Store (0x5A, IOB2)
                }
            }

            Return (0x00)
        }

        Method (_STA, 0, NotSerialized)
        {
            If (LEqual (TPME, 0x00))
            {
                Return (0x00)
            }

            If (LNotEqual (ACC0, 0xFF))
            {
                Return (0x0F)
            }
            Else
            {
                Return (0x00)
            }
        }

        Method (HINF, 3, Serialized)
        {
            Name (_T_0, Zero)
            Store (ToInteger (Arg1), _T_0)
            If (LEqual (_T_0, 0x00))
            {
                Return (Buffer (0x01)
                {
                    0x01
                })
            }
            Else
            {
                If (LEqual (_T_0, 0x01))
                {
                    If (LEqual (_STA (), 0x00))
                    {
                        Return (Package (0x01)
                        {
                            0x00
                        })
                    }

                    Return (Package (0x02)
                    {
                        0x01, 
                        Package (0x02)
                        {
                            0x01, 
                            0x20
                        }
                    })
                }
                Else
                {
                    BreakPoint
                }
            }

            Return (Buffer (0x00) {})
        }

        Name (TPM2, Package (0x02)
        {
            Zero, 
            Zero
        })
        Name (TPM3, Package (0x03)
        {
            Zero, 
            Zero, 
            Zero
        })
        Method (TPPI, 3, Serialized)
        {
            Name (_T_0, Zero)
            Store (ToInteger (Arg1), _T_0)
            If (LEqual (_T_0, 0x00))
            {
                Return (Buffer (0x01)
                {
                    0x3F
                })
            }
            Else
            {
                If (LEqual (_T_0, 0x01))
                {
                    Return ("1.0")
                }
                Else
                {
                    If (LEqual (_T_0, 0x02))
                    {
                        Store (ToInteger (Arg2), PPRQ)
                        Store (0x02, TCGP)
                        Store (0x5B, IOB2)
                        Return (0x00)
                    }
                    Else
                    {
                        If (LEqual (_T_0, 0x03))
                        {
                            Store (PPRQ, Index (TPM2, 0x01))
                            Return (TPM2)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x04))
                            {
                                Return (0x02)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x05))
                                {
                                    Store (0x05, TCGP)
                                    Store (0x5B, IOB2)
                                    Store (LPPR, Index (TPM3, 0x01))
                                    Store (PPRP, Index (TPM3, 0x02))
                                    Return (TPM3)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x06))
                                    {
                                        Return (0x00)
                                    }
                                    Else
                                    {
                                        BreakPoint
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Return (0x01)
        }

        Method (SMBS, 3, Serialized)
        {
            Name (_T_0, Zero)
            Store (ToInteger (Arg1), _T_0)
            If (LEqual (_T_0, 0x00))
            {
                Return (Buffer (0x01)
                {
                    0x01
                })
            }
            Else
            {
                If (LEqual (_T_0, 0x01))
                {
                    Store (ToInteger (Arg2), MORD)
                    Store (0x01, TCGP)
                    Store (0x5A, IOB2)
                    Return (0x00)
                }
                Else
                {
                    BreakPoint
                }
            }

            Return (0x01)
        }

        Method (_DSM, 4, Serialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */    0xA5, 0x16, 0x8E, 0xCF, 0xE8, 0xC1, 0x25, 0x4E, 
                        /* 0008 */    0xB7, 0x12, 0x4F, 0x54, 0xA9, 0x67, 0x02, 0xC8
                    }))
            {
                Return (HINF (Arg1, Arg2, Arg3))
            }

            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */    0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, 
                        /* 0008 */    0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
                    }))
            {
                Return (TPPI (Arg1, Arg2, Arg3))
            }

            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */    0xED, 0x54, 0x60, 0x37, 0x13, 0xCC, 0x75, 0x46, 
                        /* 0008 */    0x90, 0x1C, 0x47, 0x56, 0xD7, 0xF2, 0xD4, 0x5D
                    }))
            {
                Return (SMBS (Arg1, Arg2, Arg3))
            }

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

    Scope (\_PR)
    {
        Method (PPCE, 2, NotSerialized)
        {
            Store (GENS (0x15, 0x00, 0x00), Local0)
            Store (Local0, \_PR.CPU0._PPC)
            Notify (CPU0, 0x80)
            Sleep (0x64)
            If (LGreaterEqual (TCNT, 0x02))
            {
                Notify (CPU1, 0x80)
                Sleep (0x64)
                If (LGreaterEqual (TCNT, 0x04))
                {
                    Notify (CPU2, 0x80)
                    Sleep (0x64)
                    Notify (CPU3, 0x80)
                    Sleep (0x64)
                    If (LGreaterEqual (TCNT, 0x08))
                    {
                        Notify (CPU4, 0x80)
                        Sleep (0x64)
                        Notify (CPU5, 0x80)
                        Sleep (0x64)
                        Notify (CPU6, 0x80)
                        Sleep (0x64)
                        Notify (CPU7, 0x80)
                        Sleep (0x64)
                    }
                }
            }
        }
    }

    Scope (\_PR)
    {
        Processor (CPU0, 0x01, 0x00000410, 0x06) {}
        Processor (CPU1, 0x02, 0x00000410, 0x06) {}
        Processor (CPU2, 0x03, 0x00000410, 0x06) {}
        Processor (CPU3, 0x04, 0x00000410, 0x06) {}
        Processor (CPU4, 0x05, 0x00000410, 0x06) {}
        Processor (CPU5, 0x06, 0x00000410, 0x06) {}
        Processor (CPU6, 0x07, 0x00000410, 0x06) {}
        Processor (CPU7, 0x08, 0x00000410, 0x06) {}
    }

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

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

        If (LEqual (Arg0, 0x01))
        {
            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 (\_PIC, 1, NotSerialized)
    {
        Store (Arg0, GPIC)
        Store (Arg0, PICM)
    }

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

    Method (TRAP, 2, Serialized)
    {
        Return (0x00)
    }

    Scope (\_SB.PCI0)
    {
        Method (IINI, 2, NotSerialized)
        {
            If (LNotEqual (Arg0, 0x02))
            {
                Return (Zero)
            }

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

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

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

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

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

            Return (Zero)
        }

        Method (NHPG, 0, Serialized)
        {
            Store (0x00, ^RP01.HPEX)
            Store (0x00, ^RP02.HPEX)
            Store (0x00, ^RP03.HPEX)
            Store (0x00, ^RP04.HPEX)
            Store (0x01, ^RP01.HPSX)
            Store (0x01, ^RP02.HPSX)
            Store (0x01, ^RP03.HPSX)
            Store (0x01, ^RP04.HPSX)
        }

        Method (NPME, 0, Serialized)
        {
            Store (0x00, ^RP01.PMEX)
            Store (0x00, ^RP02.PMEX)
            Store (0x00, ^RP03.PMEX)
            Store (0x00, ^RP04.PMEX)
            Store (0x00, ^RP05.PMEX)
            Store (0x00, ^RP07.PMEX)
            Store (0x00, ^RP08.PMEX)
            Store (0x01, ^RP01.PMSX)
            Store (0x01, ^RP02.PMSX)
            Store (0x01, ^RP03.PMSX)
            Store (0x01, ^RP04.PMSX)
            Store (0x01, ^RP05.PMSX)
            Store (0x01, ^RP07.PMSX)
            Store (0x01, ^RP08.PMSX)
        }
    }

    Scope (\)
    {
        Name (PICM, 0x00)
        Name (PRWP, Package (0x02)
        {
            Zero, 
            Zero
        })
        Method (GPRW, 2, NotSerialized)
        {
            Store (Arg0, Index (PRWP, 0x00))
            Store (Arg1, Index (PRWP, 0x01))
            Return (PRWP)
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (PDRC)
        {
            Name (_HID, EisaId ("PNP0C02"))
            Name (_UID, 0x01)
            Name (BUF0, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00004000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00008000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00000000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED20000,         // Address Base
                    0x00020000,         // Address Length
                    )
                Memory32Fixed (ReadOnly,
                    0xFED90000,         // Address Base
                    0x00004000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED45000,         // Address Base
                    0x0004B000,         // Address Length
                    )
                Memory32Fixed (ReadOnly,
                    0xFF000000,         // Address Base
                    0x01000000,         // Address Length
                    )
                Memory32Fixed (ReadOnly,
                    0xFEE00000,         // Address Base
                    0x00100000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00000000,         // Address Length
                    )
            })
            Method (_CRS, 0, Serialized)
            {
                CreateDWordField (BUF0, 0x04, RBR0)
                ShiftLeft (\_SB.PCI0.LPCB.RCBA, 0x0E, RBR0)
                CreateDWordField (BUF0, 0x7C, TBR0)
                Store (TBAB, TBR0)
                CreateDWordField (BUF0, 0x80, TBLN)
                If (LEqual (TBAB, 0x00))
                {
                    Store (0x00, TBLN)
                }

                If (CondRefOf (DPTR))
                {
                    CreateDWordField (BUF0, 0x88, ABR0)
                    Store (DPTR, ABR0)
                    CreateDWordField (BUF0, 0x8C, ABLN)
                    Subtract (EPTR, DPTR, ABLN)
                }

                CreateDWordField (BUF0, 0x10, MBR0)
                ShiftLeft (\_SB.PCI0.MHBR, 0x0F, MBR0)
                CreateDWordField (BUF0, 0x1C, DBR0)
                ShiftLeft (\_SB.PCI0.DIBR, 0x0C, DBR0)
                CreateDWordField (BUF0, 0x28, EBR0)
                ShiftLeft (\_SB.PCI0.EPBR, 0x0C, EBR0)
                CreateDWordField (BUF0, 0x34, XBR0)
                ShiftLeft (\_SB.PCI0.PXBR, 0x1A, XBR0)
                CreateDWordField (BUF0, 0x38, XSZ0)
                ShiftRight (0x10000000, \_SB.PCI0.PXSZ, XSZ0)
                Return (BUF0)
            }
        }
    }

    Scope (\)
    {
        OperationRegion (IO_T, SystemIO, 0x1000, 0x10)
        Field (IO_T, ByteAcc, NoLock, Preserve)
        {
            TRPI,   16, 
                    Offset (0x04), 
                    Offset (0x06), 
                    Offset (0x08), 
            TRP0,   8, 
                    Offset (0x0A), 
                    Offset (0x0B), 
                    Offset (0x0C), 
                    Offset (0x0D), 
                    Offset (0x0E), 
                    Offset (0x0F), 
                    Offset (0x10)
        }

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

        OperationRegion (IO_H, SystemIO, 0x1000, 0x04)
        Field (IO_H, ByteAcc, NoLock, Preserve)
        {
            TRPH,   8
        }

        OperationRegion (PMIO, SystemIO, 0x0400, 0x80)
        Field (PMIO, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x20), 
                ,   2, 
            SPST,   1, 
                ,   16, 
            GPS3,   1, 
                    Offset (0x28), 
                ,   19, 
            GPE3,   1, 
                    Offset (0x42), 
                ,   1, 
            GPEC,   1, 
                    Offset (0x64), 
                ,   9, 
            SCIS,   1, 
                    Offset (0x66)
        }

        OperationRegion (GPIO, SystemIO, 0x0500, 0x64)
        Field (GPIO, ByteAcc, NoLock, Preserve)
        {
            GU00,   8, 
            GU01,   8, 
            GU02,   8, 
            GU03,   8, 
            GIO0,   8, 
            GIO1,   8, 
            GIO2,   8, 
            GIO3,   8, 
                    Offset (0x0C), 
            GL00,   8, 
            GL01,   8, 
            GL02,   8, 
                ,   3, 
            GP27,   1, 
            GP28,   1, 
                    Offset (0x10), 
                    Offset (0x18), 
            GB00,   8, 
            GB01,   8, 
            GB02,   8, 
            GB03,   8, 
                    Offset (0x2C), 
            GIV0,   8, 
            GIV1,   8, 
            GIV2,   8, 
            GIV3,   8, 
            GU04,   8, 
            GU05,   8, 
            GU06,   8, 
            GU07,   8, 
            GIO4,   8, 
            GIO5,   8, 
            GIO6,   8, 
            GIO7,   8, 
                ,   5, 
                ,   1, 
                    Offset (0x39), 
            GL05,   8, 
            GL06,   8, 
            GL07,   8, 
                    Offset (0x40), 
            GU08,   8, 
            GU09,   8, 
            GU0A,   8, 
            GU0B,   8, 
            GIO8,   8, 
            GIO9,   8, 
            GIOA,   8, 
            GIOB,   8, 
            GL08,   8, 
            GL09,   8, 
            GL0A,   8, 
            GL0B,   8
        }

        OperationRegion (RCRB, SystemMemory, \SRCB, 0x4000)
        Field (RCRB, DWordAcc, Lock, Preserve)
        {
                    Offset (0x1000), 
                    Offset (0x3000), 
                    Offset (0x3404), 
            HPAS,   2, 
                ,   5, 
            HPAE,   1, 
                    Offset (0x3418), 
                ,   1, 
                ,   1, 
            SATD,   1, 
            SMBD,   1, 
            HDAD,   1, 
                    Offset (0x341A), 
            RP1D,   1, 
            RP2D,   1, 
            RP3D,   1, 
            RP4D,   1, 
            RP5D,   1, 
            RP6D,   1, 
            RP7D,   1, 
            RP8D,   1
        }
    }

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

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

            Device (PRT0)
            {
                Name (_ADR, 0xFFFF)
                Name (GTF0, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00
                })
                Method (_STA, 0, NotSerialized)
                {
                    If (LNotEqual (SAMS, 0x00))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Method (_SDD, 1, NotSerialized)
                {
                    Name (FFS0, Buffer (0x07)
                    {
                        0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00
                    })
                    CreateByteField (FFS0, 0x00, FF00)
                    CreateByteField (FFS0, 0x06, FF06)
                    If (LEqual (SizeOf (Arg0), 0x0200))
                    {
                        Name (ABUF, Buffer (0x02) {})
                        CreateByteField (ABUF, 0x00, ACMD)
                        CreateByteField (ABUF, 0x01, ADAT)
                        Store (0x01, ACMD)
                        Store (GENS (0x1A, ABUF, SizeOf (ABUF)), Local0)
                        Store (Local0, ABUF)
                        If (LNotEqual (ADAT, 0x00))
                        {
                            CreateWordField (Arg0, 0x0134, W154)
                            CreateWordField (Arg0, 0x0138, W156)
                            If (And (LEqual (W154, 0x1028), LEqual (And (W156, 0x4000), 
                                0x4000)))
                            {
                                If (LEqual (And (W156, 0x8000), 0x00))
                                {
                                    Store (0x5A, FF00)
                                    Store (0xEF, FF06)
                                }
                            }
                        }
                    }

                    Store (FFS0, GTF0)
                }

                Method (_GTF, 0, NotSerialized)
                {
                    Return (GTF0)
                }
            }

            Device (PRT1)
            {
                Name (_ADR, 0x0001FFFF)
                Method (_STA, 0, NotSerialized)
                {
                    Store (GENS (0x17, 0x01, 0x00), Local0)
                    If (Local0)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Method (_EJ0, 1, NotSerialized)
                {
                    GENS (0x17, 0x02, 0x00)
                    Return (0x00)
                }
            }

            Device (PRI)
            {
                Name (_ADR, 0x00)
                Method (_STA, 0, NotSerialized)
                {
                    If (LEqual (SAMS, 0x00))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }
            }

            Device (SEC0)
            {
                Name (_ADR, 0x01)
                Method (_STA, 0, NotSerialized)
                {
                    If (LEqual (SAMS, 0x00))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Device (MAST)
                {
                    Name (_ADR, 0x00)
                    Method (_EJ0, 1, NotSerialized)
                    {
                        GENS (0x17, 0x02, 0x00)
                        Return (0x00)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Store (GENS (0x17, 0x01, 0x00), Local0)
                        If (Local0)
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }
                }
            }

            Method (\_SB.PCI0.SAT0.SEC0.ODDE, 2, NotSerialized)
            {
                Notify (\_SB.PCI0.SAT0.SEC0.MAST, 0x01)
                If (LGreaterEqual (OSID (), 0x10))
                {
                    Notify (\_SB.PCI0.SAT0.SEC0, 0x01)
                }
            }
        }

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

        Device (SBUS)
        {
            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 (0x00)
                }

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

                Return (0x00)
            }

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

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

                Return (0xFFFF)
            }

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

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

                Return (0x00)
            }

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

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

                Return (0xFFFF)
            }

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

                Store (0x00, 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 (0x01)
                }

                Return (0x00)
            }

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

                Store (0x00, I2CE)
                Store (0xBF, HSTS)
                Store (Or (Arg0, 0x01), 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 (0x00)
                }

                Store (Arg3, I2CE)
                Store (0xBF, HSTS)
                Store (Arg0, TXSA)
                Store (Arg1, HCOM)
                Store (SizeOf (Arg2), DAT0)
                Store (0x00, Local1)
                Store (DerefOf (Index (Arg2, 0x00)), 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 (0x00)
                    }

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

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

                Return (0x00)
            }

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

                Store (Arg2, I2CE)
                Store (0xBF, HSTS)
                Store (Or (Arg0, 0x01), 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 (0x00)
                }

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

                    If (LNot (Local0))
                    {
                        KILL ()
                        Return (0x00)
                    }

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

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

                Return (0x00)
            }

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

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

                Return (0x01)
            }

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

                Return (0x00)
            }

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

    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, ,, )
                {
                    0x00000017,
                }
            })
            Method (_CRS, 0, Serialized)
            {
                Return (BUF2)
            }

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

    Device (\_SB.PCI0.LPCB.TCM)
    {
        Name (_HID, EisaId ("ZIC0101"))
        Name (_CRS, ResourceTemplate ()
        {
            Memory32Fixed (ReadOnly,
                0xFED40000,         // Address Base
                0x00005000,         // Address Length
                )
        })
        OperationRegion (TCMR, SystemMemory, 0xFED40000, 0x5000)
        Field (TCMR, AnyAcc, NoLock, Preserve)
        {
            ACC0,   8, 
                    Offset (0xF00), 
            VID,    16
        }

        Method (_STA, 0, NotSerialized)
        {
            If (LEqual (TCME, 0x00))
            {
                Return (0x00)
            }

            If (LEqual (VID, 0x1B4E))
            {
                Return (0x0F)
            }
            Else
            {
                Return (0x00)
            }
        }
    }

    Scope (\_GPE)
    {
        Method (NWAK, 2, NotSerialized)
        {
            _L01 ()
        }

        Method (_L01, 0, NotSerialized)
        {
            If (LAnd (LEqual (RP1D, 0x00), \_SB.PCI0.RP01.HPSX))
            {
                Store (0x01, \_SB.PCI0.RP01.HPSX)
            }

            If (LAnd (LEqual (RP1D, 0x00), \_SB.PCI0.RP01.PDCX))
            {
                Store (0x01, \_SB.PCI0.RP01.PDCX)
            }

            If (LAnd (LEqual (RP2D, 0x00), \_SB.PCI0.RP02.HPSX))
            {
                Store (0x01, \_SB.PCI0.RP02.HPSX)
            }

            If (LAnd (LEqual (RP2D, 0x00), \_SB.PCI0.RP02.PDCX))
            {
                Store (0x01, \_SB.PCI0.RP02.PDCX)
            }

            If (LAnd (LEqual (RP3D, 0x00), \_SB.PCI0.RP03.HPSX))
            {
                Store (0x01, \_SB.PCI0.RP03.HPSX)
            }

            If (LAnd (LEqual (RP3D, 0x00), \_SB.PCI0.RP03.PDCX))
            {
                Store (0x01, \_SB.PCI0.RP03.PDCX)
            }

            If (LAnd (LEqual (RP4D, 0x00), \_SB.PCI0.RP04.HPSX))
            {
                Store (0x01, \_SB.PCI0.RP04.HPSX)
            }

            If (LAnd (LEqual (RP4D, 0x00), \_SB.PCI0.RP04.PDCX))
            {
                Store (0x01, \_SB.PCI0.RP04.PDCX)
            }

            If (LAnd (LEqual (RP5D, 0x00), \_SB.PCI0.RP05.HPSX))
            {
                Store (0x01, \_SB.PCI0.RP05.HPSX)
            }

            If (LAnd (LEqual (RP5D, 0x00), \_SB.PCI0.RP05.PDCX))
            {
                Store (0x01, \_SB.PCI0.RP05.PDCX)
            }

            Notify (\_SB.PCI0, 0x00)
        }
    }

    Name (APRE, 0x00)
    Scope (\_SB.PCI0.LPCB)
    {
        Device (ECDV)
        {
            Name (_HID, EisaId ("PNP0C09"))
            Name (_UID, 0x00)
            Name (ECRS, ResourceTemplate ()
            {
                IO (Decode16,
                    0x0000,             // Range Minimum
                    0x0000,             // Range Maximum
                    0x00,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0000,             // Range Minimum
                    0x0000,             // Range Maximum
                    0x00,               // Alignment
                    0x01,               // Length
                    )
            })
            Method (_STA, 0, Serialized)
            {
                Return (0x0F)
            }

            Method (_CRS, 0, NotSerialized)
            {
                CreateWordField (ECRS, 0x02, DMIN)
                CreateWordField (ECRS, 0x04, DMAX)
                CreateWordField (ECRS, 0x0A, CMIN)
                CreateWordField (ECRS, 0x0C, CMAX)
                Add (0x0900, 0x30, Local0)
                Store (Local0, DMIN)
                Store (Local0, DMAX)
                Add (0x0900, 0x34, Local0)
                Store (Local0, CMIN)
                Store (Local0, CMAX)
                Return (ECRS)
            }

            Name (_GPE, 0x10)
            Name (ECIB, Buffer (0xFF) {})
            OperationRegion (ECOR, EmbeddedControl, 0x00, 0xFF)
            Field (ECOR, ByteAcc, Lock, Preserve)
            {
                EC00,   8, 
                EC01,   8, 
                EC02,   8, 
                EC03,   8, 
                EC04,   8, 
                EC05,   8, 
                EC06,   8, 
                EC07,   8, 
                EC08,   8, 
                EC09,   8, 
                EC10,   8, 
                EC11,   8, 
                EC12,   8, 
                EC13,   8, 
                EC14,   8, 
                EC15,   8, 
                EC16,   8, 
                EC17,   8, 
                EC18,   8, 
                EC19,   8, 
                EC20,   8, 
                EC21,   8, 
                EC22,   8, 
                EC23,   8, 
                EC24,   8, 
                EC25,   8, 
                EC26,   8, 
                EC27,   8, 
                EC28,   8, 
                EC29,   8, 
                EC30,   8, 
                EC31,   8, 
                EC32,   8, 
                EC33,   8, 
                EC34,   8, 
                EC35,   8, 
                EC36,   8, 
                EC37,   8, 
                EC38,   8, 
                EC39,   8, 
                EC40,   8, 
                EC41,   8, 
                EC42,   8, 
                EC43,   8, 
                EC44,   8, 
                EC45,   8, 
                EC46,   8, 
                EC47,   8, 
                EC48,   8, 
                EC49,   8
            }

            Method (ECIN, 0, NotSerialized)
            {
                ECS3 ()
                ECS2 (ACOS)
            }

            Method (_REG, 2, NotSerialized)
            {
                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, 0x01)))
                {
                    ECIN ()
                    Store (0x01, \ECRD)
                }
            }

            Method (ECM9, 2, NotSerialized)
            {
                ECIN ()
                ECS6 (Arg0)
            }

            Method (_Q66, 0, NotSerialized)
            {
                If (LNotEqual (\ECRD, 0x01))
                {
                    Return (Zero)
                }

                \NEVT ()
                Return (Zero)
            }

            Method (ECR1, 1, NotSerialized)
            {
                If (LEqual (\ECRD, 0x00))
                {
                    Store (EISC (0x80, Arg0, 0x00), Local0)
                    Return (Local0)
                }

                Acquire (\ECMX, 0xFFFF)
                Store (0x00, Local0)
                If (LEqual (Arg0, 0x00))
                {
                    Store (EC00, Local0)
                }

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

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

                If (LEqual (Arg0, 0x03))
                {
                    Store (EC03, Local0)
                }

                If (LEqual (Arg0, 0x04))
                {
                    Store (EC04, Local0)
                }

                If (LEqual (Arg0, 0x05))
                {
                    Store (EC05, Local0)
                }

                If (LEqual (Arg0, 0x06))
                {
                    Store (EC06, Local0)
                }

                If (LEqual (Arg0, 0x07))
                {
                    Store (EC07, Local0)
                }

                If (LEqual (Arg0, 0x08))
                {
                    Store (EC08, Local0)
                }

                If (LEqual (Arg0, 0x09))
                {
                    Store (EC09, Local0)
                }

                If (LEqual (Arg0, 0x0A))
                {
                    Store (EC10, Local0)
                }

                If (LEqual (Arg0, 0x0B))
                {
                    Store (EC11, Local0)
                }

                If (LEqual (Arg0, 0x0C))
                {
                    Store (EC12, Local0)
                }

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

                If (LEqual (Arg0, 0x0E))
                {
                    Store (EC14, Local0)
                }

                If (LEqual (Arg0, 0x0F))
                {
                    Store (EC15, Local0)
                }

                If (LEqual (Arg0, 0x10))
                {
                    Store (EC16, Local0)
                }

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

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

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

                If (LEqual (Arg0, 0x14))
                {
                    Store (EC20, Local0)
                }

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

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

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

                If (LEqual (Arg0, 0x18))
                {
                    Store (EC24, Local0)
                }

                If (LEqual (Arg0, 0x19))
                {
                    Store (EC25, Local0)
                }

                If (LEqual (Arg0, 0x1A))
                {
                    Store (EC26, Local0)
                }

                If (LEqual (Arg0, 0x1B))
                {
                    Store (EC27, Local0)
                }

                If (LEqual (Arg0, 0x1C))
                {
                    Store (EC28, Local0)
                }

                If (LEqual (Arg0, 0x1D))
                {
                    Store (EC29, Local0)
                }

                If (LEqual (Arg0, 0x1E))
                {
                    Store (EC30, Local0)
                }

                If (LEqual (Arg0, 0x1F))
                {
                    Store (EC31, Local0)
                }

                If (LEqual (Arg0, 0x20))
                {
                    Store (EC32, Local0)
                }

                If (LEqual (Arg0, 0x21))
                {
                    Store (EC33, Local0)
                }

                If (LEqual (Arg0, 0x22))
                {
                    Store (EC34, Local0)
                }

                If (LEqual (Arg0, 0x23))
                {
                    Store (EC35, Local0)
                }

                If (LEqual (Arg0, 0x24))
                {
                    Store (EC36, Local0)
                }

                If (LEqual (Arg0, 0x25))
                {
                    Store (EC37, Local0)
                }

                If (LEqual (Arg0, 0x26))
                {
                    Store (EC38, Local0)
                }

                If (LEqual (Arg0, 0x27))
                {
                    Store (EC39, Local0)
                }

                If (LEqual (Arg0, 0x28))
                {
                    Store (EC40, Local0)
                }

                If (LEqual (Arg0, 0x29))
                {
                    Store (EC41, Local0)
                }

                If (LEqual (Arg0, 0x2A))
                {
                    Store (EC42, Local0)
                }

                If (LEqual (Arg0, 0x2B))
                {
                    Store (EC43, Local0)
                }

                If (LEqual (Arg0, 0x2C))
                {
                    Store (EC44, Local0)
                }

                If (LEqual (Arg0, 0x2D))
                {
                    Store (EC45, Local0)
                }

                If (LEqual (Arg0, 0x2E))
                {
                    Store (EC46, Local0)
                }

                If (LEqual (Arg0, 0x2F))
                {
                    Store (EC47, Local0)
                }

                If (LEqual (Arg0, 0x30))
                {
                    Store (EC48, Local0)
                }

                If (LEqual (Arg0, 0x31))
                {
                    Store (EC49, Local0)
                }

                Release (\ECMX)
                Return (Local0)
            }

            Method (ECR2, 1, NotSerialized)
            {
                Store (\_SB.PCI0.LPCB.ECDV.ECR1 (Arg0), Local0)
                Increment (Arg0)
                ShiftLeft (\_SB.PCI0.LPCB.ECDV.ECR1 (Arg0), 0x08, Local1)
                Add (Local1, Local0, Local0)
                Return (Local0)
            }

            Method (ECW1, 2, NotSerialized)
            {
                If (LEqual (\ECRD, 0x00))
                {
                    EISC (0x81, Arg0, Arg1)
                    Return (Zero)
                }

                Acquire (\ECMX, 0xFFFF)
                If (LEqual (Arg0, 0x00))
                {
                    Store (Arg1, EC00)
                }

                If (LEqual (Arg0, 0x01))
                {
                    Store (Arg1, EC01)
                }

                If (LEqual (Arg0, 0x02))
                {
                    Store (Arg1, EC02)
                }

                If (LEqual (Arg0, 0x03))
                {
                    Store (Arg1, EC03)
                }

                If (LEqual (Arg0, 0x04))
                {
                    Store (Arg1, EC04)
                }

                If (LEqual (Arg0, 0x05))
                {
                    Store (Arg1, EC05)
                }

                If (LEqual (Arg0, 0x06))
                {
                    Store (Arg1, EC06)
                }

                If (LEqual (Arg0, 0x07))
                {
                    Store (Arg1, EC07)
                }

                If (LEqual (Arg0, 0x08))
                {
                    Store (Arg1, EC08)
                }

                If (LEqual (Arg0, 0x09))
                {
                    Store (Arg1, EC09)
                }

                If (LEqual (Arg0, 0x0A))
                {
                    Store (Arg1, EC10)
                }

                If (LEqual (Arg0, 0x0B))
                {
                    Store (Arg1, EC11)
                }

                If (LEqual (Arg0, 0x0C))
                {
                    Store (Arg1, EC12)
                }

                If (LEqual (Arg0, 0x10))
                {
                    Store (Arg1, EC16)
                }

                If (LEqual (Arg0, 0x11))
                {
                    Store (Arg1, EC17)
                }

                Release (\ECMX)
                Return (Zero)
            }
        }
    }

    Scope (\)
    {
        Name (ECRD, 0x00)
        Mutex (ECMX, 0x01)
        Mutex (ECSX, 0x01)
        Method (EISC, 3, NotSerialized)
        {
            Acquire (ECSX, 0xFFFF)
            Name (ECIB, Buffer (0x04) {})
            CreateByteField (ECIB, 0x00, ECIC)
            CreateByteField (ECIB, 0x01, ECP1)
            CreateByteField (ECIB, 0x02, ECP2)
            Store (Arg0, ECIC)
            Store (Arg1, ECP1)
            Store (Arg2, ECP2)
            Store (GENS (0x08, ECIB, SizeOf (ECIB)), ECIB)
            Store (ECIC, Local0)
            Release (ECSX)
            Return (Local0)
        }

        Method (ECBT, 2, NotSerialized)
        {
            Store (\_SB.PCI0.LPCB.ECDV.ECR1 (Arg0), Local0)
            And (Local0, Arg1, Local0)
            If (Local0)
            {
                Return (0x01)
            }

            Return (0x00)
        }

        Method (ECB1, 2, NotSerialized)
        {
            Store (ECBT (Arg0, Arg1), Local0)
            If (Local0)
            {
                Return (0x00)
            }

            Return (0x01)
        }

        Method (ECRB, 1, NotSerialized)
        {
            Return (\_SB.PCI0.LPCB.ECDV.ECR1 (Arg0))
        }

        Method (ECRW, 1, NotSerialized)
        {
            Return (\_SB.PCI0.LPCB.ECDV.ECR2 (Arg0))
        }

        Method (ECWB, 2, NotSerialized)
        {
            \_SB.PCI0.LPCB.ECDV.ECW1 (Arg0, Arg1)
        }

        Method (ECG1, 0, NotSerialized)
        {
            Return (ECRW (0x07))
        }

        Method (ECG2, 0, NotSerialized)
        {
            Return (ECBT (0x00, 0x01))
        }

        Method (ECG3, 0, NotSerialized)
        {
            Return (ECBT (0x00, 0x10))
        }

        Method (ECG4, 0, NotSerialized)
        {
            Return (ECBT (0x05, 0x04))
        }

        Method (ECG5, 0, NotSerialized)
        {
            Store (ECRB (0x06), Local0)
            Return (Local0)
        }

        Method (ECG7, 0, NotSerialized)
        {
            Store (ECRB (0x09), Local0)
            Return (Local0)
        }

        Mutex (ECM1, 0x01)
        Method (ECG6, 2, NotSerialized)
        {
            Acquire (ECM1, 0xFFFF)
            Store (ECG2 (), Local2)
            ECWB (0x03, Arg0)
            Store (ECRB (0x10), Index (Arg1, 0x00))
            Store (ECRW (0x12), Local0)
            If (LEqual (Local0, 0x00))
            {
                Increment (Local0)
            }
            Else
            {
                If (LNotEqual (Local2, 0x00))
                {
                    If (And (Local0, 0x8000))
                    {
                        Store (Ones, Local0)
                    }
                }
                Else
                {
                    If (And (Local0, 0x8000))
                    {
                        Subtract (0x00, Local0, Local0)
                        And (Local0, 0xFFFF, Local0)
                    }
                    Else
                    {
                        Store (Ones, Local0)
                    }
                }
            }

            Store (Local0, Index (Arg1, 0x01))
            Store (ECRW (0x16), Local0)
            Store (Local0, Index (Arg1, 0x02))
            Store (ECRW (0x14), Local0)
            Store (Local0, Index (Arg1, 0x03))
            Release (ECM1)
        }

        Method (ECM8, 1, NotSerialized)
        {
            ECWB (0x04, Arg0)
            Name (LBUF, Buffer (0x21) {})
            Store (0x00, Local0)
            While (LLess (Local0, 0x20))
            {
                Store (ECRB (0x2A), Local1)
                Store (Local1, Index (LBUF, Local0))
                If (LEqual (Local1, 0x00))
                {
                    Break
                }

                Increment (Local0)
            }

            If (LNotEqual (Local1, 0x00))
            {
                Store (0x00, Index (LBUF, Local0))
                Increment (Local0)
            }

            Increment (Local0)
            Name (OBUF, Buffer (Local0) {})
            Store (LBUF, OBUF)
            Return (OBUF)
        }

        Name (BS01, Package (0x03)
        {
            0x01, 
            0xFF, 
            "Unknown"
        })
        Name (BS02, Package (0x0F)
        {
            0x03, 
            0x02, 
            "Sony", 
            0x03, 
            "Sanyo", 
            0x04, 
            "Panasonic", 
            0x07, 
            "SMP", 
            0x08, 
            "Motorola", 
            0x06, 
            "Samsung SDI", 
            0xFF, 
            "Unknown"
        })
        Name (BS03, Package (0x13)
        {
            0x02, 
            0x01, 
            "PbAc", 
            0x02, 
            "LION", 
            0x03, 
            "NiCd", 
            0x04, 
            "NiMH", 
            0x05, 
            "NiZn", 
            0x06, 
            "RAM", 
            0x07, 
            "ZnAR", 
            0x08, 
            "LiP", 
            0xFF, 
            "Unknown"
        })
        Method (ECU0, 2, NotSerialized)
        {
            Store (0x01, Local0)
            Store (0x00, Local1)
            While (LNotEqual (Local1, 0xFF))
            {
                Store (DerefOf (Index (Arg0, Local0)), Local1)
                If (LEqual (Arg1, Local1))
                {
                    Increment (Local0)
                    Store (DerefOf (Index (Arg0, Local0)), Local2)
                    Store (XPTB (Local2), Local2)
                    Return (Local2)
                }

                Add (Local0, 0x02, Local0)
            }

            Store (DerefOf (Index (Arg0, 0x00)), Local2)
            Store (ECM8 (Local2), Local2)
            Return (Local2)
        }

        Method (ECG9, 2, NotSerialized)
        {
            Acquire (ECM1, 0xFFFF)
            ECWB (0x03, Arg0)
            Store (0x01, Index (Arg1, 0x00))
            Store (ECRW (0x20), Local0)
            Store (Local0, Index (Arg1, 0x01))
            Store (ECRW (0x1E), Local1)
            Store (Local1, Index (Arg1, 0x02))
            Store (0x01, Index (Arg1, 0x03))
            Store (ECRW (0x22), Local2)
            Store (Local2, Index (Arg1, 0x04))
            Divide (Local0, 0x0A, Local5, Local3)
            Store (Local3, Index (Arg1, 0x05))
            Divide (Local0, 0x21, Local5, Local3)
            Store (Local3, Index (Arg1, 0x06))
            Divide (Local0, 0x64, Local5, Local3)
            Store (Local3, Index (Arg1, 0x07))
            Store (Local3, Index (Arg1, 0x08))
            Store (ECU0 (BS01, 0x00), Local3)
            Store (Local3, Index (Arg1, 0x09))
            Store (ECRW (0x26), Local3)
            Store (XPTS (Local3), Local3)
            Store (Local3, Index (Arg1, 0x0A))
            Store (ECRB (0x29), Local3)
            Store (ECU0 (BS03, Local3), Local3)
            Store (Local3, Index (Arg1, 0x0B))
            Store (ECRB (0x28), Local3)
            Store (ECU0 (BS02, Local3), Local3)
            Store (Local3, Index (Arg1, 0x0C))
            Release (ECM1)
        }

        Method (ECGA, 0, NotSerialized)
        {
            Store (ECRB (0x2F), Local0)
            Return (Local0)
        }

        Method (ECS1, 2, NotSerialized)
        {
            ECWB (0x02, Arg0)
        }

        Method (ECS2, 1, NotSerialized)
        {
            ECWB (0x01, Arg0)
        }

        Method (ECS6, 1, NotSerialized)
        {
            ECWB (0x06, Arg0)
        }

        Method (ECS3, 0, NotSerialized)
        {
            ECWB (0x05, 0x01)
        }

        Mutex (QSEV, 0x01)
        Method (EC0A, 1, NotSerialized)
        {
            Acquire (QSEV, 0xFFFF)
            Store (ECRB (0x2B), Local1)
            Store (0x00, Local0)
            While (LLess (Local0, Local1))
            {
                Store (ECRB (0x2C), Local2)
                If (LLess (Local0, SizeOf (Arg0)))
                {
                    BBWR (Arg0, Local0, Local2)
                }

                Increment (Local0)
            }

            Release (QSEV)
            Return (Arg0)
        }

        Method (ECS4, 1, NotSerialized)
        {
            ECWB (0x11, Arg0)
        }

        Method (ECS5, 1, NotSerialized)
        {
            ECWB (0x10, Arg0)
        }
    }

    Method (NEVT, 0, NotSerialized)
    {
        Store (ECG1 (), Local0)
        If (And (Local0, 0x01))
        {
            \EV6 (0x01, 0x00)
        }

        If (And (Local0, 0x40))
        {
            \EV6 (0x02, 0x00)
        }

        If (And (Local0, 0x04))
        {
            Store (ECG3 (), Local1)
            \EV6 (0x03, Local1)
        }

        If (And (Local0, 0x10))
        {
            Store (ECBT (0x00, 0x80), Local1)
            Store (ECRB (0x2D), Local2)
            \EV7 (Local1, Local2)
        }

        If (And (Local0, 0x0100))
        {
            \EV8 (0x0100, 0x00)
            If (ECG4 ())
            {
                GENS (0x1C, 0x01, 0x00)
            }
            Else
            {
                GENS (0x1C, 0x00, 0x00)
            }
        }

        If (And (Local0, 0x0200))
        {
            \EV8 (0x0200, 0x00)
        }

        If (And (Local0, 0x0400))
        {
            \EV8 (0x0400, 0x00)
        }

        If (And (Local0, 0x0800))
        {
            \EV8 (0x0800, 0x00)
        }

        If (And (Local0, 0x4000))
        {
            Store (ECRB (0x30), Local1)
            \EV9 (0x4000, 0x00)
        }

        If (And (Local0, 0x8000))
        {
            Store (ECRB (0x2E), Local1)
            \EV10 (0x8000, Local1)
        }

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

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

    Method (PWRE, 0, NotSerialized)
    {
        Store (ECG5 (), Local0)
        XOr (Local0, APRE, Local1)
        And (Local0, Or (0x20, Or (0x01, Or (0x02, 0x08)
            )), APRE)
        If (And (Local1, 0x01))
        {
            \EV11 (0x00, 0x00)
        }

        And (APRE, 0x02, Local2)
        If (And (Local1, 0x02))
        {
            If (Local2)
            {
                \EV12 (0x01, 0x00)
            }
            Else
            {
                \EV12 (0x02, 0x00)
            }
        }

        If (And (Local1, 0x04))
        {
            If (Local2)
            {
                \EV12 (0x03, 0x00)
            }
        }

        And (APRE, 0x08, Local2)
        If (And (Local1, 0x08))
        {
            If (Local2)
            {
                \EV12 (0x01, 0x01)
            }
            Else
            {
                \EV12 (0x02, 0x01)
            }
        }

        If (And (Local1, 0x10))
        {
            If (Local2)
            {
                \EV12 (0x03, 0x01)
            }
        }

        And (APRE, 0x20, Local2)
        If (And (Local1, 0x20))
        {
            If (Local2)
            {
                \EV12 (0x01, 0x02)
            }
            Else
            {
                \EV12 (0x02, 0x02)
            }
        }

        If (And (Local1, 0x40))
        {
            If (Local2)
            {
                \EV12 (0x03, 0x02)
            }
        }
    }

    Method (SMEE, 1, NotSerialized)
    {
        Store (Arg0, Local0)
        Store (GENS (0x11, 0x00, 0x00), Local0)
        If (LGreaterEqual (\_SB.OSID (), 0x20))
        {
            If (And (Local0, 0x04))
            {
                \EV13 (0x01, 0x00)
            }

            If (And (Local0, 0x02))
            {
                \EV13 (0x02, 0x00)
            }
        }

        If (And (Local0, 0x08))
        {
            Store (GENS (0x1D, 0x00, 0x00), Local0)
            \EV14 (Local0, 0x00)
        }
    }

    Method (SMIE, 0, NotSerialized)
    {
        Store (GENS (0x10, 0x00, 0x00), Local0)
        If (And (Local0, 0x04))
        {
            SMEE (Local0)
        }

        If (And (Local0, 0x02))
        {
            \EV15 (0x00, 0x00)
        }

        If (And (Local0, 0x08))
        {
            \EV3 (0x00, 0x00)
        }

        If (And (Local0, 0x40))
        {
            \EV16 (0x00, 0x00)
        }

        If (And (Local0, 0x80))
        {
            \EV17 (0x00, 0x00)
        }

        If (And (Local0, 0x10))
        {
            \EV4 (0x00, 0x00)
        }
    }

    Scope (\_SB.PCI0.LPCB)
    {
        Method (EINI, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x02))
            {
                Store (ECG5 (), APRE)
                And (APRE, Or (0x20, Or (0x01, Or (0x02, 0x08)
                    )), APRE)
            }
        }
    }

    Scope (\_GPE)
    {
        Method (_L18, 0, NotSerialized)
        {
            Store (ECG7 (), Local0)
            If (And (Local0, 0x02))
            {
                Store (ECG3 (), Local1)
                \EV6 (0x03, Local1)
            }

            Store (0x00, Local1)
            If (LEqual (Local0, 0x00))
            {
                Store (0x01, Local1)
            }

            If (And (Local0, 0x01))
            {
                Store (0x01, Local1)
            }

            If (LEqual (Local0, 0x04))
            {
                Store (0x01, Local1)
            }

            If (Local1)
            {
                \EV6 (0x01, 0x01)
            }
        }
    }

    Scope (\_SB)
    {
        Mutex (ECAX, 0x01)
        Method (EEAC, 2, NotSerialized)
        {
            Acquire (ECAX, 0xFFFF)
            Name (EABF, Buffer (0x08) {})
            CreateDWordField (EABF, 0x00, ECST)
            CreateDWordField (EABF, 0x04, ECPA)
            Store (Arg0, ECST)
            Store (Arg1, ECPA)
            Store (GENS (0x07, EABF, SizeOf (EABF)), EABF)
            Store (ECST, Local0)
            Release (ECAX)
            Return (Local0)
        }

        Scope (\_SB)
        {
            Method (PPRW, 0, NotSerialized)
            {
                Name (EPRW, Package (0x02)
                {
                    0x00, 
                    0x03
                })
                Store (EEAC (0x03, 0x00), Local0)
                Store (Local0, Index (EPRW, 0x00))
                Return (EPRW)
            }

            Device (LID)
            {
                Name (_HID, EisaId ("PNP0C0D"))
                Method (_LID, 0, NotSerialized)
                {
                    Store (ECG3 (), Local0)
                    Return (Local0)
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (PPRW ())
                }

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

            Device (PBTN)
            {
                Name (_HID, EisaId ("PNP0C0C"))
                Method (_PRW, 0, NotSerialized)
                {
                    Return (PPRW ())
                }

                Method (_PSW, 1, NotSerialized)
                {
                    EEAC (0x01, Arg0)
                }
            }

            Device (SBTN)
            {
                Name (_HID, EisaId ("PNP0C0E"))
            }

            Method (BTNV, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x01))
                {
                    If (LEqual (Arg1, 0x00))
                    {
                        Notify (\_SB.PBTN, 0x80)
                    }

                    If (LEqual (Arg1, 0x01))
                    {
                        Notify (\_SB.PBTN, 0x02)
                    }
                }

                If (LEqual (Arg0, 0x02))
                {
                    Notify (\_SB.SBTN, 0x80)
                }
            }
        }

        Device (AC)
        {
            Name (_HID, "ACPI0003")
            Method (_PCL, 0, NotSerialized)
            {
                Return (Package (0x04)
                {
                    \_SB, 
                    BAT0, 
                    BAT1, 
                    BAT2
                })
            }

            Method (_PSR, 0, NotSerialized)
            {
                Store (ECG5 (), Local0)
                And (Local0, 0x01, Local0)
                Return (Local0)
            }

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

        Method (ACEV, 2, NotSerialized)
        {
            Notify (\_SB.AC, 0x80)
        }

        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x01)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (ECG5 (), Local0)
                And (Local0, 0x02, Local0)
                If (Local0)
                {
                    Return (0x1F)
                }

                Return (0x0F)
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BIF0, Package (0x0D) {})
                ECG9 (0x01, BIF0)
                Return (BIF0)
            }

            Method (_BST, 0, NotSerialized)
            {
                Name (BST0, Package (0x04) {})
                ECG6 (0x01, BST0)
                Return (BST0)
            }
        }

        Device (BAT1)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x02)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (EEAC (0x05, 0x00), Local0)
                If (LLess (Local0, 0x02))
                {
                    Return (0x00)
                }

                Store (ECG5 (), Local0)
                And (Local0, 0x08, Local0)
                If (Local0)
                {
                    Return (0x1F)
                }

                Return (0x0F)
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BIF1, Package (0x0D) {})
                ECG9 (0x02, BIF1)
                Return (BIF1)
            }

            Method (_BST, 0, NotSerialized)
            {
                Name (BST1, Package (0x04) {})
                ECG6 (0x02, BST1)
                Return (BST1)
            }
        }

        Device (BAT2)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x03)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (EEAC (0x05, 0x00), Local0)
                If (LLess (Local0, 0x03))
                {
                    Return (0x00)
                }

                Store (ECG5 (), Local0)
                And (Local0, 0x20, Local0)
                If (Local0)
                {
                    Return (0x1F)
                }

                Return (0x0F)
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BIF1, Package (0x0D) {})
                ECG9 (0x03, BIF1)
                Return (BIF1)
            }

            Method (_BST, 0, NotSerialized)
            {
                Name (BST1, Package (0x04) {})
                ECG6 (0x03, BST1)
                Return (BST1)
            }
        }

        Method (BTEV, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x01))
            {
                If (LEqual (Arg1, 0x00))
                {
                    Notify (\_SB.BAT0, 0x81)
                }

                If (LEqual (Arg1, 0x01))
                {
                    Notify (\_SB.BAT1, 0x81)
                }
                Else
                {
                    Notify (\_SB.BAT2, 0x81)
                }
            }

            If (LEqual (Arg0, 0x02))
            {
                If (LEqual (Arg1, 0x00))
                {
                    Notify (\_SB.BAT0, 0x80)
                    Notify (\_SB.BAT0, 0x81)
                }

                If (LEqual (Arg1, 0x01))
                {
                    Notify (\_SB.BAT1, 0x80)
                    Notify (\_SB.BAT1, 0x81)
                }
                Else
                {
                    Notify (\_SB.BAT2, 0x80)
                    Notify (\_SB.BAT2, 0x81)
                }
            }

            If (LEqual (Arg0, 0x03))
            {
                If (LEqual (Arg1, 0x00))
                {
                    Notify (\_SB.BAT0, 0x80)
                }

                If (LEqual (Arg1, 0x01))
                {
                    Notify (\_SB.BAT1, 0x80)
                }
                Else
                {
                    Notify (\_SB.BAT2, 0x80)
                }
            }
        }

        Scope (\_SB)
        {
            Method (CBAT, 2, NotSerialized)
            {
                Notify (\_SB.BAT0, 0x81)
                Notify (\_SB.BAT1, 0x81)
                Notify (\_SB.BAT2, 0x81)
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Method (UPRW, 0, NotSerialized)
        {
            Store (GENS (0x18, 0x01, 0x00), Local0)
            Return (Local0)
        }

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

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

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

            Device (RHUB)
            {
                Name (_ADR, 0x00)
                Device (PRT1)
                {
                    Name (_ADR, 0x01)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                    }

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

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (_EJD, "\\_SB.PCI0.RP03.PXSX")
                        Method (_RMV, 0, NotSerialized)
                        {
                            Return (0x01)
                        }
                    }

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

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

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

                Device (PRT2)
                {
                    Name (_ADR, 0x02)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                }
            }
        }

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

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

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

            Device (RHUB)
            {
                Name (_ADR, 0x00)
                Device (PRT1)
                {
                    Name (_ADR, 0x01)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0x00, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x19, 0x12, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT2)
                    {
                        Name (_ADR, 0x02)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0x00, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x11, 0x11, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0x00, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x91, 0x11, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT4)
                    {
                        Name (_ADR, 0x04)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0x00, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x99, 0x12, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT5)
                    {
                        Name (_ADR, 0x05)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x3A, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT6)
                    {
                        Name (_ADR, 0x06)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x3A, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

                    Device (PRT7)
                    {
                        Name (_ADR, 0x07)
                        Name (_UPC, Package (0x04)
                        {
                            0xFF, 
                            0x02, 
                            0x00, 
                            0x00
                        })
                        Name (_PLD, Buffer (0x10)
                        {
                            /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x59, 0x11, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                        })
                    }

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

                Device (PRT2)
                {
                    Name (_ADR, 0x02)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                }
            }
        }
    }

    Scope (\)
    {
        Mutex (SMIX, 0x01)
        Name (SMIB, 0xBAF67000)
        Name (PSMI, 0x000000B2)
        Method (SNVC, 1, NotSerialized)
        {
            OperationRegion (WWPR, SystemMemory, SMIB, 0x04)
            Field (WWPR, DWordAcc, Lock, Preserve)
            {
                SCDW,   32
            }

            Store (Arg0, SCDW)
        }

        Method (SNWB, 2, NotSerialized)
        {
            Store (SMIB, Local0)
            Add (Local0, Arg1, Local0)
            Add (Local0, 0x04, Local0)
            OperationRegion (WWPR, SystemMemory, Local0, 0x01)
            Field (WWPR, ByteAcc, Lock, Preserve)
            {
                SBY0,   8
            }

            CreateByteField (Arg0, Arg1, SVAL)
            Store (SVAL, SBY0)
        }

        Method (SNRB, 2, NotSerialized)
        {
            Store (SMIB, Local0)
            Add (Local0, Arg1, Local0)
            Add (Local0, 0x04, Local0)
            OperationRegion (WWPR, SystemMemory, Local0, 0x04)
            Field (WWPR, ByteAcc, Lock, Preserve)
            {
                SBY0,   8
            }

            CreateByteField (Arg0, Arg1, SVAL)
            Store (SBY0, SVAL)
            Return (Arg0)
        }

        Method (SNVP, 2, NotSerialized)
        {
            Store (SMIB, Local0)
            Add (Local0, Arg1, Local0)
            Add (Local0, 0x04, Local0)
            OperationRegion (WWPR, SystemMemory, Local0, 0x04)
            Field (WWPR, ByteAcc, Lock, Preserve)
            {
                SDW0,   32
            }

            CreateDWordField (Arg0, Arg1, SVAL)
            Store (SVAL, SDW0)
        }

        Method (SNVG, 2, NotSerialized)
        {
            Store (SMIB, Local0)
            Add (Local0, Arg1, Local0)
            Add (Local0, 0x04, Local0)
            OperationRegion (WWPR, SystemMemory, Local0, 0x04)
            Field (WWPR, ByteAcc, Lock, Preserve)
            {
                SDW0,   32
            }

            CreateDWordField (Arg0, Arg1, SVAL)
            Store (SDW0, SVAL)
            Return (Arg0)
        }

        Method (GENS, 3, NotSerialized)
        {
            Acquire (SMIX, 0xFFFF)
            Store (Arg1, Local0)
            If (LEqual (ObjectType (Arg1), 0x01))
            {
                Store (SMBI (Arg0, Arg1), Local0)
            }

            If (LEqual (ObjectType (Arg1), 0x03))
            {
                Store (SMBF (Arg0, Arg1, Arg2), Local0)
            }

            Release (SMIX)
            Return (Local0)
        }

        Method (SMBI, 2, NotSerialized)
        {
            SNVC (Arg0)
            Add (SMIB, 0x04, Local0)
            OperationRegion (WWPR, SystemMemory, Local0, 0x04)
            Field (WWPR, ByteAcc, Lock, Preserve)
            {
                SDW0,   32
            }

            Store (Arg1, SDW0)
            ASMI ()
            Return (SDW0)
        }

        Method (SMBF, 3, NotSerialized)
        {
            If (LGreater (Arg2, 0xFC))
            {
                Return (Arg1)
            }

            If (LLess (SizeOf (Arg1), Arg2))
            {
                Return (Arg1)
            }

            SNVC (Arg0)
            Divide (Arg2, 0x04, Local3, Local4)
            Store (0x00, Local0)
            While (LLess (Local0, Local3))
            {
                SNWB (Arg1, Local0)
                Increment (Local0)
            }

            While (LLess (Local0, Arg2))
            {
                SNVP (Arg1, Local0)
                Add (Local0, 0x04, Local0)
            }

            ASMI ()
            Store (0x00, Local0)
            While (LLess (Local0, Local3))
            {
                Store (SNRB (Arg1, Local0), Arg1)
                Increment (Local0)
            }

            While (LLess (Local0, Arg2))
            {
                Store (SNVG (Arg1, Local0), Arg1)
                Add (Local0, 0x04, Local0)
            }

            Return (Arg1)
        }

        Method (ASMI, 0, NotSerialized)
        {
            OperationRegion (SMIR, SystemIO, PSMI, 0x01)
            Field (SMIR, ByteAcc, Lock, Preserve)
            {
                SCMD,   8
            }

            Store (0x04, SCMD)
        }
    }

    Scope (\_SB)
    {
        Device (AMW0)
        {
            Mutex (WMIX, 0x01)
            Name (_HID, "*pnp0c14")
            Name (_UID, 0x00)
            Name (_WDG, Buffer (0x64)
            {
                /* 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
            })
            Name (INFO, Buffer (0x80) {})
            Name (ECD0, 0x00)
            Method (WED0, 1, NotSerialized)
            {
                Store (Arg0, ECD0)
                Return (Zero)
            }

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

            Method (WQAA, 1, NotSerialized)
            {
                Acquire (WMIX, 0xFFFF)
                BCLR (INFO)
                If (LNotEqual (Arg0, 0x00))
                {
                    Store (INFO, Local1)
                }
                Else
                {
                    BDWR (INFO, 0x00, 0x4C4C4544)
                    BDWR (INFO, 0x04, 0x494D5720)
                    BDWR (INFO, 0x08, 0x01)
                    BDWR (INFO, 0x0C, 0x1000)
                    Store (INFO, Local1)
                }

                Release (WMIX)
                Return (Local1)
            }

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

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

                Return (Local0)
            }

            Method (WMI, 2, NotSerialized)
            {
                If (LLessEqual (Arg1, 0x1000))
                {
                    Store (GENS (0x03, Arg0, Arg1), Arg0)
                }

                Return (Arg0)
            }

            Name (WQMO, Buffer (0x04FD)
            {
                /* 0000 */    0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, 
                /* 0008 */    0xED, 0x04, 0x00, 0x00, 0xD8, 0x15, 0x00, 0x00, 
                /* 0010 */    0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, 
                /* 0018 */    0x28, 0xD5, 0x8A, 0x00, 0x01, 0x06, 0x18, 0x42, 
                /* 0020 */    0x10, 0x0D, 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, 0xCA, 0x05, 
                /* 0070 */    0xF8, 0x46, 0x10, 0x78, 0xB9, 0x02, 0x24, 0x4F, 
                /* 0078 */    0x40, 0x9A, 0x05, 0x18, 0x16, 0x60, 0x5D, 0x80, 
                /* 0080 */    0xEC, 0x21, 0x50, 0xA9, 0x43, 0x40, 0xC9, 0x19, 
                /* 0088 */    0x02, 0x6A, 0x00, 0xAD, 0x4E, 0x40, 0xF8, 0x95, 
                /* 0090 */    0x4E, 0x09, 0x49, 0x10, 0xCE, 0x58, 0xC5, 0xE3, 
                /* 0098 */    0x6B, 0x16, 0x4D, 0xCF, 0x49, 0xCE, 0x31, 0xE4, 
                /* 00A0 */    0x78, 0x5C, 0xE8, 0x41, 0xF0, 0x40, 0x0A, 0x40, 
                /* 00A8 */    0x58, 0x78, 0x08, 0x45, 0x80, 0x41, 0x49, 0x18, 
                /* 00B0 */    0x0B, 0x75, 0x31, 0x6A, 0xD4, 0x48, 0xD9, 0x80, 
                /* 00B8 */    0x0C, 0x51, 0xDA, 0xA8, 0xD1, 0x03, 0x3A, 0xBF, 
                /* 00C0 */    0x23, 0x39, 0xBB, 0xA3, 0x3B, 0x92, 0x04, 0x46, 
                /* 00C8 */    0x3D, 0xA6, 0x63, 0x2C, 0x6C, 0x46, 0x42, 0x8D, 
                /* 00D0 */    0xD1, 0x1C, 0x14, 0x81, 0xC6, 0x0D, 0xDA, 0x12, 
                /* 00D8 */    0x61, 0x35, 0xAE, 0xD8, 0x67, 0x66, 0xE1, 0xC3, 
                /* 00E0 */    0x12, 0xC6, 0x11, 0x1C, 0x58, 0x82, 0x46, 0xD1, 
                /* 00E8 */    0x34, 0xC7, 0xB3, 0x0D, 0x91, 0xE0, 0x20, 0x42, 
                /* 00F0 */    0x63, 0x64, 0x40, 0xC8, 0xF3, 0xB0, 0x05, 0x7A, 
                /* 00F8 */    0xE4, 0x09, 0xEC, 0x1E, 0x51, 0x0A, 0x11, 0x34, 
                /* 0100 */    0xDF, 0x13, 0xA9, 0x51, 0x80, 0x36, 0x0C, 0xD9, 
                /* 0108 */    0x3A, 0x1B, 0x68, 0xA8, 0xB1, 0x1A, 0x43, 0x11, 
                /* 0110 */    0x44, 0x84, 0xA0, 0x51, 0x0C, 0x16, 0x21, 0x54, 
                /* 0118 */    0x88, 0xFF, 0x7F, 0x94, 0xA8, 0xA7, 0x14, 0x24, 
                /* 0120 */    0x6A, 0x65, 0x20, 0x42, 0x0B, 0x66, 0x04, 0x66, 
                /* 0128 */    0x7F, 0x10, 0x24, 0xC6, 0x99, 0x41, 0x87, 0x05, 
                /* 0130 */    0xCB, 0x00, 0x91, 0x11, 0x41, 0xA3, 0x61, 0x67, 
                /* 0138 */    0x01, 0x0F, 0xC7, 0x33, 0x69, 0x7E, 0x62, 0x1A, 
                /* 0140 */    0x9C, 0x09, 0xC6, 0x3E, 0x3F, 0x50, 0x51, 0x07, 
                /* 0148 */    0x07, 0x4A, 0x60, 0x29, 0x03, 0x27, 0xB6, 0xC7, 
                /* 0150 */    0xA5, 0xF1, 0x9D, 0x71, 0xD4, 0x10, 0xA7, 0x7E, 
                /* 0158 */    0x66, 0xFE, 0x47, 0x78, 0x0B, 0x3E, 0x02, 0xF0, 
                /* 0160 */    0x31, 0x78, 0xB0, 0x87, 0x10, 0xF0, 0x08, 0xD9, 
                /* 0168 */    0x19, 0xC0, 0x80, 0x78, 0xEF, 0x93, 0x26, 0x73, 
                /* 0170 */    0xF1, 0x59, 0x00, 0xC6, 0xF0, 0xE1, 0x1A, 0x1F, 
                /* 0178 */    0x85, 0xC6, 0xC3, 0xCE, 0x07, 0x6C, 0x5C, 0x1C, 
                /* 0180 */    0xDE, 0x87, 0x82, 0x13, 0x2E, 0x16, 0x44, 0x01, 
                /* 0188 */    0x20, 0x24, 0xEB, 0x7C, 0x80, 0x9E, 0xF5, 0xB1, 
                /* 0190 */    0x05, 0x7C, 0x18, 0x68, 0xF6, 0x0E, 0x41, 0x08, 
                /* 0198 */    0x5E, 0x04, 0x7C, 0x74, 0xF0, 0x71, 0xC3, 0xE3, 
                /* 01A0 */    0x7E, 0xDE, 0x00, 0xC3, 0xE1, 0xC0, 0xC3, 0xF1, 
                /* 01A8 */    0x69, 0x03, 0xB8, 0x8C, 0x80, 0x4B, 0x7B, 0x52, 
                /* 01B0 */    0x98, 0x40, 0x92, 0x9F, 0x00, 0x12, 0x03, 0x83, 
                /* 01B8 */    0x3A, 0x10, 0xF8, 0x60, 0x01, 0x57, 0x12, 0x1C, 
                /* 01C0 */    0x6A, 0x78, 0x9E, 0xD8, 0x03, 0xC2, 0xFF, 0xFF, 
                /* 01C8 */    0x28, 0x4F, 0xE4, 0xC5, 0xC0, 0xD3, 0x7F, 0x0C, 
                /* 01D0 */    0x80, 0x71, 0x40, 0xF0, 0xB4, 0x4E, 0xCA, 0x37, 
                /* 01D8 */    0x8F, 0x07, 0x09, 0x0F, 0x2A, 0x4C, 0x02, 0x9F, 
                /* 01E0 */    0x12, 0x18, 0x1A, 0x3F, 0x6E, 0x80, 0x75, 0xD4, 
                /* 01E8 */    0xF8, 0x03, 0x02, 0xBC, 0x93, 0xC4, 0xF9, 0xF5, 
                /* 01F0 */    0x39, 0x00, 0x1D, 0x1A, 0x4E, 0x91, 0x81, 0xBC, 
                /* 01F8 */    0x06, 0x9C, 0xF4, 0x29, 0x79, 0x7C, 0x09, 0x7C, 
                /* 0200 */    0xE6, 0x80, 0x7D, 0x37, 0x38, 0x8C, 0x83, 0x09, 
                /* 0208 */    0x11, 0xE1, 0x3D, 0xE0, 0xA9, 0xC3, 0x77, 0x8D, 
                /* 0210 */    0x47, 0x81, 0x40, 0x11, 0x7A, 0x3B, 0x73, 0xD0, 
                /* 0218 */    0x53, 0x88, 0x51, 0xA2, 0x9D, 0x55, 0x98, 0x07, 
                /* 0220 */    0x8E, 0x28, 0x3E, 0x72, 0x18, 0xE1, 0xDD, 0xC3, 
                /* 0228 */    0x77, 0x82, 0x07, 0x90, 0xD6, 0x26, 0x27, 0xDC, 
                /* 0230 */    0x40, 0xCF, 0x1C, 0x2C, 0xDA, 0x99, 0x45, 0x16, 
                /* 0238 */    0x40, 0x14, 0x69, 0x34, 0xA8, 0x33, 0x82, 0x4F, 
                /* 0240 */    0x03, 0x9E, 0xD6, 0x53, 0x8C, 0x8F, 0x12, 0x06, 
                /* 0248 */    0x39, 0xC3, 0x03, 0x7B, 0x4E, 0x78, 0x0C, 0xF0, 
                /* 0250 */    0x80, 0xD9, 0xFD, 0xC0, 0xC7, 0x09, 0x9F, 0x0B, 
                /* 0258 */    0xF0, 0xAE, 0x01, 0x35, 0x43, 0x1F, 0x36, 0xE0, 
                /* 0260 */    0x1C, 0x3A, 0xF0, 0xA7, 0x09, 0xFC, 0xC1, 0x02, 
                /* 0268 */    0x3F, 0x1E, 0x5F, 0x73, 0xD8, 0x84, 0x13, 0x58, 
                /* 0270 */    0xFE, 0x20, 0x50, 0x23, 0x33, 0xB4, 0x67, 0x79, 
                /* 0278 */    0x5A, 0xAF, 0x01, 0x3E, 0xED, 0x98, 0xC0, 0xE7, 
                /* 0280 */    0x0D, 0xFF, 0xFF, 0xFF, 0x39, 0x1E, 0x0F, 0xF8, 
                /* 0288 */    0x15, 0x9F, 0x2E, 0xC8, 0x5D, 0xC1, 0xF3, 0xF5, 
                /* 0290 */    0xD9, 0x85, 0xD9, 0x18, 0x0F, 0x6A, 0x14, 0x3E, 
                /* 0298 */    0xE0, 0xE0, 0xCE, 0x2E, 0x3E, 0x02, 0xF8, 0xEC, 
                /* 02A0 */    0x02, 0x3C, 0x27, 0xF1, 0x2C, 0x01, 0xDE, 0x43, 
                /* 02A8 */    0x80, 0x4F, 0x24, 0xF1, 0x1E, 0xB6, 0x60, 0x8C, 
                /* 02B0 */    0x18, 0x0F, 0x79, 0xC6, 0x55, 0x0F, 0x43, 0x17, 
                /* 02B8 */    0x01, 0xAB, 0xBB, 0xAF, 0xA0, 0x8E, 0x5E, 0x60, 
                /* 02C0 */    0x82, 0x7A, 0xCD, 0xC0, 0x9D, 0x5E, 0x80, 0xCF, 
                /* 02C8 */    0x29, 0x0B, 0xDE, 0xFF, 0xFF, 0x94, 0x05, 0xDC, 
                /* 02D0 */    0xAF, 0x0A, 0xFC, 0x88, 0x02, 0x06, 0xC8, 0xCE, 
                /* 02D8 */    0x4E, 0x27, 0x42, 0x78, 0x2F, 0x79, 0x0E, 0xF1, 
                /* 02E0 */    0xED, 0xCA, 0x07, 0x93, 0x20, 0xCF, 0x01, 0x11, 
                /* 02E8 */    0x9E, 0xB2, 0xF8, 0x7D, 0x20, 0x4A, 0xCC, 0x03, 
                /* 02F0 */    0x8A, 0x14, 0xC5, 0x88, 0x41, 0x9E, 0xB0, 0x7C, 
                /* 02F8 */    0x3D, 0x89, 0x61, 0xE8, 0x60, 0xE1, 0xC2, 0x47, 
                /* 0300 */    0x78, 0xCA, 0x02, 0x2C, 0x5E, 0xB2, 0x30, 0xA7, 
                /* 0308 */    0x2C, 0x98, 0x6F, 0x03, 0x9F, 0xB2, 0xC0, 0xF1, 
                /* 0310 */    0xFF, 0x3F, 0x65, 0x81, 0x6B, 0xDC, 0x4F, 0x59, 
                /* 0318 */    0xC0, 0x4C, 0xFA, 0x73, 0x92, 0x9C, 0x6A, 0xF4, 
                /* 0320 */    0x04, 0x50, 0xF4, 0x83, 0x05, 0x85, 0xF1, 0x29, 
                /* 0328 */    0x0B, 0x70, 0x25, 0xEF, 0x80, 0x00, 0x9A, 0xB3, 
                /* 0330 */    0x93, 0x6F, 0x0B, 0x06, 0x3B, 0x66, 0x5F, 0x32, 
                /* 0338 */    0x7C, 0x4A, 0x04, 0xC3, 0x21, 0xC3, 0x77, 0xAA, 
                /* 0340 */    0x43, 0x79, 0xE4, 0x78, 0x0A, 0xF0, 0x11, 0x0B, 
                /* 0348 */    0xEC, 0x71, 0x8E, 0x01, 0x3A, 0xAE, 0xF8, 0x88, 
                /* 0350 */    0xE5, 0xFF, 0xFF, 0x11, 0x0B, 0xE0, 0xC6, 0x01, 
                /* 0358 */    0x04, 0x7F, 0xEA, 0x80, 0x75, 0x0F, 0x08, 0xEB, 
                /* 0360 */    0x43, 0x07, 0xF0, 0x90, 0xFD, 0x10, 0xD0, 0x19, 
                /* 0368 */    0xC6, 0x92, 0x41, 0x64, 0xE3, 0x5C, 0x43, 0xC7, 
                /* 0370 */    0x68, 0xF1, 0x0B, 0xD5, 0x4D, 0x21, 0xF6, 0xC1, 
                /* 0378 */    0x70, 0xD9, 0x40, 0x02, 0xF5, 0x70, 0x2D, 0x98, 
                /* 0380 */    0x42, 0xA2, 0x68, 0x34, 0x1A, 0x03, 0x13, 0x18, 
                /* 0388 */    0xC1, 0x19, 0xC4, 0x80, 0xCE, 0x08, 0xA1, 0x43, 
                /* 0390 */    0x19, 0x4E, 0xC5, 0x79, 0x08, 0xF5, 0xFF, 0x27, 
                /* 0398 */    0x18, 0xEA, 0xC6, 0x44, 0x67, 0xE7, 0xF9, 0xF3, 
                /* 03A0 */    0xDB, 0x88, 0x4F, 0x04, 0x06, 0xF6, 0x15, 0xE2, 
                /* 03A8 */    0x2D, 0x03, 0x2C, 0xC3, 0xF2, 0xE2, 0x9E, 0x00, 
                /* 03B0 */    0x8E, 0xF1, 0x24, 0x13, 0x54, 0x73, 0xAC, 0x41, 
                /* 03B8 */    0xCD, 0xC1, 0x57, 0x81, 0x37, 0x32, 0x13, 0xF8, 
                /* 03C0 */    0x0A, 0x06, 0xB6, 0xD3, 0x0C, 0x46, 0xDF, 0x9D, 
                /* 03C8 */    0x00, 0x14, 0x40, 0x3E, 0x0A, 0xF8, 0xBE, 0xFC, 
                /* 03D0 */    0x36, 0xC0, 0x66, 0xF1, 0xCA, 0x6C, 0x34, 0x9F, 
                /* 03D8 */    0x3F, 0x11, 0x43, 0x47, 0x89, 0x19, 0x3A, 0x05, 
                /* 03E0 */    0xF1, 0xD0, 0x1D, 0x74, 0xE8, 0xE8, 0xE3, 0x80, 
                /* 03E8 */    0x4F, 0x56, 0xB8, 0x60, 0x87, 0x2F, 0x68, 0x93, 
                /* 03F0 */    0x3B, 0xDA, 0x13, 0xF3, 0x2C, 0x3C, 0x4F, 0xDC, 
                /* 03F8 */    0xDC, 0xC1, 0x74, 0x44, 0x82, 0x31, 0x78, 0xCC, 
                /* 0400 */    0xE4, 0xC1, 0x2C, 0x70, 0xF2, 0xA0, 0xF8, 0xFF, 
                /* 0408 */    0x4F, 0x1E, 0x26, 0x3C, 0x26, 0xEC, 0xE1, 0x90, 
                /* 0410 */    0x1E, 0x3A, 0x3C, 0x32, 0x3E, 0x4E, 0x9F, 0x7E, 
                /* 0418 */    0x18, 0xF6, 0xE9, 0x9C, 0x4B, 0xD1, 0x33, 0xD2, 
                /* 0420 */    0x1D, 0xE3, 0x99, 0x0B, 0x03, 0xEB, 0x91, 0x73, 
                /* 0428 */    0x58, 0xA3, 0x85, 0x3D, 0xE0, 0xE7, 0x10, 0xDF, 
                /* 0430 */    0x61, 0x7C, 0xE0, 0x61, 0xB0, 0x3E, 0xBD, 0x80, 
                /* 0438 */    0xE3, 0xF8, 0x05, 0xFF, 0x34, 0x00, 0x9E, 0x03, 
                /* 0440 */    0x88, 0xC7, 0xF0, 0x02, 0xC2, 0x8F, 0x2F, 0x3A, 
                /* 0448 */    0xFF, 0x52, 0xA1, 0x8B, 0x93, 0x3C, 0x18, 0xD4, 
                /* 0450 */    0x69, 0x0A, 0x70, 0x75, 0x7A, 0x03, 0xCF, 0x55, 
                /* 0458 */    0x1F, 0x77, 0x96, 0xC2, 0xFD, 0xFF, 0xCF, 0x52, 
                /* 0460 */    0x30, 0x0E, 0xBF, 0xBE, 0xC0, 0xFB, 0x2E, 0x65, 
                /* 0468 */    0x84, 0x03, 0x79, 0x96, 0x02, 0x7B, 0xEC, 0x67, 
                /* 0470 */    0x88, 0x0E, 0x01, 0x3E, 0x4B, 0x01, 0xFC, 0x78, 
                /* 0478 */    0x7D, 0xF8, 0x3C, 0x03, 0x37, 0xF0, 0xE9, 0x17, 
                /* 0480 */    0x68, 0xFD, 0xFF, 0x4F, 0x21, 0xE0, 0x3F, 0x46, 
                /* 0488 */    0xF8, 0x88, 0x83, 0x3B, 0xFA, 0x02, 0xB7, 0x83, 
                /* 0490 */    0x31, 0x3F, 0x63, 0xE0, 0x8E, 0x63, 0xC0, 0xE3, 
                /* 0498 */    0xE4, 0x8C, 0x3B, 0x4D, 0x78, 0x08, 0x7C, 0x00, 
                /* 04A0 */    0xAD, 0x4E, 0x8F, 0x9C, 0x7A, 0x4E, 0x09, 0x77, 
                /* 04A8 */    0x1C, 0xE0, 0x53, 0xC2, 0x0D, 0x00, 0xA3, 0xD0, 
                /* 04B0 */    0xA6, 0x4F, 0x8D, 0x46, 0xAD, 0x1A, 0x94, 0xA9, 
                /* 04B8 */    0x51, 0xA6, 0x41, 0xAD, 0x3E, 0x95, 0x1A, 0x33, 
                /* 04C0 */    0xA6, 0x03, 0xCE, 0xAF, 0x03, 0x1D, 0x0F, 0x1C, 
                /* 04C8 */    0xEA, 0x85, 0x20, 0x10, 0x4B, 0x7A, 0x75, 0x08, 
                /* 04D0 */    0xC4, 0xA2, 0x3C, 0x80, 0xB0, 0xB8, 0x26, 0x40, 
                /* 04D8 */    0x98, 0xF0, 0x37, 0x81, 0x40, 0x1C, 0x1B, 0x84, 
                /* 04E0 */    0x8A, 0xA5, 0x97, 0x91, 0xF1, 0x19, 0x44, 0x40, 
                /* 04E8 */    0x0E, 0xE1, 0x03, 0x88, 0x45, 0x02, 0x11, 0x38, 
                /* 04F0 */    0x51, 0x02, 0x4A, 0x9D, 0x80, 0x30, 0xA1, 0xAF, 
                /* 04F8 */    0x06, 0x81, 0xF8, 0xFF, 0x0F
            })
        }
    }

    Scope (\_SB.AMW0)
    {
        Name (WMEV, 0x00)
        Name (WMBU, Buffer (0x80) {})
        Name (WM, 0x00)
        Method (SWEV, 1, NotSerialized)
        {
            Or (WMEV, Arg0, WMEV)
        }

        Method (CWEV, 1, NotSerialized)
        {
            And (WMEV, Not (Arg0), WMEV)
        }

        Method (WVSP, 0, NotSerialized)
        {
            Acquire (WMIX, 0xFFFF)
            Store (0x00, WM)
            BCLR (WMBU)
        }

        Method (WVCU, 0, NotSerialized)
        {
            Acquire (WMIX, 0xFFFF)
            Store (0x00, WM)
        }

        Method (WVPT, 1, NotSerialized)
        {
            Store (WM, Local0)
            Add (Local0, 0x02, Local0)
            If (LLessEqual (Local0, SizeOf (WMBU)))
            {
                CreateWordField (WMBU, WM, WMWD)
                Store (Arg0, WMWD)
                Store (Local0, WM)
            }
        }

        Method (_WED, 1, NotSerialized)
        {
            WVSP ()
            If (LNotEqual (Arg0, 0xD0))
            {
                WVCU ()
                Return (WMBU)
            }

            If (LEqual (ECD0, 0x00))
            {
                WVCU ()
                Return (WMBU)
            }

            If (And (WMEV, 0x0200))
            {
                CWEV (0x0200)
                WVPT (0x02)
                WVPT (0x00)
                WVPT (0xE045)
            }
            Else
            {
                If (And (WMEV, 0x0100))
                {
                    CWEV (0x0100)
                    If (ECG4 ())
                    {
                        WVPT (0x02)
                        WVPT (0x00)
                        WVPT (0xE043)
                    }
                    Else
                    {
                        WVPT (0x02)
                        WVPT (0x00)
                        WVPT (0xE044)
                    }
                }
                Else
                {
                    If (And (WMEV, 0x0800))
                    {
                        Store (EC0A (WMBU), WMBU)
                        CWEV (0x0800)
                    }
                }
            }

            WVCU ()
            Return (WMBU)
        }
    }

    Scope (\)
    {
        Method (WMNF, 2, NotSerialized)
        {
            \_SB.AMW0.SWEV (Arg0)
            Notify (\_SB.AMW0, 0xD0)
        }
    }

    Scope (\_TZ)
    {
        ThermalZone (THM)
        {
            Method (_CRT, 0, NotSerialized)
            {
                Store (0x6B, Local0)
                Multiply (Local0, 0x0A, Local0)
                Add (Local0, 0x0AAC, Local0)
                Return (Local0)
            }

            Method (_TMP, 0, NotSerialized)
            {
                Store (GENS (0x16, 0x00, 0x00), Local0)
                If (LLess (Local0, 0x0BA6))
                {
                    Store (0x0BA6, Local0)
                }

                Return (Local0)
            }
        }
    }

    Name (SP2O, 0x4E)
    Scope (\)
    {
        Name (DCKS, 0xFF)
        Name (DCKT, 0x00)
    }

    Scope (\_SB.PCI0.LPCB)
    {
        Method (DCK3, 0, NotSerialized)
        {
            If (CondRefOf (\_SB.PCI0.LPCB.LPTE))
            {
                Notify (\_SB.PCI0.LPCB.LPTE, 0x01)
            }

            If (CondRefOf (\_SB.PCI0.LPCB.UAR1))
            {
                Notify (\_SB.PCI0.LPCB.UAR1, 0x01)
            }
        }

        Method (DCK4, 2, NotSerialized)
        {
            Store (Arg0, DCKS)
            Store (Arg1, DCKT)
            DCK3 ()
        }

        Method (DCK5, 2, NotSerialized)
        {
            Store (ECRB (0x2D), Local0)
            If (LNotEqual (Local0, DCKT))
            {
                DCK3 ()
            }
        }
    }

    Scope (\_SB.PCI0.LPCB)
    {
        OperationRegion (LPCB, SystemIO, \SP2O, 0x02)
        Field (LPCB, ByteAcc, Lock, Preserve)
        {
            INDX,   8, 
            DATA,   8
        }

        IndexField (INDX, DATA, ByteAcc, Lock, Preserve)
        {
                    Offset (0x01), 
            CR01,   8, 
            CR02,   8, 
                    Offset (0x0C), 
            CR0C,   8, 
                    Offset (0x22), 
            CR22,   8, 
            CR23,   8, 
            CR24,   8, 
            CR25,   8, 
            CR26,   8, 
            CR27,   8, 
            CR28,   8, 
                    Offset (0x55), 
            CR55,   8, 
                    Offset (0xAA), 
            CRAA,   8
        }

        Device (UAR1)
        {
            Name (_HID, EisaId ("PNP0501"))
            Name (_UID, 0x00)
            Name (_PRW, Package (0x02)
            {
                0x08, 
                0x03
            })
            Method (_STA, 0, Serialized)
            {
                Name (DCK9, Buffer (0x04) {})
                CreateByteField (DCK9, 0x00, DCK8)
                CreateByteField (DCK9, 0x01, DCK6)
                CreateByteField (DCK9, 0x02, DCK2)
                CreateByteField (DCK9, 0x03, DCK7)
                Store (0x01, DCK8)
                Store (GENS (0x13, DCK9, SizeOf (DCK9)), Local0)
                Store (Local0, DCK9)
                If (LAnd (LEqual (DCK6, 0x01), LEqual (DCK7, 0x01)))
                {
                    If (LOr (LEqual (DCK2, 0x01), LEqual (DCK2, 0x04)))
                    {
                        Return (0x0F)
                    }
                }

                Return (0x00)
            }

            Method (_DIS, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (And (CR02, 0xF0), CR02)
                Store (0x00, CRAA)
            }

            Method (_CRS, 0, Serialized)
            {
                Name (BUF0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x03F8,             // Range Minimum
                        0x03F8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4}
                })
                CreateByteField (BUF0, 0x02, IOL0)
                CreateByteField (BUF0, 0x03, IOH0)
                CreateByteField (BUF0, 0x04, IOL1)
                CreateByteField (BUF0, 0x05, IOH1)
                CreateByteField (BUF0, 0x07, LEN0)
                CreateWordField (BUF0, 0x09, IRQW)
                Store (0x00, CR55)
                ShiftLeft (CR24, 0x02, IOL0)
                ShiftLeft (CR24, 0x02, IOL1)
                ShiftRight (CR24, 0x06, IOH0)
                ShiftRight (CR24, 0x06, IOH1)
                Store (0x08, LEN0)
                ShiftLeft (One, ShiftRight (And (CR28, 0xF0), 0x04), IRQW)
                Store (0x00, CRAA)
                Return (BUF0)
            }

            Name (_PRS, ResourceTemplate ()
            {
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x03F8,             // Range Minimum
                        0x03F8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x03F8,             // Range Minimum
                        0x03F8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4,5,6,7,10,11,12}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x02F8,             // Range Minimum
                        0x02F8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4,5,6,7,10,11,12}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x03E8,             // Range Minimum
                        0x03E8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4,5,6,7,10,11,12}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x02E8,             // Range Minimum
                        0x02E8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {4,5,6,7,10,11,12}
                }
                EndDependentFn ()
            })
            Method (_SRS, 1, Serialized)
            {
                CreateByteField (Arg0, 0x02, IOLO)
                CreateByteField (Arg0, 0x03, IOHI)
                CreateWordField (Arg0, 0x09, IRQW)
                Store (0x00, CR55)
                Store (And (CR02, 0xF0), CR02)
                Store (ShiftRight (IOLO, 0x02), CR24)
                Or (CR24, ShiftLeft (IOHI, 0x06), CR24)
                And (CR28, 0x0F, CR28)
                Or (CR28, ShiftLeft (Subtract (FindSetRightBit (IRQW), 0x01), 0x04
                    ), CR28)
                And (IOD0, 0xF8, IOD0)
                If (LEqual (IOHI, 0x03))
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Or (IOD0, 0x00, IOD0)
                    }
                    Else
                    {
                        Or (IOD0, 0x07, IOD0)
                    }
                }
                Else
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Or (IOD0, 0x01, IOD0)
                    }
                    Else
                    {
                        Or (IOD0, 0x05, IOD0)
                    }
                }

                Store (Or (CR02, 0x08), CR02)
                Store (0x00, CRAA)
            }

            Method (_PS0, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (Or (CR02, 0x08), CR02)
                Store (0x00, CRAA)
            }

            Method (_PS3, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (And (CR02, 0xF0), CR02)
                Store (0x00, CRAA)
            }
        }

        Device (LPTE)
        {
            Name (_HID, EisaId ("PNP0401"))
            Name (_UID, 0x05)
            Method (CLPS, 0, NotSerialized)
            {
                Name (DCK9, Buffer (0x04) {})
                CreateByteField (DCK9, 0x00, DCK8)
                CreateByteField (DCK9, 0x01, DCK6)
                CreateByteField (DCK9, 0x02, DCK2)
                CreateByteField (DCK9, 0x03, DCK7)
                Store (0x02, DCK8)
                Store (GENS (0x13, DCK9, SizeOf (DCK9)), Local0)
                Store (Local0, DCK9)
                If (LAnd (LEqual (DCK6, 0x01), LEqual (DCK7, 0x01)))
                {
                    If (LOr (LEqual (DCK2, 0x01), LEqual (DCK2, 0x04)))
                    {
                        Return (0x01)
                    }
                }

                Return (0x00)
            }

            Method (_STA, 0, Serialized)
            {
                If (CLPS ())
                {
                    Store (0x00, CR55)
                    Store (CR01, Local0)
                    Store (0x00, CRAA)
                    If (And (Local0, 0x04))
                    {
                        Return (0x0F)
                    }

                    Return (0x0D)
                }

                Return (0x0D)
            }

            Method (_DIS, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (And (CR01, 0xFB), CR01)
                Store (0x00, CRAA)
            }

            Method (_CRS, 0, Serialized)
            {
                Name (BUF0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0000,             // Range Minimum
                        0x0000,             // Range Maximum
                        0x01,               // Alignment
                        0x00,               // Length
                        )
                    IRQNoFlags ()
                        {0}
                })
                If (CLPS ())
                {
                    CreateByteField (BUF0, 0x02, IOL0)
                    CreateByteField (BUF0, 0x03, IOH0)
                    CreateByteField (BUF0, 0x04, IOL1)
                    CreateByteField (BUF0, 0x05, IOH1)
                    CreateByteField (BUF0, 0x07, LEN0)
                    CreateWordField (BUF0, 0x09, IRQW)
                    Store (0x00, CR55)
                    ShiftLeft (CR23, 0x02, IOL0)
                    ShiftLeft (CR23, 0x02, IOL1)
                    ShiftRight (CR23, 0x06, IOH0)
                    ShiftRight (CR23, 0x06, IOH1)
                    Store (0x04, LEN0)
                    Store (0x00, Local1)
                    And (CR27, 0x0F, Local1)
                    ShiftLeft (0x01, Local1, IRQW)
                    Store (0x00, CRAA)
                }

                Return (BUF0)
            }

            Name (_PRS, ResourceTemplate ()
            {
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x0378,             // Range Minimum
                        0x0378,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {5}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x0278,             // Range Minimum
                        0x0278,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {5}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x03BC,             // Range Minimum
                        0x03BC,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {5}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x0378,             // Range Minimum
                        0x0378,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {7}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x0278,             // Range Minimum
                        0x0278,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {7}
                }
                StartDependentFn (0x00, 0x02)
                {
                    IO (Decode16,
                        0x03BC,             // Range Minimum
                        0x03BC,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {7}
                }
                EndDependentFn ()
            })
            Method (_SRS, 1, Serialized)
            {
                If (LEqual (CLPS (), 0x00))
                {
                    Return (Zero)
                }

                CreateByteField (Arg0, 0x02, IOL0)
                CreateByteField (Arg0, 0x03, IOH0)
                CreateWordField (Arg0, 0x09, IRQW)
                Store (0x00, CR55)
                Store (And (CR01, 0xFB), CR01)
                Store (ShiftRight (IOL0, 0x02), CR23)
                Or (CR23, ShiftLeft (IOH0, 0x06), CR23)
                FindSetRightBit (IRQW, Local0)
                If (LNotEqual (IRQW, Zero))
                {
                    Decrement (Local0)
                }

                Store (Local0, CR27)
                And (IOD1, 0xFC, IOD1)
                If (LEqual (IOH0, 0x03))
                {
                    If (LEqual (IOL0, 0x78))
                    {
                        Or (IOD1, 0x00, IOD1)
                    }
                    Else
                    {
                        Or (IOD1, 0x02, IOD1)
                    }
                }
                Else
                {
                    Or (IOD1, 0x01, IOD1)
                }

                Or (CR01, 0x04, CR01)
                Store (0x00, CRAA)
            }

            Method (_PS0, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (Or (CR01, 0x04), CR01)
                Store (0x00, CRAA)
            }

            Method (_PS3, 0, Serialized)
            {
                Store (0x00, CR55)
                Store (And (CR01, 0xFB), CR01)
                Store (0x00, CRAA)
            }
        }
    }

    Scope (\)
    {
        Method (VDP2, 2, NotSerialized)
        {
            Name (VDP3, Buffer (0x10) {})
            CreateByteField (VDP3, 0x00, VDP4)
            CreateWordField (VDP3, 0x01, VDP5)
            CreateDWordField (VDP3, 0x03, VDP6)
            Store (0x04, VDP4)
            Store (Arg0, VDP5)
            Store (Arg1, VDP6)
            GENS (0x05, VDP3, SizeOf (VDP3))
        }

        Method (VDP1, 2, NotSerialized)
        {
            Store (Arg1, Local0)
            ShiftLeft (Local0, 0x08, Local0)
            Or (Local0, Arg0, Local0)
            Store (GENS (0x05, Local0, 0x00), Local0)
            Return (Local0)
        }
    }

    Scope (\_SB.PCI0.PEG0.VID)
    {
        Name (EVD4, Buffer (0x01) {})
        CreateByteField (EVD4, 0x00, EVD5)
        Name (SSBU, Buffer (0x04) {})
        CreateDWordField (SSBU, 0x00, SSDS)
        Name (NOPE, 0x00)
        OperationRegion (PCS, PCI_Config, 0x00, 0x40)
        Field (PCS, AnyAcc, NoLock, WriteAsZeros)
        {
            VVID,   16, 
            VDID,   16, 
                    Offset (0x0A), 
            DCLS,   16
        }

        OperationRegion (PCS2, PCI_Config, 0x40, 0x40)
        Field (PCS2, AnyAcc, NoLock, Preserve)
        {
            SSID,   32
        }

        Method (VINI, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x02))
            {
                Store (0x00, EVD5)
                Store (DCLS, Local1)
                If (LEqual (DCLS, 0x0300))
                {
                    Store (VVID, Local1)
                    Store (0x01, EVD5)
                    If (LEqual (VVID, 0x10DE))
                    {
                        If (LNotEqual (OSID (), 0x80))
                        {
                            VDP1 (0x07, 0x00)
                        }

                        Store (VDP1 (0x08, 0x00), NOPE)
                        Store (SSID, SSDS)
                    }
                }
            }
        }

        Name (VDP7, Buffer (0x02)
        {
            0x00, 0x00
        })
        CreateByteField (VDP7, 0x01, VDP8)
        Method (DINI, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x02))
            {
                Store (0x01, VDP8)
            }
        }

        Method (EVD1, 2, NotSerialized)
        {
            If (LEqual (EVD5, 0x01))
            {
                If (LEqual (VVID, 0x10DE))
                {
                    Notify (\_SB.PCI0.PEG0.VID, 0x80)
                }
            }
        }

        Method (EVD2, 2, NotSerialized)
        {
            If (LEqual (EVD5, 0x01))
            {
                If (LEqual (VVID, 0x10DE))
                {
                    If (LEqual (Arg1, 0x00))
                    {
                        Notify (\_SB.PCI0.PEG0.VID, 0xD1)
                    }
                    Else
                    {
                        Notify (\_SB.PCI0.PEG0.VID, 0xD2)
                    }
                }
            }
        }

        Method (EVD6, 2, NotSerialized)
        {
            If (LEqual (NOPE, 0x01))
            {
                Notify (\_SB.PCI0.PEG0.VID, 0x81)
            }
        }

        Method (EVD3, 2, NotSerialized)
        {
            If (LEqual (Arg0, 0x03))
            {
                If (LEqual (EVD5, 0x01))
                {
                    If (LEqual (VVID, 0x10DE))
                    {
                        If (LLess (OSID (), 0x20))
                        {
                            VDP1 (0x05, Arg1)
                        }
                    }

                    Notify (\_SB.LID, 0x80)
                }
            }
        }

        Method (BRT6, 2, NotSerialized)
        {
            If (LEqual (EVD5, 0x01))
            {
                If (LEqual (Arg0, 0x01))
                {
                    Notify (\_SB.PCI0.PEG0.VID.LCD, 0x86)
                }

                If (And (Arg0, 0x02))
                {
                    Notify (\_SB.PCI0.PEG0.VID.LCD, 0x87)
                }
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (VID)
        {
            Name (_ADR, 0x00020000)
            Name (IVD5, Buffer (0x03) {})
            CreateByteField (IVD5, 0x00, IVD6)
            CreateByteField (IVD5, 0x01, IVD7)
            CreateByteField (IVD5, 0x02, IVD8)
            OperationRegion (PCS, PCI_Config, 0x00, 0x0100)
            Field (PCS, AnyAcc, NoLock, WriteAsZeros)
            {
                VVID,   16, 
                        Offset (0x0A), 
                DCLS,   16
            }

            Method (VINI, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x02))
                {
                    Store (0x00, IVD6)
                    Store (DCLS, Local1)
                    If (LEqual (DCLS, 0x0300))
                    {
                        Store (0x01, IVD6)
                        Store (\_SB.LID._LID (), Local0)
                        \_SB.PCI0.VID.GLID (Local0)
                    }
                }
            }

            Name (VDP7, Buffer (0x02)
            {
                0x00, 0x00
            })
            CreateByteField (VDP7, 0x01, VDP8)
            Method (DINI, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x02))
                {
                    Store (0x01, VDP8)
                }
            }

            Method (_DOS, 1, NotSerialized)
            {
                Store (Arg0, VDP8)
                VDP1 (0x01, VDP8)
            }

            Method (_DOD, 0, NotSerialized)
            {
                Return (Package (0x08)
                {
                    0x0100, 
                    0x0400, 
                    0x0302, 
                    0x0303, 
                    0x0300, 
                    0x0301, 
                    0x0304, 
                    0x0305
                })
            }

            Device (CRT)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0100)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x02), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x02), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x02, Arg0)
                }
            }

            Device (LCD)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0400)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x01), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x01), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x01, Arg0)
                }

                Name (BRT0, 0x64)
                Name (DBCL, Package (0x12) {})
                Method (_BCL, 0, Serialized)
                {
                    Name (BRT1, Buffer (0x12) {})
                    CreateByteField (BRT1, 0x00, BRT2)
                    Store (0x01, BRT2)
                    Store (GENS (0x09, BRT1, SizeOf (BRT1)), Local2)
                    Store (0x00, Local0)
                    Store (0x12, Local1)
                    While (LLess (Local0, Local1))
                    {
                        Store (BBRD (Local2, Local0), Local3)
                        Store (Local3, Index (DBCL, Local0))
                        Increment (Local0)
                    }

                    Return (DBCL)
                }

                Method (_BCM, 1, Serialized)
                {
                    Name (BRT3, Buffer (0x02) {})
                    CreateByteField (BRT3, 0x00, BRT4)
                    CreateByteField (BRT3, 0x01, BRT5)
                    Store (0x02, BRT4)
                    Store (Arg0, BRT5)
                    Store (Arg0, BRT0)
                    GENS (0x09, BRT3, SizeOf (BRT3))
                }

                Method (_BQC, 0, Serialized)
                {
                    Store (GENS (0x09, 0x03, 0x00), Local0)
                    Store (Local0, BRT0)
                    Return (Local0)
                }
            }

            Device (DVI)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0302)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x08), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x08), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x08, Arg0)
                }
            }

            Device (DVI2)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0303)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x10), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x10), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x10, Arg0)
                }
            }

            Device (DVI3)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0304)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x80), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x80), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x80, Arg0)
                }
            }

            Device (DP)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0300)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x20), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x20), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x20, Arg0)
                }
            }

            Device (DP2)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0301)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x40), Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x40), Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x40, Arg0)
                }
            }

            Device (DP3)
            {
                Method (_ADR, 0, NotSerialized)
                {
                    Return (0x0305)
                }

                Method (_DCS, 0, NotSerialized)
                {
                    Store (VDP1 (0x02, 0x0100), Local0)
                    And (Local0, 0xFFFF, Local0)
                    Return (Local0)
                }

                Method (_DGS, 0, NotSerialized)
                {
                    Store (VDP1 (0x03, 0x0100), Local0)
                    And (Local0, 0xFFFF, Local0)
                    Return (Local0)
                }

                Method (_DSS, 1, NotSerialized)
                {
                    VDP2 (0x0100, Arg0)
                }
            }

            Method (BRT6, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x01))
                {
                    Notify (\_SB.PCI0.VID.LCD, 0x86)
                }

                If (And (Arg0, 0x02))
                {
                    Notify (\_SB.PCI0.VID.LCD, 0x87)
                }
            }

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

            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
            }

            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 (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
            }

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

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

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

                Package (0x02)
                {
                    0x00, 
                    0x00
                }, 

                Package (0x02)
                {
                    0xDE, 
                    0x014D
                }
            })
            Name (SUCC, 0x01)
            Name (NVLD, 0x02)
            Name (CRIT, 0x04)
            Name (NCRT, 0x06)
            Method (GSCI, 0, NotSerialized)
            {
                Method (GBDA, 0, NotSerialized)
                {
                    If (LEqual (GESF, 0x00))
                    {
                        Store (0x0679, PARM)
                        Store (Zero, GESF)
                        Return (SUCC)
                    }

                    If (LEqual (GESF, 0x01))
                    {
                        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, 0x01, PARM)
                        Or (PARM, ShiftLeft (GMFN, 0x01), PARM)
                        Or (PARM, ShiftLeft (0x03, 0x0B), PARM)
                        Or (PARM, ShiftLeft (IDMS, 0x11), PARM)
                        Or (ShiftLeft (DerefOf (Index (DerefOf (Index (CDCT, HVCO)), CDVL
                            )), 0x15), PARM, PARM)
                        Store (0x01, GESF)
                        Return (SUCC)
                    }

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

                        Store (0x00, GESF)
                        Return (SUCC)
                    }

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

                    Store (Zero, GESF)
                    Return (CRIT)
                }

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

                    If (LEqual (GESF, 0x01))
                    {
                        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, 0x00))
                        {
                            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, 0x01), 0x01, IF1E)
                        If (And (PARM, ShiftLeft (0x0F, 0x0D)))
                        {
                            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, 0x01))
                        {
                            If (LEqual (ShiftRight (PARM, 0x01), 0x01))
                            {
                                Store (0x01, ISSC)
                            }
                            Else
                            {
                                Store (Zero, GESF)
                                Return (CRIT)
                            }
                        }
                        Else
                        {
                            Store (0x00, 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)
                }

                If (LEqual (GEFC, 0x04))
                {
                    Store (GBDA (), GXFC)
                }

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

                Store (0x00, GEFC)
                Store (0x01, SCIS)
                Store (0x00, GSSE)
                Store (0x00, SCIE)
                Return (Zero)
            }

            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 (GNOT, 2, NotSerialized)
            {
                If (PDRD ())
                {
                    Return (0x01)
                }

                Store (Arg0, CEVT)
                Store (0x03, CSTS)
                If (LAnd (LEqual (CHPD, 0x00), LEqual (Arg1, 0x00)))
                {
                    If (LOr (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6)))
                    {
                        Notify (\_SB.PCI0, Arg1)
                    }
                    Else
                    {
                        Notify (\_SB.PCI0.VID, Arg1)
                    }
                }

                If (CondRefOf (HNOT))
                {
                    HNOT (Arg0)
                }
                Else
                {
                    Notify (\_SB.PCI0.VID, 0x80)
                }

                Return (0x00)
            }

            Method (GHDS, 1, NotSerialized)
            {
                Store (Arg0, TIDX)
                Return (GNOT (0x01, 0x00))
            }

            Method (GLID, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x01))
                {
                    Store (0x03, CLID)
                }
                Else
                {
                    Store (Arg0, CLID)
                }

                Return (GNOT (0x02, 0x00))
            }

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

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

                Return (LNot (ARDY))
            }

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

                If (PARD ())
                {
                    Return (0x01)
                }

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

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

                        If (LEqual (Local0, 0x08))
                        {
                            If (And (Local1, 0x01))
                            {
                                Store (0x01, 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, 0x01))
                    {
                        Store (Arg1, BCLP)
                        Or (BCLP, 0x80000000, BCLP)
                        Store (0x02, ASLC)
                    }
                    Else
                    {
                        If (LEqual (Arg0, 0x00))
                        {
                            Store (Arg1, ALSI)
                            Store (0x01, ASLC)
                        }
                        Else
                        {
                            Return (0x01)
                        }
                    }
                }

                Store (0x01, ASLE)
                Return (0x00)
            }

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

                Return (0x00)
            }

            Scope (\_GPE)
            {
                Method (_L06, 0, NotSerialized)
                {
                    If (LNotEqual (\_SB.PCI0.VID.SCIP (), 0x00))
                    {
                        If (\_SB.PCI0.VID.GSSE)
                        {
                            \_SB.PCI0.VID.GSCI ()
                        }
                        Else
                        {
                            Store (0x01, SCIS)
                        }
                    }
                }
            }

            Method (ILID, 0, NotSerialized)
            {
                If (LEqual (IVD6, 0x01))
                {
                    Store (\_SB.LID._LID (), Local0)
                    \_SB.PCI0.VID.GLID (Local0)
                    Notify (\_SB.LID, 0x80)
                    Store (0x00, IVD8)
                    Sleep (0x01F4)
                    Store (0x01, Local0)
                }
                Else
                {
                    Store (0x00, Local0)
                }

                Return (Local0)
            }

            Method (ILDE, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    ILID ()
                }
            }

            Method (IVD1, 2, NotSerialized)
            {
                If (LEqual (IVD6, 0x01))
                {
                    \_SB.PCI0.VID.GHDS (0x00)
                }
            }

            Method (IVD2, 2, NotSerialized)
            {
                If (LEqual (IVD6, 0x01))
                {
                    \_SB.PCI0.VID.GDCK (\_SB.PCI0.VID.CDCK)
                    If (LEqual (\_SB.PCI0.VID.CDCK, 0x01))
                    {
                        If (LEqual (\_SB.PCI0.VID.CLID, 0x00))
                        {
                            Sleep (0x07D0)
                            Store (0x01, IVD8)
                            \_SB.PCI0.VID.GLID (0x01)
                            Notify (\_SB.LID, 0x80)
                            Sleep (0x02EE)
                            \_SB.PCI0.VID.GLID (0x00)
                            Notify (\_SB.LID, 0x80)
                            Sleep (0x07D0)
                        }
                    }
                }
            }

            Method (IVD4, 2, NotSerialized)
            {
                Store (\_SB.LID._LID (), IVD7)
            }

            Method (IVD3, 2, NotSerialized)
            {
                If (LEqual (IVD6, 0x01))
                {
                    Store (\_SB.LID._LID (), Local0)
                    Store (Local0, \_SB.PCI0.VID.CLID)
                    If (LEqual (Arg0, 0x03))
                    {
                        If (Or (LNotEqual (IVD7, Local0), LEqual (Local0, 0x00)))
                        {
                            If (LGreaterEqual (OSID (), 0x20))
                            {
                                \_SB.PCI0.VID.GLID (Local0)
                            }
                            Else
                            {
                                ILID ()
                            }
                        }
                    }
                }
            }
        }
    }

    Device (\_SB.MEM2)
    {
        Name (_HID, EisaId ("PNP0C01"))
        Name (_UID, 0x02)
        Name (CRS, ResourceTemplate ()
        {
            Memory32Fixed (ReadWrite,
                0x20000000,         // Address Base
                0x00200000,         // Address Length
                )
            Memory32Fixed (ReadWrite,
                0x40000000,         // Address Base
                0x00200000,         // Address Length
                )
        })
        Method (_CRS, 0, NotSerialized)
        {
            If (IGDS)
            {
                Return (CRS)
            }
        }
    }

    Scope (\_SB.PCI0.VID)
    {
        Method (IBL1, 2, NotSerialized)
        {
            If (LEqual (\_SB.PCI0.VID.IVD6, 0x01))
            {
                If (LAnd (LGreaterEqual (Arg0, 0x00), LLessEqual (Arg0, 0xFF)))
                {
                    \_SB.PCI0.VID.AINT (0x01, Arg0)
                    Store (Arg0, BRTL)
                }
            }
        }
    }

    Scope (\_SB.PCI0.GLAN)
    {
        Method (_PSW, 1, NotSerialized)
        {
            If (Arg0)
            {
                GENS (0x1B, 0x01, 0x00)
            }
            Else
            {
                GENS (0x1B, 0x00, 0x00)
            }
        }
    }

    Scope (\_SB.PCI0.LPCB)
    {
        Device (PS2M)
        {
            Name (_HID, EisaId ("DLL0493"))
            Name (_CID, EisaId ("PNP0F13"))
            Name (_CRS, ResourceTemplate ()
            {
                IRQ (Edge, ActiveHigh, Exclusive, )
                    {12}
            })
            Name (_PRS, ResourceTemplate ()
            {
                StartDependentFn (0x00, 0x00)
                {
                    IRQNoFlags ()
                        {12}
                }
                EndDependentFn ()
            })
        }
    }

    Method (\AWAK, 1, NotSerialized)
    {
        Return (Package (0x02)
        {
            0x00, 
            0x00
        })
    }

    Method (\APTS, 1, NotSerialized)
    {
    }

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S3, Package (0x04)
    {
        0x05, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x06, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Method (_PTS, 1, NotSerialized)
    {
        \APTS (Arg0)
        \EV5 (Arg0, 0x00)
    }

    Method (_WAK, 1, NotSerialized)
    {
        \EV2 (Arg0, 0x00)
        \AWAK (Arg0)
        Return (Package (0x02)
        {
            0x00, 
            0x00
        })
    }

    Scope (\_SB.PCI0)
    {
        Method (_INI, 0, NotSerialized)
        {
            \EV1 (0x02, 0x00)
        }
    }

    Method (\EV14, 2, NotSerialized)
    {
        \_SB.PCI0.VID.IBL1 (Arg0, Arg1)
    }

    Method (\EV10, 2, NotSerialized)
    {
        \_SB.PCI0.PEG0.VID.EVD2 (Arg0, Arg1)
    }

    Method (\EV12, 2, NotSerialized)
    {
        \_SB.BTEV (Arg0, Arg1)
    }

    Method (\EV7, 2, NotSerialized)
    {
        \_SB.PCI0.LPCB.DCK4 (Arg0, Arg1)
    }

    Method (\EV15, 2, NotSerialized)
    {
        \_SB.PCI0.PEG0.VID.EVD1 (Arg0, Arg1)
        \_SB.PCI0.VID.IVD1 (Arg0, Arg1)
    }

    Method (\EV8, 2, NotSerialized)
    {
        WMNF (Arg0, Arg1)
    }

    Method (\EV6, 2, NotSerialized)
    {
        \_SB.BTNV (Arg0, Arg1)
        \_SB.PCI0.PEG0.VID.EVD3 (Arg0, Arg1)
        \_SB.PCI0.VID.ILDE (Arg0, Arg1)
    }

    Method (\EV17, 2, NotSerialized)
    {
    }

    Method (\EV1, 2, NotSerialized)
    {
        \_SB.PCI0.IINI (Arg0, Arg1)
        \_SB.PCI0.LPCB.EINI (Arg0, Arg1)
        \_SB.PCI0.PEG0.VID.DINI (Arg0, Arg1)
        \_SB.PCI0.PEG0.VID.VINI (Arg0, Arg1)
        \_SB.PCI0.VID.DINI (Arg0, Arg1)
        \_SB.PCI0.VID.VINI (Arg0, Arg1)
        \_SB.SOS0 (Arg0, Arg1)
    }

    Method (\EV3, 2, NotSerialized)
    {
        \_PR.PPCE (Arg0, Arg1)
    }

    Method (\EV5, 2, NotSerialized)
    {
        ECS1 (Arg0, Arg1)
        \_SB.PCI0.VID.IVD4 (Arg0, Arg1)
    }

    Method (\EV9, 2, NotSerialized)
    {
        \_SB.PCI0.PEG0.VID.EVD6 (Arg0, Arg1)
    }

    Method (\EV4, 2, NotSerialized)
    {
        \_SB.PCI0.SAT0.SEC0.ODDE (Arg0, Arg1)
    }

    Method (\EV13, 2, NotSerialized)
    {
        \_SB.PCI0.PEG0.VID.BRT6 (Arg0, Arg1)
        \_SB.PCI0.VID.BRT6 (Arg0, Arg1)
    }

    Method (\EV16, 2, NotSerialized)
    {
        \_SB.PCI0.VID.IVD2 (Arg0, Arg1)
    }

    Method (\EV11, 2, NotSerialized)
    {
        \_SB.ACEV (Arg0, Arg1)
    }

    Method (\EV2, 2, NotSerialized)
    {
        \_GPE.NWAK (Arg0, Arg1)
        \_SB.CBAT (Arg0, Arg1)
        \_SB.PCI0.LPCB.DCK5 (Arg0, Arg1)
        \_SB.PCI0.LPCB.ECDV.ECM9 (Arg0, Arg1)
        \_SB.PCI0.VID.IVD3 (Arg0, Arg1)
        \_SB.SOS4 (Arg0, Arg1)
    }
}


Follow ups

References