← Back to team overview

hybrid-graphics-linux team mailing list archive

My DST file for ASUS N73SV

 

commands results :

N73SV
1.0
00:02.0 VGA compatible controller [0300]: Intel Corporation Sandy Bridge
Integrated Graphics Controller [8086:0116] (rev 09) (prog-if 00 [VGA
controller])
01:00.0 VGA compatible controller [0300]: nVidia Corporation Device
[10de:0df4] (rev a1) (prog-if 00 [VGA controller])


Thx for your works.
-- 
Arnoult Jerome
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20090521
 *
 * Disassembly of DSDT.dat, Mon Apr 18 03:21:27 2011
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x0000D4FA (54522)
 *     Revision         0x01 **** ACPI 1.0, no 64-bit math support
 *     Checksum         0xFC
 *     OEM ID           "_ASUS_"
 *     OEM Table ID     "NoteBook"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20091112 (537465106)
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "_ASUS_", "NoteBook", 0x00000000)
{
    External (PDC7)
    External (PDC6)
    External (PDC5)
    External (PDC4)
    External (PDC3)
    External (PDC2)
    External (PDC1)
    External (PDC0)
    External (HNOT, MethodObj)    // 1 Arguments

    Name (SS1, 0x01)
    Name (SS2, 0x00)
    Name (SS3, 0x01)
    Name (SS4, 0x01)
    Name (IOST, 0x4400)
    Name (TOPM, 0xAF9FFFFF)
    Name (ROMS, 0xFFE00000)
    Name (MG1B, 0x00000000)
    Name (MG1L, 0x00000000)
    Name (MG2B, 0xAFA00000)
    Name (MG2L, 0x34B0C000)
    Name (SMBS, 0xEFA0)
    Name (SMBL, 0x10)
    Name (PBLK, 0x0410)
    Name (PMBS, 0x0400)
    Name (PMLN, 0x80)
    Name (LVL2, 0x0414)
    Name (LVL3, 0x0415)
    Name (LVL4, 0x0416)
    Name (SMIP, 0xB2)
    Name (GPBS, 0x0500)
    Name (GPLN, 0x80)
    Name (APCB, 0xFEC00000)
    Name (APCL, 0x1000)
    Name (PM30, 0x0430)
    Name (SRCB, 0xFED1C000)
    Name (SRCL, 0x4000)
    Name (SUSW, 0xFF)
    Name (HPTB, 0xFED00000)
    Name (HPTC, 0xFED1F404)
    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, 0xE0000000)
    Name (PELN, 0x04000000)
    Name (TTTB, 0xFED20000)
    Name (TTTL, 0x00020000)
    Name (ACPH, 0xDE)
    Name (ASSB, 0x00)
    Name (AOTB, 0x00)
    Name (AAXB, 0x00)
    Name (PEHP, 0x00)
    Name (SHPC, 0x01)
    Name (PEPM, 0x00)
    Name (PEER, 0x00)
    Name (PECS, 0x00)
    Name (ITKE, 0x00)
    Name (DSSP, 0x00)
    Name (FHPP, 0x01)
    Name (FMBL, 0x01)
    Name (FDTP, 0x02)
    Name (FUPS, 0x03)
    Name (BSH, 0x00)
    Name (BEL, 0x01)
    Name (BEH, 0x02)
    Name (BRH, 0x03)
    Name (BTF, 0x04)
    Name (BHC, 0x05)
    Name (BYB, 0x06)
    Name (BPH, 0x07)
    Name (BSHS, 0x08)
    Name (BELS, 0x09)
    Name (BRHS, 0x0A)
    Name (BTFS, 0x0B)
    Name (BEHS, 0x0C)
    Name (BPHS, 0x0D)
    Name (BTL, 0x10)
    Name (BSR, 0x14)
    Name (BSC, 0x1B)
    Name (BCC, 0x1C)
    Name (BOF, 0x20)
    Name (BEF, 0x21)
    Name (BLLE, 0x22)
    Name (BLLC, 0x23)
    Name (BLCA, 0x24)
    Name (BLLS, 0x25)
    Name (BLLP, 0x26)
    Name (BLLD, 0x27)
    Name (BHBE, 0x30)
    Name (BHBC, 0x31)
    Name (BHBN, 0x32)
    Name (BHBM, 0x33)
    Name (TRTP, 0x01)
    Name (WDTE, 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)
    Name (MBEC, 0x00)
    OperationRegion (GNVS, SystemMemory, 0xAAF9CE18, 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 (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, 
        RSV2,   8, 
        RSV3,   8
    }

    Scope (\_SB)
    {
        Name (PR00, Package (0x24)
        {
            Package (0x04)
            {
                0x001FFFFF, 
                0x00, 
                LNKF, 
                0x00
            }, 

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

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

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

            Package (0x04)
            {
                0x001DFFFF, 
                0x00, 
                LNKH, 
                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)
            {
                0x001CFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

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

            Package (0x04)
            {
                0x0019FFFF, 
                0x00, 
                LNKE, 
                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)
            {
                0x0004FFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

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

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

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

            Package (0x04)
            {
                0x0016FFFF, 
                0x03, 
                LNKB, 
                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)
            {
                0x0002FFFF, 
                0x00, 
                LNKA, 
                0x00
            }
        })
        Name (AR00, Package (0x24)
        {
            Package (0x04)
            {
                0x001FFFFF, 
                0x00, 
                0x00, 
                0x15
            }, 

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

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

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

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

            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)
            {
                0x001CFFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

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

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

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

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

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

            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)
            {
                0x0004FFFF, 
                0x00, 
                0x00, 
                0x10
            }, 

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

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

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

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

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

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

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

            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)
            {
                0x0002FFFF, 
                0x00, 
                0x00, 
                0x10
            }
        })
        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 (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 (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 (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 (0x14)
        {
            Package (0x04)
            {
                0x0003FFFF, 
                0x00, 
                LNKD, 
                0x00
            }, 

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

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

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

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

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

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

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

            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 (0x14)
        {
            Package (0x04)
            {
                0x0003FFFF, 
                0x00, 
                0x00, 
                0x13
            }, 

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

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

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

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

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

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

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

            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, )
                {1,3,4,5,6,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)
            }

            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 (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x0B, 0x04))
                }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        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
                }

                OperationRegion (PKBS, SystemIO, 0x60, 0x05)
                Field (PKBS, ByteAcc, Lock, Preserve)
                {
                    PKBD,   8, 
                            Offset (0x02), 
                            Offset (0x03), 
                            Offset (0x04), 
                    PKBC,   8
                }

                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 (_UID, 0x00)
                    Name (BUF0, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            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 (BUF0, 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,
                            0xFFFF,             // Range Minimum
                            0xFFFF,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // 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
                            )
                    })
                    Name (BUF1, 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,
                            0xFFFF,             // Range Minimum
                            0xFFFF,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // 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
                            0x54,               // Length
                            )
                        IO (Decode16,
                            0x0458,             // Range Minimum
                            0x0458,             // Range Maximum
                            0x01,               // Alignment
                            0x28,               // 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
                            )
                    })
                    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
                            0x54,               // Length
                            )
                        IO (Decode16,
                            0x0458,             // Range Minimum
                            0x0458,             // Range Maximum
                            0x01,               // Alignment
                            0x28,               // 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 (CWDT)
                {
                    Name (_HID, EisaId ("INT3F0D"))
                    Name (_CID, EisaId ("PNP0C02"))
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0454,             // Range Minimum
                            0x0454,             // Range Maximum
                            0x04,               // Alignment
                            0x04,               // Length
                            )
                    })
                    Method (_STA, 0, Serialized)
                    {
                        Return (0x0F)
                    }

                    Method (_CRS, 0, Serialized)
                    {
                        Return (BUF0)
                    }
                }

                Scope (\_SB.PCI0.LPCB)
                {
                    Device (EC0)
                    {
                        Name (_HID, EisaId ("PNP0C09"))
                        Name (_CRS, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0062,             // Range Minimum
                                0x0062,             // Range Maximum
                                0x00,               // Alignment
                                0x01,               // Length
                                )
                            IO (Decode16,
                                0x0066,             // Range Minimum
                                0x0066,             // Range Maximum
                                0x00,               // Alignment
                                0x01,               // Length
                                )
                        })
                        Name (_GPE, 0x1B)
                        Name (REGC, 0x00)
                        Method (_INI, 0, NotSerialized)
                        {
                            If (LLessEqual (\OSFG, \OSME))
                            {
                                Store (One, REGC)
                            }
                        }

                        Method (_REG, 2, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x03))
                            {
                                Store (Arg1, REGC)
                            }
                        }

                        Method (ECAV, 0, NotSerialized)
                        {
                            Return (REGC)
                        }

                        OperationRegion (PECO, SystemIO, 0x0260, 0x08)
                        Field (PECO, ByteAcc, Lock, Preserve)
                        {
                            HSTS,   8, 
                            HCTL,   8, 
                            HCMD,   8, 
                            HTAR,   8, 
                            HWLR,   8, 
                            HRLR,   8, 
                            HWDR,   8, 
                            HRDR,   8
                        }

                        Method (PECI, 7, Serialized)
                        {
                            Name (_T_0, Zero)
                            While (LEqual (And (\_SB.PCI0.LPCB.EC0.PBSY, 0x02), 0x02))
                            {
                                If (LGreater (Arg6, 0x1000))
                                {
                                    Return (0x00)
                                }

                                Add (Arg6, 0x01, Arg6)
                                Sleep (0x0A)
                            }

                            And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFD, \_SB.PCI0.LPCB.EC0.PBSY)
                            Store (Arg0, HTAR)
                            Store (Arg1, HWLR)
                            Store (Arg2, HRLR)
                            Store (Arg3, HCMD)
                            Name (TEMP, 0x00)
                            Store (0x00, TEMP)
                            If (LNotEqual (Arg1, 0x00))
                            {
                                While (One)
                                {
                                    Store (ToInteger (HCMD), _T_0)
                                    If (LEqual (_T_0, 0xF7))
                                    {
                                        Store (0x00, TEMP)
                                        Break
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x01))
                                        {
                                            Store (0x00, TEMP)
                                            Break
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x02))
                                            {
                                                Store (0x00, TEMP)
                                                Break
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0xA1))
                                                {
                                                    Store (Subtract (Arg1, 0x01), TEMP)
                                                    Break
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0xA2))
                                                    {
                                                        Store (Subtract (Arg1, 0x01), TEMP)
                                                        Break
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0xB1))
                                                        {
                                                            Store (Subtract (Arg1, 0x01), TEMP)
                                                            Break
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0xB2))
                                                            {
                                                                Store (Subtract (Arg1, 0x01), TEMP)
                                                                Break
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x61))
                                                                {
                                                                    Store (Subtract (Arg1, 0x01), TEMP)
                                                                    Break
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x62))
                                                                    {
                                                                        Store (Subtract (Arg1, 0x01), TEMP)
                                                                        Break
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0xE1))
                                                                        {
                                                                            Store (Subtract (Arg1, 0x01), TEMP)
                                                                            Break
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0xE2))
                                                                            {
                                                                                Store (Subtract (Arg1, 0x01), TEMP)
                                                                                Break
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0xA5))
                                                                                {
                                                                                    Or (HCTL, 0x40, HCTL)
                                                                                    Store (Subtract (Arg1, 0x02), TEMP)
                                                                                    Break
                                                                                }
                                                                                Else
                                                                                {
                                                                                    If (LEqual (_T_0, 0xA6))
                                                                                    {
                                                                                        Or (HCTL, 0x40, HCTL)
                                                                                        Store (Subtract (Arg1, 0x02), TEMP)
                                                                                        Break
                                                                                    }
                                                                                    Else
                                                                                    {
                                                                                        If (LEqual (_T_0, 0xB5))
                                                                                        {
                                                                                            Or (HCTL, 0x40, HCTL)
                                                                                            Store (Subtract (Arg1, 0x02), TEMP)
                                                                                            Break
                                                                                        }
                                                                                        Else
                                                                                        {
                                                                                            If (LEqual (_T_0, 0xB6))
                                                                                            {
                                                                                                Or (HCTL, 0x40, HCTL)
                                                                                                Store (Subtract (Arg1, 0x02), TEMP)
                                                                                                Break
                                                                                            }
                                                                                            Else
                                                                                            {
                                                                                                If (LEqual (_T_0, 0x65))
                                                                                                {
                                                                                                    Or (HCTL, 0x40, HCTL)
                                                                                                    Store (Subtract (Arg1, 0x02), TEMP)
                                                                                                    Break
                                                                                                }
                                                                                                Else
                                                                                                {
                                                                                                    If (LEqual (_T_0, 0x66))
                                                                                                    {
                                                                                                        Or (HCTL, 0x40, HCTL)
                                                                                                        Store (Subtract (Arg1, 0x02), TEMP)
                                                                                                        Break
                                                                                                    }
                                                                                                    Else
                                                                                                    {
                                                                                                        If (LEqual (_T_0, 0xE5))
                                                                                                        {
                                                                                                            Or (HCTL, 0x40, HCTL)
                                                                                                            Store (Subtract (Arg1, 0x02), TEMP)
                                                                                                            Break
                                                                                                        }
                                                                                                        Else
                                                                                                        {
                                                                                                            If (LEqual (_T_0, 0xE6))
                                                                                                            {
                                                                                                                Or (HCTL, 0x40, HCTL)
                                                                                                                Store (Subtract (Arg1, 0x02), TEMP)
                                                                                                                Break
                                                                                                            }
                                                                                                            Else
                                                                                                            {
                                                                                                                And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                                                                                                Return (0x00)
                                                                                                            }
                                                                                                        }
                                                                                                    }
                                                                                                }
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    Break
                                }
                            }

                            If (LGreater (TEMP, 0x00))
                            {
                                Store (0x00, Local0)
                                While (LLess (Local0, TEMP))
                                {
                                    Store (DerefOf (Index (Arg4, Local0)), HWDR)
                                    Add (Local0, 0x01, Local0)
                                }
                            }

                            Or (HCTL, 0x01, HCTL)
                            Name (TIME, 0x5000)
                            Store (0x00, Local0)
                            While (LLess (Local0, TIME))
                            {
                                If (And (HSTS, 0x80))
                                {
                                    Store (0x80, HSTS)
                                    And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                    Return (0x00)
                                }

                                If (And (HSTS, 0x40))
                                {
                                    Store (0x40, HSTS)
                                    And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                    Return (0x00)
                                }

                                If (And (HSTS, 0x20))
                                {
                                    Store (0x20, HSTS)
                                    And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                    Return (0x00)
                                }

                                If (And (HSTS, 0x08))
                                {
                                    Store (0x08, HSTS)
                                    And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                    Return (0x00)
                                }

                                If (And (HSTS, 0x04))
                                {
                                    Store (0x04, HSTS)
                                    And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                    Return (0x00)
                                }

                                If (And (HSTS, 0x02))
                                {
                                    Store (0x02, HSTS)
                                    Break
                                }
                            }

                            If (LEqual (Local0, TIME))
                            {
                                And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                Return (0x00)
                            }
                            Else
                            {
                                Store (0x00, Local0)
                                While (LLess (Local0, HRLR))
                                {
                                    Store (HRDR, Local1)
                                    Store (Local1, Index (Arg5, Local0))
                                    Add (Local0, 0x01, Local0)
                                }

                                And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                                Return (0x01)
                            }

                            And (\_SB.PCI0.LPCB.EC0.PBSY, 0xFE, \_SB.PCI0.LPCB.EC0.PBSY)
                        }

                        OperationRegion (ECOR, EmbeddedControl, 0x00, 0xFF)
                        Field (ECOR, ByteAcc, Lock, Preserve)
                        {
                                    Offset (0x04), 
                            CMD1,   8, 
                            CDT1,   8, 
                            CDT2,   8, 
                            CDT3,   8, 
                                    Offset (0x80), 
                                    Offset (0x81), 
                                    Offset (0x82), 
                                    Offset (0x83), 
                            EB0R,   8, 
                            EB1R,   8, 
                            EPWF,   8, 
                                    Offset (0x87), 
                                    Offset (0x88), 
                                    Offset (0x89), 
                                    Offset (0x8A), 
                            HKEN,   1, 
                                    Offset (0x93), 
                            TAH0,   16, 
                            TAH1,   16, 
                            TSTP,   8, 
                                    Offset (0x9C), 
                            CDT4,   8, 
                            CDT5,   8, 
                                    Offset (0xA0), 
                                    Offset (0xA1), 
                                    Offset (0xA2), 
                                    Offset (0xA3), 
                            EACT,   8, 
                            TH1R,   8, 
                            TH1L,   8, 
                            TH0R,   8, 
                            TH0L,   8, 
                                    Offset (0xB0), 
                            B0PN,   16, 
                                    Offset (0xB4), 
                                    Offset (0xB6), 
                                    Offset (0xB8), 
                                    Offset (0xBA), 
                                    Offset (0xBC), 
                                    Offset (0xBE), 
                            B0TM,   16, 
                            B0C1,   16, 
                            B0C2,   16, 
                            B0C3,   16, 
                            B0C4,   16, 
                                    Offset (0xD0), 
                            B1PN,   16, 
                                    Offset (0xD4), 
                                    Offset (0xD6), 
                                    Offset (0xD8), 
                                    Offset (0xDA), 
                                    Offset (0xDC), 
                                    Offset (0xDE), 
                            B1TM,   16, 
                            B1C1,   16, 
                            B1C2,   16, 
                            B1C3,   16, 
                            B1C4,   16, 
                                    Offset (0xF0), 
                                    Offset (0xF2), 
                                    Offset (0xF4), 
                            B0SN,   16, 
                                    Offset (0xF8), 
                                    Offset (0xFA), 
                                    Offset (0xFC), 
                            B1SN,   16
                        }

                        OperationRegion (SMBX, EmbeddedControl, 0x18, 0x28)
                        Field (SMBX, ByteAcc, NoLock, Preserve)
                        {
                            PRTC,   8, 
                            SSTS,   5, 
                                ,   1, 
                            ALFG,   1, 
                            CDFG,   1, 
                            ADDR,   8, 
                            CMDB,   8, 
                            BDAT,   256, 
                            BCNT,   8, 
                                ,   1, 
                            ALAD,   7, 
                            ALD0,   8, 
                            ALD1,   8
                        }

                        OperationRegion (SMB2, EmbeddedControl, 0x40, 0x28)
                        Field (SMB2, ByteAcc, NoLock, Preserve)
                        {
                            PRT2,   8, 
                            SST2,   5, 
                                ,   1, 
                            ALF2,   1, 
                            CDF2,   1, 
                            ADD2,   8, 
                            CMD2,   8, 
                            BDA2,   256, 
                            BCN2,   8, 
                                ,   1, 
                            ALA2,   7, 
                            ALR0,   8, 
                            ALR1,   8
                        }

                        Field (SMB2, ByteAcc, NoLock, Preserve)
                        {
                                    Offset (0x04), 
                            DA20,   8, 
                            DA21,   8
                        }

                        Field (SMBX, ByteAcc, NoLock, Preserve)
                        {
                                    Offset (0x04), 
                            DAT0,   8, 
                            DAT1,   8
                        }

                        Field (SMBX, ByteAcc, NoLock, Preserve)
                        {
                                    Offset (0x04), 
                            DT2B,   16
                        }

                        OperationRegion (KAID, SystemIO, 0x025D, 0x01)
                        Field (KAID, ByteAcc, NoLock, Preserve)
                        {
                            AEID,   8
                        }

                        OperationRegion (KAIC, SystemIO, 0x025C, 0x01)
                        Field (KAIC, ByteAcc, NoLock, Preserve)
                        {
                            AEIC,   8
                        }

                        Name (HKFG, 0x00)
                        Method (EC0S, 1, NotSerialized)
                        {
                            Store (HKEN, HKFG)
                        }

                        Method (EC0W, 1, NotSerialized)
                        {
                            If (LGreaterEqual (Arg0, 0x04))
                            {
                                Store (HKFG, HKEN)
                            }
                        }

                        OperationRegion (BRAM, SystemIO, 0x025A, 0x02)
                        Field (BRAM, ByteAcc, Lock, Preserve)
                        {
                            BRAI,   8, 
                            BRAD,   8
                        }

                        IndexField (BRAI, BRAD, ByteAcc, NoLock, Preserve)
                        {
                                    Offset (0x8F), 
                            PBSY,   8, 
                            EPWS,   8, 
                            EB0S,   8, 
                            EB1S,   8, 
                            EB0T,   8, 
                            EB1T,   8, 
                                    Offset (0x98), 
                            ECPU,   8, 
                            ECRT,   8, 
                            EPSV,   8, 
                                    Offset (0xA0), 
                            B0VL,   16, 
                            B0RC,   16, 
                            B0FC,   16, 
                            B0MD,   16, 
                            B0ST,   16, 
                            B0CC,   16, 
                            B0DC,   16, 
                            B0DV,   16, 
                            B1VL,   16, 
                            B1RC,   16, 
                            B1FC,   16, 
                            B1MD,   16, 
                            B1ST,   16, 
                            B1CC,   16, 
                            B1DC,   16, 
                            B1DV,   16
                        }
                    }
                }

                Scope (\_SB.PCI0.LPCB.EC0)
                {
                    Mutex (MUEC, 0x00)
                    Mutex (MU4T, 0x00)
                    OperationRegion (KBCP, SystemIO, 0x60, 0x07)
                    Field (KBCP, ByteAcc, Lock, Preserve)
                    {
                        KBCD,   8, 
                                Offset (0x02), 
                        EC62,   8, 
                                Offset (0x04), 
                        KBCC,   8, 
                                Offset (0x06), 
                        EC66,   8
                    }

                    Field (KBCP, ByteAcc, Lock, Preserve)
                    {
                                Offset (0x04), 
                        KBOF,   1, 
                        KBIE,   1, 
                                Offset (0x05), 
                                Offset (0x06), 
                        ECOF,   1, 
                        ECIE,   1, 
                                Offset (0x07)
                    }

                    Method (ECCM, 4, Serialized)
                    {
                        If (ECAV ())
                        {
                            If (LNot (Acquire (MUEC, 0xFFFF)))
                            {
                                Store (Arg0, CDT1)
                                Store (Arg1, CDT2)
                                Store (Arg2, CDT3)
                                Store (Arg3, CMD1)
                                Store (0x1388, Local0)
                                While (LAnd (Decrement (Local0), CMD1))
                                {
                                    Stall (0x0A)
                                }

                                If (CMD1)
                                {
                                    Store (Ones, Local0)
                                }
                                Else
                                {
                                    Store (CDT1, Local0)
                                }

                                Release (MUEC)
                                Return (Local0)
                            }
                        }

                        Return (Ones)
                    }

                    Method (SPIN, 2, Serialized)
                    {
                        Store (Arg0, Local0)
                        If (Arg1)
                        {
                            Or (Local0, 0x20, Local0)
                        }
                        Else
                        {
                            Or (Local0, 0x40, Local0)
                        }

                        \_SB.PCI0.LPCB.EC0.ECCM (Local0, 0xFF, 0xFF, 0xC5)
                    }

                    Method (RPIN, 1, Serialized)
                    {
                        And (Arg0, 0x1F, Local0)
                        Return (\_SB.PCI0.LPCB.EC0.ECCM (Local0, 0xFF, 0xFF, 0xC5))
                    }

                    Method (RRAM, 1, Serialized)
                    {
                        If (ECAV ())
                        {
                            If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                            {
                                Store (Arg0, Local0)
                                And (Local0, 0xFF, Local1)
                                ShiftRight (Local0, 0x08, Local0)
                                And (Local0, 0xFF, Local0)
                                Store (Local1, CDT3)
                                Store (Local0, CDT2)
                                Store (0x80, CDT1)
                                Store (0xB6, CMD1)
                                Store (0x7F, Local0)
                                While (LAnd (Local0, CMD1))
                                {
                                    Sleep (0x01)
                                    Decrement (Local0)
                                }

                                If (LEqual (CMD1, Zero))
                                {
                                    Store (CDT1, Local0)
                                }
                                Else
                                {
                                    Store (Ones, Local0)
                                }

                                Release (MUEC)
                                Return (Local0)
                            }
                        }

                        Return (Ones)
                    }

                    Method (WRAM, 2, Serialized)
                    {
                        If (ECAV ())
                        {
                            If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                            {
                                Store (Arg0, Local0)
                                And (Local0, 0xFF, Local1)
                                ShiftRight (Local0, 0x08, Local0)
                                And (Local0, 0xFF, Local0)
                                Store (Local1, CDT3)
                                Store (Local0, CDT2)
                                Store (0x81, CDT1)
                                Store (Arg1, CDT4)
                                Store (0xB6, CMD1)
                                Store (0x7F, Local0)
                                While (LAnd (Local0, CMD1))
                                {
                                    Sleep (0x01)
                                    Decrement (Local0)
                                }

                                If (LEqual (CMD1, Zero))
                                {
                                    Store (One, Local0)
                                }
                                Else
                                {
                                    Store (Ones, Local0)
                                }

                                Release (MUEC)
                                Return (Local0)
                            }
                        }

                        Return (Ones)
                    }

                    Method (RFOV, 1, Serialized)
                    {
                        Return (\_SB.PCI0.LPCB.EC0.ECCM (0x83, Arg0, 0xFF, 0xB6))
                    }

                    Method (SBRV, 1, Serialized)
                    {
                        \_SB.PCI0.LPCB.EC0.ECCM (0x86, 0x00, Arg0, 0xB6)
                    }

                    Method (GBRV, 0, Serialized)
                    {
                        Return (\_SB.PCI0.LPCB.EC0.ECCM (0x85, 0x00, 0xFF, 0xB6))
                    }

                    Name (WRQK, 0x02)
                    Name (RDQK, 0x03)
                    Name (SDBT, 0x04)
                    Name (RCBT, 0x05)
                    Name (WRBT, 0x06)
                    Name (RDBT, 0x07)
                    Name (WRWD, 0x08)
                    Name (RDWD, 0x09)
                    Name (WRBL, 0x0A)
                    Name (RDBL, 0x0B)
                    Name (PCLL, 0x0C)
                    Name (GOOD, 0x00)
                    Name (UKER, 0x07)
                    Name (DAER, 0x10)
                    Name (CMDN, 0x12)
                    Name (UKE2, 0x13)
                    Name (DADN, 0x17)
                    Name (SBTO, 0x18)
                    Name (USPT, 0x19)
                    Name (SBBY, 0x1A)
                    Method (SWTC, 1, Serialized)
                    {
                        Store (UKER, Local0)
                        Store (0x03, Local1)
                        While (LAnd (Local0, Local1))
                        {
                            Store (0x23, Local2)
                            While (Local2)
                            {
                                If (PRTC)
                                {
                                    Sleep (0x01)
                                    Decrement (Local2)
                                }
                                Else
                                {
                                    Store (Zero, Local2)
                                    Store (SSTS, Local0)
                                }
                            }

                            If (Local0)
                            {
                                Store (Zero, PRTC)
                                Decrement (Local1)
                                If (Local1)
                                {
                                    Sleep (0x01)
                                    Store (Arg0, PRTC)
                                }
                            }
                        }

                        Return (Local0)
                    }

                    Method (SMBR, 3, Serialized)
                    {
                        Store (Package (0x03)
                            {
                                0x07, 
                                0x00, 
                                0x00
                            }, Local0)
                        If (LNot (ECAV ()))
                        {
                            Return (Local0)
                        }

                        If (LNotEqual (Arg0, RDBL))
                        {
                            If (LNotEqual (Arg0, RDWD))
                            {
                                If (LNotEqual (Arg0, RDBT))
                                {
                                    If (LNotEqual (Arg0, RCBT))
                                    {
                                        If (LNotEqual (Arg0, RDQK))
                                        {
                                            Return (Local0)
                                        }
                                    }
                                }
                            }
                        }

                        If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                        {
                            Store (PRTC, Local1)
                            Store (Zero, Local2)
                            While (LNotEqual (Local1, 0x00))
                            {
                                Stall (0x0A)
                                Increment (Local2)
                                If (LGreater (Local2, 0x03E8))
                                {
                                    Store (SBBY, Index (Local0, 0x00))
                                    Store (Zero, Local1)
                                }
                                Else
                                {
                                    Store (PRTC, Local1)
                                }
                            }

                            If (LLessEqual (Local2, 0x03E8))
                            {
                                ShiftLeft (Arg1, 0x01, Local3)
                                Or (Local3, 0x01, Local3)
                                Store (Local3, ADDR)
                                If (LNotEqual (Arg0, RDQK))
                                {
                                    If (LNotEqual (Arg0, RCBT))
                                    {
                                        Store (Arg2, CMDB)
                                    }
                                }

                                Store (0x00, BDAT)
                                Store (Arg0, PRTC)
                                Store (SWTC (Arg0), Index (Local0, 0x00))
                                If (LEqual (DerefOf (Index (Local0, 0x00)), 0x00))
                                {
                                    If (LEqual (Arg0, RDBL))
                                    {
                                        Store (BCNT, Index (Local0, 0x01))
                                        Store (BDAT, Index (Local0, 0x02))
                                    }

                                    If (LEqual (Arg0, RDWD))
                                    {
                                        Store (0x02, Index (Local0, 0x01))
                                        Store (DT2B, Index (Local0, 0x02))
                                    }

                                    If (LEqual (Arg0, RDBT))
                                    {
                                        Store (0x01, Index (Local0, 0x01))
                                        Store (DAT0, Index (Local0, 0x02))
                                    }

                                    If (LEqual (Arg0, RCBT))
                                    {
                                        Store (0x01, Index (Local0, 0x01))
                                        Store (DAT0, Index (Local0, 0x02))
                                    }
                                }
                            }

                            Release (MUEC)
                        }

                        Return (Local0)
                    }

                    Method (SMBW, 5, Serialized)
                    {
                        Store (Package (0x01)
                            {
                                0x07
                            }, Local0)
                        If (LNot (ECAV ()))
                        {
                            Return (Local0)
                        }

                        If (LNotEqual (Arg0, WRBL))
                        {
                            If (LNotEqual (Arg0, WRWD))
                            {
                                If (LNotEqual (Arg0, WRBT))
                                {
                                    If (LNotEqual (Arg0, SDBT))
                                    {
                                        If (LNotEqual (Arg0, WRQK))
                                        {
                                            Return (Local0)
                                        }
                                    }
                                }
                            }
                        }

                        If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                        {
                            Store (PRTC, Local1)
                            Store (Zero, Local2)
                            While (LNotEqual (Local1, 0x00))
                            {
                                Stall (0x0A)
                                Increment (Local2)
                                If (LGreater (Local2, 0x03E8))
                                {
                                    Store (SBBY, Index (Local0, 0x00))
                                    Store (Zero, Local1)
                                }
                                Else
                                {
                                    Store (PRTC, Local1)
                                }
                            }

                            If (LLessEqual (Local2, 0x03E8))
                            {
                                Store (0x00, BDAT)
                                ShiftLeft (Arg1, 0x01, Local3)
                                Store (Local3, ADDR)
                                If (LNotEqual (Arg0, WRQK))
                                {
                                    If (LNotEqual (Arg0, SDBT))
                                    {
                                        Store (Arg2, CMDB)
                                    }
                                }

                                If (LEqual (Arg0, WRBL))
                                {
                                    Store (Arg3, BCNT)
                                    Store (Arg4, BDAT)
                                }

                                If (LEqual (Arg0, WRWD))
                                {
                                    Store (Arg4, DT2B)
                                }

                                If (LEqual (Arg0, WRBT))
                                {
                                    Store (Arg4, DAT0)
                                }

                                If (LEqual (Arg0, SDBT))
                                {
                                    Store (Arg4, DAT0)
                                }

                                Store (Arg0, PRTC)
                                Store (SWTC (Arg0), Index (Local0, 0x00))
                            }

                            Release (MUEC)
                        }

                        Return (Local0)
                    }

                    Mutex (MUEP, 0x00)
                    Method (RBEP, 1, NotSerialized)
                    {
                        Store (0xFFFF, Local1)
                        If (LEqual (Acquire (MUEP, 0xFFFF), 0x00))
                        {
                            Store (RRAM (0x0620), Local3)
                            And (Local3, 0x7F, Local4)
                            WRAM (0x0620, Local4)
                            Store (0x10, Local2)
                            Store (0x10, Local1)
                            While (And (LEqual (Local1, 0x10), LNotEqual (Local2, 0x00)))
                            {
                                SMBW (WRWD, 0x0B, 0x00, 0x02, 0x0635)
                                SMBW (WRWD, 0x0B, 0x00, 0x02, 0x0606)
                                Store (SMBR (RDBT, 0x50, Arg0), Local0)
                                Store (DerefOf (Index (Local0, 0x00)), Local1)
                                Decrement (Local2)
                            }

                            WRAM (0x0620, Local3)
                            ShiftLeft (Local1, 0x08, Local1)
                            Or (Local1, DerefOf (Index (Local0, 0x02)), Local1)
                            Release (MUEP)
                        }

                        Return (Local1)
                    }

                    Method (WBEP, 2, NotSerialized)
                    {
                        Store (0xFFFF, Local1)
                        If (LEqual (Acquire (MUEP, 0xFFFF), 0x00))
                        {
                            Store (RRAM (0x0620), Local3)
                            And (Local3, 0x7F, Local4)
                            WRAM (0x0620, Local4)
                            Store (0x10, Local2)
                            Store (0x10, Local1)
                            While (And (LEqual (Local1, 0x10), LNotEqual (Local2, 0x00)))
                            {
                                SMBW (WRWD, 0x0B, 0x00, 0x02, 0x0635)
                                SMBW (WRWD, 0x0B, 0x00, 0x02, 0x0606)
                                Store (SMBW (WRBT, 0x50, Arg0, 0x01, Arg1), Local0)
                                Store (DerefOf (Index (Local0, 0x00)), Local1)
                                Decrement (Local2)
                            }

                            WRAM (0x0620, Local3)
                            Release (MUEP)
                        }

                        Return (Local1)
                    }

                    Method (ECXT, 6, NotSerialized)
                    {
                        Store (Package (0x06)
                            {
                                0x10, 
                                0x00, 
                                0x00, 
                                0x00, 
                                0x00, 
                                0x00
                            }, Local1)
                        If (ECAV ())
                        {
                            If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                            {
                                Store (Arg1, CDT1)
                                Store (Arg2, CDT2)
                                Store (Arg3, CDT3)
                                Store (Arg4, CDT4)
                                Store (Arg5, CDT5)
                                Store (Arg0, CMD1)
                                Store (0x7F, Local0)
                                While (LAnd (Local0, CMD1))
                                {
                                    Sleep (0x01)
                                    Decrement (Local0)
                                }

                                If (Local0)
                                {
                                    Store (0x00, Index (Local1, 0x00))
                                    Store (CDT1, Index (Local1, 0x01))
                                    Store (CDT2, Index (Local1, 0x02))
                                    Store (CDT3, Index (Local1, 0x03))
                                    Store (CDT4, Index (Local1, 0x04))
                                    Store (CDT5, Index (Local1, 0x05))
                                }
                                Else
                                {
                                    Store (0x10, Index (Local1, 0x00))
                                }

                                Release (MUEC)
                            }
                        }

                        Return (Local1)
                    }

                    Method (ECSB, 6, NotSerialized)
                    {
                        Store (Package (0x05)
                            {
                                0x11, 
                                0x00, 
                                0x00, 
                                0x00, 
                                0x00
                            }, Local1)
                        If (LGreater (Arg0, 0x01))
                        {
                            Return (Local1)
                        }

                        If (ECAV ())
                        {
                            If (LEqual (Acquire (MUEC, 0xFFFF), 0x00))
                            {
                                If (LEqual (Arg0, 0x00))
                                {
                                    Store (Arg2, ADDR)
                                    Store (Arg3, CMDB)
                                    Store (Arg4, DAT0)
                                    Store (Arg5, DAT1)
                                    Store (Arg1, PRTC)
                                }
                                Else
                                {
                                    Store (Arg2, ADD2)
                                    Store (Arg3, CMD2)
                                    Store (Arg4, DA20)
                                    Store (Arg5, DA21)
                                    Store (Arg1, PRT2)
                                }

                                Store (0x7F, Local0)
                                While (PRTC)
                                {
                                    Sleep (0x01)
                                    Decrement (Local0)
                                }

                                If (Local0)
                                {
                                    If (LEqual (Arg0, 0x00))
                                    {
                                        Store (SSTS, Local0)
                                        Store (DAT0, Index (Local1, 0x01))
                                        Store (DAT1, Index (Local1, 0x02))
                                        Store (BCNT, Index (Local1, 0x03))
                                        Store (BDAT, Index (Local1, 0x04))
                                    }
                                    Else
                                    {
                                        Store (SST2, Local0)
                                        Store (DA20, Index (Local1, 0x01))
                                        Store (DA21, Index (Local1, 0x02))
                                        Store (BCN2, Index (Local1, 0x03))
                                        Store (BDA2, Index (Local1, 0x04))
                                    }

                                    And (Local0, 0x1F, Local0)
                                    If (Local0)
                                    {
                                        Add (Local0, 0x10, Local0)
                                    }

                                    Store (Local0, Index (Local1, 0x00))
                                }
                                Else
                                {
                                    Store (0x10, Index (Local1, 0x00))
                                }

                                Release (MUEC)
                            }
                        }

                        Return (Local1)
                    }

                    OperationRegion (ECID, SystemIO, 0x0257, 0x01)
                    Field (ECID, ByteAcc, NoLock, Preserve)
                    {
                        EC4D,   8
                    }

                    OperationRegion (ECIC, SystemIO, 0x0258, 0x01)
                    Field (ECIC, ByteAcc, NoLock, Preserve)
                    {
                        EC4C,   8
                    }

                    Method (WEIE, 0, Serialized)
                    {
                        Store (0xFFFF, Local0)
                        While (LEqual (And (EC4C, 0x02), 0x02))
                        {
                            If (LEqual (Local0, 0x00))
                            {
                                Return (Ones)
                            }

                            Decrement (Local0)
                        }

                        Return (Zero)
                    }

                    Method (WEOF, 0, Serialized)
                    {
                        Store (0xFFFF, Local0)
                        While (LNotEqual (And (EC4C, 0x01), 0x01))
                        {
                            If (LEqual (Local0, 0x00))
                            {
                                Return (Ones)
                            }

                            Decrement (Local0)
                            Sleep (0x05)
                        }

                        Return (Zero)
                    }

                    Method (WEOE, 0, NotSerialized)
                    {
                        Store (0xFFFF, Local0)
                        While (LEqual (And (EC4C, 0x01), 0x01))
                        {
                            If (LEqual (Local0, 0x00))
                            {
                                Return (Ones)
                            }

                            Decrement (Local0)
                            Sleep (0x05)
                            Store (EC4D, Local1)
                        }

                        Return (Zero)
                    }

                    Method (ST95, 2, Serialized)
                    {
                        If (ECAV ())
                        {
                            If (LEqual (Acquire (MU4T, 0xFFFF), 0x00))
                            {
                                If (LNotEqual (WEOE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                If (LNotEqual (WEIE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                Store (0xFF, EC4C)
                                If (LNotEqual (WEIE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                Store (0x95, EC4C)
                                If (LNotEqual (WEIE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                Store (Arg0, EC4D)
                                If (LNotEqual (WEIE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                Store (Arg1, EC4D)
                                If (LNotEqual (WEIE (), Zero))
                                {
                                    Release (MU4T)
                                    Return (Ones)
                                }

                                If (LEqual (Arg0, 0x00))
                                {
                                    If (LNotEqual (WEOF (), Zero))
                                    {
                                        Release (MU4T)
                                        Return (Ones)
                                    }

                                    Store (EC4D, Local0)
                                }

                                Release (MU4T)
                                If (LEqual (Arg0, 0x00))
                                {
                                    Return (Local0)
                                }

                                Return (Zero)
                            }
                        }

                        Return (Ones)
                    }
                }

                Device (PS2M)
                {
                    Method (_HID, 0, NotSerialized)
                    {
                        Return (0x01008416)
                    }

                    Name (_CID, Package (0x06)
                    {
                        EisaId ("SYN0A00"), 
                        EisaId ("ETD0001"), 
                        EisaId ("SYN0002"), 
                        EisaId ("PNP0F03"), 
                        EisaId ("PNP0F13"), 
                        EisaId ("PNP0F12")
                    })
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (0x01, 0x0E, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (0x00)
                        }

                        Return (0x00)
                    }

                    Name (CRS1, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                    Name (CRS2, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {12}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        ShiftLeft (0x01, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (CRS1)
                        }
                        Else
                        {
                            Return (CRS2)
                        }
                    }
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, EisaId ("PNP030B"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (And (IOST, 0x0400))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (
                            0x0060,             // Address
                            0x01,               // Length
                            )
                        FixedIO (
                            0x0064,             // Address
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {1}
                    })
                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            FixedIO (
                                0x0060,             // Address
                                0x01,               // Length
                                )
                            FixedIO (
                                0x0064,             // Address
                                0x01,               // Length
                                )
                            IRQNoFlags ()
                                {1}
                        }
                        EndDependentFn ()
                    })
                }

                Scope (\_SB)
                {
                    Name (ATKP, Zero)
                    Name (AITM, 0x00)
                    Name (PLMD, 0x00)
                    Name (MUTX, 0x01)
                    Name (LEDS, 0x00)
                    Device (ATKD)
                    {
                        Name (_HID, "pnp0c14")
                        Name (_UID, "ATK")
                        Name (ATKQ, Package (0x10)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Name (AQHI, Zero)
                        Name (AQTI, 0x0F)
                        Name (AQNO, Zero)
                        Method (IANQ, 1, Serialized)
                        {
                            If (LGreaterEqual (AQNO, 0x10))
                            {
                                Store (0x64, Local0)
                                While (LAnd (Local0, LGreaterEqual (AQNO, 0x10)))
                                {
                                    Decrement (Local0)
                                    Sleep (0x0A)
                                }

                                If (LAnd (Local0, LGreaterEqual (AQNO, 0x10)))
                                {
                                    Return (Zero)
                                }
                            }

                            Increment (AQTI)
                            And (AQTI, 0x0F, AQTI)
                            Store (Arg0, Index (ATKQ, AQTI))
                            Increment (AQNO)
                            Return (One)
                        }

                        Method (GANQ, 0, Serialized)
                        {
                            If (AQNO)
                            {
                                Decrement (AQNO)
                                Store (DerefOf (Index (ATKQ, AQHI)), Local0)
                                Increment (AQHI)
                                And (AQHI, 0x0F, AQHI)
                                Return (Local0)
                            }

                            Return (Ones)
                        }

                        Method (IANE, 1, Serialized)
                        {
                            IANQ (Arg0)
                            Notify (ATKD, 0xFF)
                        }

                        Name (_WDG, Buffer (0x28)
                        {
                            /* 0000 */    0xD0, 0x5E, 0x84, 0x97, 0x6D, 0x4E, 0xDE, 0x11, 
                            /* 0008 */    0x8A, 0x39, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66, 
                            /* 0010 */    0x4E, 0x42, 0x01, 0x02, 0x35, 0xBB, 0x3C, 0x0B, 
                            /* 0018 */    0xC2, 0xE3, 0xED, 0x45, 0x91, 0xC2, 0x4C, 0x5A, 
                            /* 0020 */    0x6D, 0x19, 0x5D, 0x1C, 0xFF, 0x00, 0x01, 0x08
                        })
                        Method (WMNB, 3, Serialized)
                        {
                            Name (_T_0, Zero)
                            CreateDWordField (Arg2, 0x00, IIA0)
                            CreateDWordField (Arg2, 0x04, IIA1)
                            And (Arg1, 0xFFFFFFFF, Local0)
                            While (One)
                            {
                                Store (Local0, _T_0)
                                If (LEqual (_T_0, 0x54494E49))
                                {
                                    INIT (IIA0)
                                    Return (0x01)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x53545342))
                                    {
                                        Return (BSTS ())
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x4E554653))
                                        {
                                            Return (SFUN ())
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x494E424B))
                                            {
                                                Return (KBNI ())
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x5256534F))
                                                {
                                                    OSVR (IIA0)
                                                    Return (0x00)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x53545344))
                                                    {
                                                        If (LEqual (IIA0, 0x00010002))
                                                        {
                                                            Return (0x00050002)
                                                        }

                                                        If (LEqual (IIA0, 0x00020011))
                                                        {
                                                            Return (Or (GALE (0x01), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00020012))
                                                        {
                                                            Return (Or (GALE (0x02), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00020013))
                                                        {
                                                            Return (Or (GALE (0x04), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00040015))
                                                        {
                                                            Return (Or (GALE (0x08), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00020014))
                                                        {
                                                            Return (Or (GALE (0x10), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00020015))
                                                        {
                                                            Return (Or (GALE (0x20), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00020016))
                                                        {
                                                            Return (Or (GALE (0x40), 0x00050000))
                                                        }

                                                        If (LEqual (IIA0, 0x00110011))
                                                        {
                                                            Return (And (TMPR (), 0xFFFF))
                                                        }

                                                        If (LEqual (IIA0, 0x00110012))
                                                        {
                                                            Store (TMPR (), Local0)
                                                            Store (Local0, Local1)
                                                            ShiftRight (And (Local0, 0xF0000000), 0x1C, Local0)
                                                            ShiftRight (And (Local1, 0x0F000000), 0x18, Local1)
                                                            ShiftLeft (Local1, 0x08, Local1)
                                                            Return (Add (Local0, Local1))
                                                        }

                                                        If (LEqual (IIA0, 0x00050012))
                                                        {
                                                            Store (Subtract (0x0B, 0x01), Local0)
                                                            ShiftLeft (Local0, 0x08, Local0)
                                                            Return (Add (GPLV (), Local0))
                                                        }

                                                        If (LEqual (IIA0, 0x00010011))
                                                        {
                                                            If (\_SB.WLSS)
                                                            {
                                                                Return (Add (\_SB.WRST, 0x00030000))
                                                            }
                                                        }

                                                        If (LEqual (IIA0, 0x00010013))
                                                        {
                                                            If (\_SB.BLTS)
                                                            {
                                                                Return (Add (\_SB.BRST, 0x00050000))
                                                            }
                                                        }

                                                        If (LEqual (IIA0, 0x00010001))
                                                        {
                                                            If (\_SB.PCI0.LPCB.EC0.RPIN (0x07))
                                                            {
                                                                Return (0x00050000)
                                                            }

                                                            Return (0x00050001)
                                                        }

                                                        If (LEqual (IIA0, 0x00120012))
                                                        {
                                                            Return (PSTC (0x00))
                                                        }

                                                        Return (0x02)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x53564544))
                                                        {
                                                            If (LEqual (IIA0, 0x00020011))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x02)))
                                                            }

                                                            If (LEqual (IIA0, 0x00020012))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x04)))
                                                            }

                                                            If (LEqual (IIA0, 0x00020013))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x08)))
                                                            }

                                                            If (LEqual (IIA0, 0x00040015))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x10)))
                                                            }

                                                            If (LEqual (IIA0, 0x00020014))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x20)))
                                                            }

                                                            If (LEqual (IIA0, 0x00020015))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x40)))
                                                            }

                                                            If (LEqual (IIA0, 0x00020016))
                                                            {
                                                                Return (SALE (Add (IIA1, 0x80)))
                                                            }

                                                            If (LEqual (IIA0, 0x00050012))
                                                            {
                                                                SPLV (IIA1)
                                                                Return (0x01)
                                                            }

                                                            If (LEqual (IIA0, 0x00010002))
                                                            {
                                                                OWGD (IIA1)
                                                                Return (0x01)
                                                            }

                                                            If (LEqual (IIA0, 0x00010012))
                                                            {
                                                                WLED (IIA1)
                                                                Return (0x01)
                                                            }

                                                            If (LEqual (IIA0, 0x00010013))
                                                            {
                                                                BLED (IIA1)
                                                                Return (0x01)
                                                            }

                                                            If (LEqual (IIA0, 0x00010003))
                                                            {
                                                                Return (CWAP (IIA1))
                                                            }

                                                            If (LEqual (IIA0, 0x00120012))
                                                            {
                                                                Return (PSTC (Add (IIA1, 0x01)))
                                                            }

                                                            Return (0x00)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x48534C46))
                                                            {
                                                                FLSH (IIA0)
                                                                Return (0x01)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x494E4946))
                                                                {
                                                                    Return (FINI (IIA0))
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x53524546))
                                                                    {
                                                                        Return (FERS (IIA0))
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x49525746))
                                                                        {
                                                                            Return (FWRI (IIA0))
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x50525746))
                                                                            {
                                                                                Return (FWRP ())
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x52534345))
                                                                                {
                                                                                    Return (ECSR (IIA0))
                                                                                }
                                                                                Else
                                                                                {
                                                                                    If (LEqual (_T_0, 0x43534C46))
                                                                                    {
                                                                                        Return (FLSC (IIA0))
                                                                                    }
                                                                                    Else
                                                                                    {
                                                                                        If (LEqual (_T_0, 0x43455246))
                                                                                        {
                                                                                            Return (FREC (IIA0))
                                                                                        }
                                                                                        Else
                                                                                        {
                                                                                            If (LEqual (_T_0, 0x50534453))
                                                                                            {
                                                                                                SDSP (IIA0)
                                                                                                Return (0x01)
                                                                                            }
                                                                                            Else
                                                                                            {
                                                                                                If (LEqual (_T_0, 0x44495047))
                                                                                                {
                                                                                                    Return (GPID ())
                                                                                                }
                                                                                                Else
                                                                                                {
                                                                                                    If (LEqual (_T_0, 0x44434C47))
                                                                                                    {
                                                                                                        Return (GLCD ())
                                                                                                    }
                                                                                                    Else
                                                                                                    {
                                                                                                        If (LEqual (_T_0, 0x49564E41))
                                                                                                        {
                                                                                                            Return (ANVI (IIA0))
                                                                                                        }
                                                                                                        Else
                                                                                                        {
                                                                                                            If (LEqual (_T_0, 0x46494243))
                                                                                                            {
                                                                                                                Return (CBIF (IIA0))
                                                                                                            }
                                                                                                            Else
                                                                                                            {
                                                                                                                If (LEqual (_T_0, 0x4E464741))
                                                                                                                {
                                                                                                                    Return (AGFN (IIA0))
                                                                                                                }
                                                                                                                Else
                                                                                                                {
                                                                                                                    If (LEqual (_T_0, 0x46494643))
                                                                                                                    {
                                                                                                                        CFIF (IIA0)
                                                                                                                        Return (0x01)
                                                                                                                    }
                                                                                                                    Else
                                                                                                                    {
                                                                                                                        If (LEqual (_T_0, 0x44495046))
                                                                                                                        {
                                                                                                                            Return (FPID ())
                                                                                                                        }
                                                                                                                        Else
                                                                                                                        {
                                                                                                                            If (LEqual (_T_0, 0x59454B48))
                                                                                                                            {
                                                                                                                                HKEY ()
                                                                                                                                Return (0x01)
                                                                                                                            }
                                                                                                                            Else
                                                                                                                            {
                                                                                                                                If (LEqual (_T_0, 0x5446424B))
                                                                                                                                {
                                                                                                                                    KBFT (IIA0)
                                                                                                                                    Return (0x01)
                                                                                                                                }
                                                                                                                                Else
                                                                                                                                {
                                                                                                                                    Return (0xFFFFFFFE)
                                                                                                                                }
                                                                                                                            }
                                                                                                                        }
                                                                                                                    }
                                                                                                                }
                                                                                                            }
                                                                                                        }
                                                                                                    }
                                                                                                }
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }

                                Break
                            }
                        }

                        Method (_WED, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0xFF))
                            {
                                Return (GANQ ())
                            }

                            Return (Ones)
                        }

                        Method (INIT, 1, NotSerialized)
                        {
                            Store (One, ATKP)
                            Return (\MNAM)
                        }

                        Method (BSTS, 0, NotSerialized)
                        {
                            Store (0x00, Local0)
                            If (\_SB.ACPS)
                            {
                                And (Local0, 0xFF7F, Local0)
                            }
                            Else
                            {
                                Store (\_SB.PCI0.LPCB.EC0.RRAM (0x04FE), Local0)
                                If (LEqual (And (Local0, 0xFF), 0x34))
                                {
                                    Store (0x05, Local0)
                                }
                                Else
                                {
                                    And (Local0, 0x037F, Local0)
                                }
                            }

                            Return (Local0)
                        }

                        Method (KBNI, 0, NotSerialized)
                        {
                            Return (One)
                        }

                        Method (TMPR, 0, NotSerialized)
                        {
                            Store (\_TZ.KELV (\_TZ.RTMP ()), Local0)
                            Or (ShiftLeft (\_TZ.RFAN (), 0x10), Local0, Local0)
                            Or (ShiftLeft (\GTHS (), 0x18), Local0, Local0)
                            Store (\RFSE (), Local3)
                            ShiftLeft (Local3, 0x1C, Local3)
                            Add (Local0, Local3, Local0)
                            Return (Local0)
                        }

                        Method (SFUN, 0, NotSerialized)
                        {
                            Return (0x001A0AF7)
                        }

                        Method (SDSP, 1, NotSerialized)
                        {
                            SWHG (Arg0)
                        }

                        Method (RSTS, 0, NotSerialized)
                        {
                            Store (0x00, Local0)
                            If (\_SB.BRST)
                            {
                                Or (0x02, Local0, Local0)
                            }

                            If (\_SB.WRST)
                            {
                                Or (0x01, Local0, Local0)
                            }

                            If (\_SB.WMST)
                            {
                                Or (0x08, Local0, Local0)
                            }

                            Return (Local0)
                        }

                        Method (HWRS, 0, NotSerialized)
                        {
                            Return (\OHWR ())
                        }

                        Method (WLED, 1, NotSerialized)
                        {
                            \OWLD (Arg0)
                        }

                        Method (BLED, 1, NotSerialized)
                        {
                            \OBTD (Arg0)
                        }

                        Method (WMXC, 1, NotSerialized)
                        {
                            \OWMD (Arg0)
                        }

                        Name (WAPF, 0x00)
                        Method (CWAP, 1, NotSerialized)
                        {
                            Or (Arg0, WAPF, WAPF)
                            Return (0x01)
                        }

                        Method (GALE, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x04))
                            {
                                If (LAnd (LEDS, 0x04))
                                {
                                    Return (0x01)
                                }
                                Else
                                {
                                    Return (0x00)
                                }
                            }

                            If (LEqual (Arg0, 0x08))
                            {
                                If (LAnd (LEDS, 0x08))
                                {
                                    Return (0x01)
                                }
                                Else
                                {
                                    Return (0x00)
                                }
                            }

                            If (LEqual (Arg0, 0x10))
                            {
                                If (LAnd (LEDS, 0x10))
                                {
                                    Return (0x01)
                                }
                                Else
                                {
                                    Return (0x00)
                                }
                            }

                            Return (0x02)
                        }

                        Method (SALE, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x10)) {}
                            If (LEqual (Arg0, 0x11)) {}
                            Return (One)
                        }

                        Method (GPID, 0, NotSerialized)
                        {
                            Return (LCDR)
                        }

                        Method (GLCD, 0, NotSerialized)
                        {
                            Return (LCDV)
                        }

                        Method (KBFT, 1, NotSerialized)
                        {
                            Store (Arg0, \_SB.PCI0.LPCB.EC0.HKEN)
                            Return (0x00)
                        }

                        Method (HKEY, 0, NotSerialized)
                        {
                            Store (\_SB.PCI0.LPCB.EC0.CDT1, Local0)
                        }

                        Method (GPLV, 0, NotSerialized)
                        {
                            Return (LBTN)
                        }

                        Method (SPLV, 1, NotSerialized)
                        {
                            Store (Arg0, LBTN)
                            STBR ()
                        }

                        Method (SPBL, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x80))
                            {
                                Return (0x01)
                            }

                            If (LEqual (Arg0, 0x0100))
                            {
                                Store (0x0B, Local0)
                                Decrement (Local0)
                                Return (Local0)
                            }
                        }

                        Method (ANVI, 1, Serialized)
                        {
                            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
                            {
                                Store (Arg0, ALPR)
                                ISMI (0xA3)
                                Store (ALPR, Local0)
                                Release (MPAR)
                                Return (Local0)
                            }
                        }

                        Method (CBIF, 1, Serialized)
                        {
                            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
                            {
                                Store (0x03, ALPR)
                                Store (Arg0, TMPB)
                                ISMI (0xA3)
                                Release (MPAR)
                            }

                            Return (0x01)
                        }

                        Method (CFIF, 1, Serialized)
                        {
                            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
                            {
                                Store (Arg0, PAR0)
                                ISMI (0x9B)
                                Release (MPAR)
                            }

                            Return (0x01)
                        }

                        Method (FPID, 0, NotSerialized)
                        {
                            Return (0x0115)
                        }

                        Method (PSTC, 1, Serialized)
                        {
                            If (LEqual (Arg0, 0x00))
                            {
                                Return (\_SB.PSTN)
                            }

                            If (\_SB.ACPS)
                            {
                                ShiftRight (\_SB.PSTN, 0x08, Local0)
                            }
                            Else
                            {
                                And (\_SB.PSTN, 0xFF, Local0)
                            }

                            If (LGreater (Arg0, Local0))
                            {
                                Return (Ones)
                            }

                            Store (Arg0, \_SB.SLMT)
                            \PNOT ()
                            Return (0x00)
                        }

                        Method (OSVR, 1, NotSerialized)
                        {
                            Store (Arg0, \OSFG)
                            Store (Arg0, \_SB.COSF)
                        }
                    }
                }

                Scope (\_SB.PCI0)
                {
                    Device (BAT0)
                    {
                        Name (_HID, EisaId ("PNP0C0A"))
                        Name (_UID, 0x00)
                        Name (_PCL, Package (0x01)
                        {
                            \_SB.PCI0
                        })
                        Method (_STA, 0, NotSerialized)
                        {
                            If (\_SB.DCPS)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }

                        Method (_BIF, 0, NotSerialized)
                        {
                            If (LEqual (\_SB.DCPS, 0x00))
                            {
                                Return (NBIF)
                            }

                            CBIF (0x00)
                            Return (PBIF)
                        }

                        Method (_BST, 0, NotSerialized)
                        {
                            If (And (0x10, _STA ()))
                            {
                                CBST (0x00)
                            }

                            Return (PBST)
                        }
                    }

                    Name (NBIF, Package (0x0D)
                    {
                        0x01, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0x01, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        " ", 
                        " ", 
                        " ", 
                        " "
                    })
                    Name (PBIF, Package (0x0D)
                    {
                        0x01, 
                        0x10CC, 
                        0x1068, 
                        0x01, 
                        0x36D0, 
                        0x01A4, 
                        0xD2, 
                        0x1C, 
                        0x050A, 
                        "[MKF_BASEBOARD_ID]", 
                        " ", 
                        "LION", 
                        "[MKF_CUSTOMER]"
                    })
                    Name (BATF, Buffer (0x02) {})
                    CreateWordField (BATF, 0x00, DATW)
                    Method (CBIF, 1, Serialized)
                    {
                        Store (GDCP (Arg0), Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (Local0, Index (PBIF, 0x01))
                        }

                        Store (GFCC (Arg0), Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (Local0, Index (PBIF, 0x02))
                            Multiply (Local0, 0x0A, Local1)
                            Divide (Local1, 0x64, Local2, Local1)
                            Store (Local1, Index (PBIF, 0x05))
                            Multiply (Local0, 0x01, Local2)
                            Divide (Local2, 0x64, Local3, Local2)
                            Store (Local2, Index (PBIF, 0x06))
                            Subtract (Local1, Local2, Local2)
                            Divide (Local2, 0x64, Local3, Local2)
                            Store (Local2, Index (PBIF, 0x07))
                            Subtract (Local0, Local1, Local1)
                            Divide (Local1, 0x64, Local2, Local1)
                            Store (Local1, Index (PBIF, 0x08))
                        }

                        Store (GBDV (Arg0), Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (Local0, Index (PBIF, 0x04))
                        }
                    }

                    Name (PBST, Package (0x04)
                    {
                        0x00, 
                        0x8000, 
                        0x8000, 
                        0x36B0
                    })
                    Method (CBST, 1, Serialized)
                    {
                        Store (GBCR (Arg0), DATW)
                        If (LNotEqual (DATW, Ones))
                        {
                            If (And (DATW, 0x8000))
                            {
                                Decrement (DATW)
                                Not (DATW, DATW)
                            }

                            Store (DATW, Index (PBST, 0x01))
                        }

                        Store (0x00, Local0)
                        If (\_SB.ACPS)
                        {
                            Or (CHGS (Arg0), Local0, Local0)
                        }
                        Else
                        {
                            Store (0x01, Local0)
                        }

                        Store (Local0, Index (PBST, 0x00))
                        Store (GBRC (Arg0), Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (Local0, Index (PBST, 0x02))
                        }

                        Store (GBVT (Arg0), Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (Local0, Index (PBST, 0x03))
                        }
                    }
                }

                Scope (\_SB)
                {
                    Scope (PCI0)
                    {
                        Device (AC0)
                        {
                            Name (_HID, "ACPI0003")
                            Method (_PSR, 0, NotSerialized)
                            {
                                Return (\_SB.ACPS)
                            }

                            Name (_PCL, Package (0x01)
                            {
                                \_SB.PCI0
                            })
                        }
                    }
                }

                Scope (\_TZ)
                {
                    Name (LTMP, 0x3C)
                    Name (STMP, 0x3C)
                    Name (FANS, 0xFF)
                    Name (TCRT, 0x78)
                    Name (TPSV, 0x5A)
                    Name (TSP, 0x1E)
                    Name (TC1, 0x02)
                    Name (TC2, 0x0A)
                    Name (CNT, 0x00)
                    Method (KELV, 1, NotSerialized)
                    {
                        And (Arg0, 0xFF, Local0)
                        Multiply (Local0, 0x0A, Local0)
                        Add (Local0, 0x0AAC, Local0)
                        Return (Local0)
                    }

                    Method (RFAN, 0, Serialized)
                    {
                        Return (GFAN ())
                    }

                    Method (RTMP, 0, Serialized)
                    {
                        Return (GTMP ())
                    }

                    Method (RLTM, 0, Serialized)
                    {
                        Return (GLTM ())
                    }

                    ThermalZone (TZ00)
                    {
                        Method (_CRT, 0, NotSerialized)
                        {
                            Return (KELV (GCRT ()))
                        }

                        Method (_TMP, 0, NotSerialized)
                        {
                            Store (0x05, Local1)
                            While (Local1)
                            {
                                Store (RTMP (), Local0)
                                If (LGreater (Local0, GCRT ()))
                                {
                                    Decrement (Local1)
                                }
                                Else
                                {
                                    Store (0x00, Local1)
                                }
                            }

                            Return (KELV (Local0))
                        }

                        Method (_PSL, 0, Serialized)
                        {
                            If (LGreaterEqual (\_SB.CPUN, 0x02))
                            {
                                Return (Package (0x02)
                                {
                                    \_PR.CPU0, 
                                    \_PR.CPU1
                                })
                            }

                            Return (Package (0x01)
                            {
                                \_PR.CPU0
                            })
                        }

                        Method (_TSP, 0, NotSerialized)
                        {
                            Multiply (TSP, 0x01, Local0)
                            Return (Local0)
                        }

                        Method (_PSV, 0, NotSerialized)
                        {
                            Return (KELV (GPSV ()))
                        }

                        Method (_TC1, 0, NotSerialized)
                        {
                            Return (TC1)
                        }

                        Method (_TC2, 0, NotSerialized)
                        {
                            Return (TC2)
                        }
                    }
                }

                Scope (\_SB)
                {
                    Device (LID)
                    {
                        Name (_HID, EisaId ("PNP0C0D"))
                        Method (_LID, 0, NotSerialized)
                        {
                            Store (One, Local0)
                            Store (\GLID (), Local0)
                            Return (Local0)
                        }
                    }
                }

                Scope (\_SB.PCI0.LPCB.EC0)
                {
                    Method (_Q83, 0, NotSerialized)
                    {
                        \TGLD ()
                        Notify (\_SB.LID, 0x80)
                    }
                }

                Scope (\_SB)
                {
                    Device (SLPB)
                    {
                        Name (_HID, EisaId ("PNP0C0E"))
                    }
                }
            }

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

            Device (EHC1)
            {
                Name (_ADR, 0x001D0000)
                OperationRegion (PWKE, PCI_Config, 0x62, 0x04)
                Field (PWKE, DWordAcc, NoLock, Preserve)
                {
                        ,   1, 
                    PWUC,   8
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (Ones, PWUC)
                    }
                    Else
                    {
                        Store (0x00, PWUC)
                    }
                }

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

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

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (USB2)
            {
                Name (_ADR, 0x001D0002)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (USB3)
            {
                Name (_ADR, 0x001D0003)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (USB4)
            {
                Name (_ADR, 0x001D0004)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (EHC2)
            {
                Name (_ADR, 0x001A0000)
                OperationRegion (PWKE, PCI_Config, 0x62, 0x04)
                Field (PWKE, DWordAcc, NoLock, Preserve)
                {
                        ,   1, 
                    PWUC,   6
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (Ones, PWUC)
                    }
                    Else
                    {
                        Store (0x00, PWUC)
                    }
                }

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

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

            Device (USB5)
            {
                Name (_ADR, 0x001A0001)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (USB6)
            {
                Name (_ADR, 0x001A0002)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

            Device (USB7)
            {
                Name (_ADR, 0x001A0003)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

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

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

                Device (HUBN)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

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

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

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

            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR04 ())
                    }

                    Return (PR04 ())
                }
            }

            Device (RP02)
            {
                Name (_ADR, 0x001C0001)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR05 ())
                    }

                    Return (PR05 ())
                }
            }

            Device (RP03)
            {
                Name (_ADR, 0x001C0002)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR06 ())
                    }

                    Return (PR06 ())
                }
            }

            Device (RP04)
            {
                Name (_ADR, 0x001C0003)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR07 ())
                    }

                    Return (PR07 ())
                }
            }

            Device (RP05)
            {
                Name (_ADR, 0x001C0004)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR08 ())
                    }

                    Return (PR08 ())
                }
            }

            Device (RP06)
            {
                Name (_ADR, 0x001C0005)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR09 ())
                    }

                    Return (PR09 ())
                }

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

            Device (RP07)
            {
                Name (_ADR, 0x001C0006)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR0E)
                    }

                    Return (PR0E)
                }
            }

            Device (RP08)
            {
                Name (_ADR, 0x001C0007)
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x10), 
                    L0SE,   1, 
                            Offset (0x11), 
                            Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1
                }

                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                            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, 
                    PMPD,   1, 
                            Offset (0x9C), 
                        ,   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 (_PRT, 0, NotSerialized)
                {
                    If (PICM)
                    {
                        Return (AR0F)
                    }

                    Return (PR0F)
                }
            }

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

            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)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x09, 0x04))
                }
            }

            Device (PEGR)
            {
                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 (GFX0)
                {
                    Name (_ADR, 0x00)
                    Method (_PRW, 0, NotSerialized)
                    {
                        Return (GPRW (0x09, 0x04))
                    }
                }
            }

            Device (GFX0)
            {
                Name (_ADR, 0x00020000)
                OperationRegion (VSID, PCI_Config, 0x00, 0x04)
                Field (VSID, ByteAcc, NoLock, Preserve)
                {
                    REG0,   32
                }

                Name (BLAC, Package (0x0B) {})
                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, Serialized)
                {
                    Method (GBDA, 0, Serialized)
                    {
                        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, Serialized)
                    {
                        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.GFX0, Arg1)
                        }
                    }

                    If (CondRefOf (HNOT))
                    {
                        HNOT (Arg0)
                    }
                    Else
                    {
                        Notify (\_SB.PCI0.GFX0, 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 (Divide (Multiply (Arg1, 0xFF), 0x64, ), 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)
                }

                Method (PRST, 0, NotSerialized)
                {
                    If (LEqual (REG0, 0xFFFFFFFF))
                    {
                        Return (Zero)
                    }
                    Else
                    {
                        Return (One)
                    }
                }

                Name (LCDM, 0x0808)
                Name (CRTM, 0x0101)
                Name (TVOM, 0x0202)
                Name (HDMM, 0x0404)
                Name (DVIM, 0x4040)
                Name (DPOM, 0x8080)
                Name (DOSF, One)
                Name (BRNC, Zero)
                Name (UPDN, One)
                Name (NXTD, 0x01)
                Name (LFID, 0xFFFFFFFF)
                Name (CRID, 0xFFFFFFFF)
                Name (TVID, 0xFFFFFFFF)
                Name (DPID, 0xFFFFFFFF)
                Name (HDID, 0xFFFFFFFF)
                Name (DVID, 0xFFFFFFFF)
                Name (DDID, 0x00)
                Name (CONT, 0x00)
                Name (RST0, Buffer (0x0100)
                {
                    0x00
                })
                Name (RST1, Buffer (0x0100)
                {
                    0x00
                })
                Method (MD2A, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (And (Arg0, LCDM))
                    {
                        Or (Local0, 0x01, Local0)
                    }

                    If (And (Arg0, CRTM))
                    {
                        Or (Local0, 0x02, Local0)
                    }

                    If (And (Arg0, TVOM))
                    {
                        Or (Local0, 0x04, Local0)
                    }

                    If (And (Arg0, DVIM))
                    {
                        Or (Local0, 0x08, Local0)
                    }

                    If (And (Arg0, HDMM))
                    {
                        Or (Local0, 0x10, Local0)
                    }

                    If (And (Arg0, DPOM))
                    {
                        Or (Local0, 0x20, Local0)
                    }

                    If (LNot (Local0))
                    {
                        Return (NXTD)
                    }

                    Return (Local0)
                }

                Method (MA2D, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (And (Arg0, 0x01))
                    {
                        Or (Local0, LCDM, Local0)
                    }

                    If (And (Arg0, 0x02))
                    {
                        Or (Local0, CRTM, Local0)
                    }

                    If (And (Arg0, 0x04))
                    {
                        Or (Local0, TVOM, Local0)
                    }

                    If (And (Arg0, 0x08))
                    {
                        Or (Local0, DVIM, Local0)
                    }

                    If (And (Arg0, 0x10))
                    {
                        Or (Local0, HDMM, Local0)
                    }

                    If (And (Arg0, 0x20))
                    {
                        Or (Local0, DPOM, Local0)
                    }

                    If (LNot (Local0))
                    {
                        Return (LCDM)
                    }

                    Return (Local0)
                }

                Method (_INI, 0, NotSerialized)
                {
                    If (And (SGEN, 0x01))
                    {
                        HINI ()
                    }
                }

                Method (_DOS, 1, NotSerialized)
                {
                    And (Arg0, 0x03, DOSF)
                    Store (ShiftRight (Arg0, 0x02), BRNC)
                    And (BRNC, 0x01, BRNC)
                }

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

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

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

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

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

                    If (LEqual (NDID, 0x01))
                    {
                        Name (TMP1, Package (0x01)
                        {
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP1, 0x00))
                        Return (TMP1)
                    }

                    If (LEqual (NDID, 0x02))
                    {
                        Name (TMP2, Package (0x02)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP2, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP2, 0x01))
                        Return (TMP2)
                    }

                    If (LEqual (NDID, 0x03))
                    {
                        Name (TMP3, Package (0x03)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP3, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP3, 0x01))
                        Store (Or (0x00010000, DID3), Index (TMP3, 0x02))
                        Return (TMP3)
                    }

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

                    If (LGreater (NDID, 0x04))
                    {
                        Name (TMP5, Package (0x05)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP5, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP5, 0x01))
                        Store (Or (0x00010000, DID3), Index (TMP5, 0x02))
                        Store (Or (0x00010000, DID4), Index (TMP5, 0x03))
                        Store (Or (0x00010000, DID5), Index (TMP5, 0x04))
                        Return (TMP5)
                    }

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

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

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

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

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

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

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

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

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

                    Method (_BCL, 0, NotSerialized)
                    {
                        Store (0x00, Local0)
                        Store (\_SB.BRTI, Local4)
                        ShiftLeft (Local4, 0x04, Local4)
                        While (LLess (Local0, 0x0B))
                        {
                            Subtract (0x0B, Local0, Local3)
                            Subtract (Local3, 0x01, Local3)
                            Store (Add (Local4, Local3), Local3)
                            Store (DerefOf (Index (PWBT, Local3)), Local1)
                            Store (Divide (Multiply (Local1, 0x64), 0xFF, ), Local2)
                            Store (Local2, Index (BLAC, Local0))
                            Increment (Local0)
                        }

                        Return (BLAC)
                    }

                    Method (_BCM, 1, NotSerialized)
                    {
                        Store (One, BCMD)
                        Store (GCBL (Arg0), Local0)
                        Subtract (Subtract (0x0B, 0x01), Local0, \_SB.LBTN)
                        If (BRNC)
                        {
                            \_SB.PCI0.GFX0.AINT (0x01, Arg0)
                        }
                        Else
                        {
                            STBR ()
                        }
                    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    Return (0x00)
                }

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

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

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

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

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

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

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

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

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

                    Return (0x1D)
                }

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

                    If (LEqual (NADL, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL2, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL3, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL4, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL5, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL6, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL7, Local0))
                    {
                        Return (0x01)
                    }

                    If (LEqual (NDL8, Local0))
                    {
                        Return (0x01)
                    }

                    Return (0x00)
                }

                Method (SWHD, 1, Serialized)
                {
                    If (And (SGEN, 0x01)) {}
                    Store (One, UPDN)
                    If (LEqual (DOSF, 0x01))
                    {
                        If (NATK ())
                        {
                            Store (0x00, \_SB.PAR0)
                        }
                        Else
                        {
                            Store (0x04, \_SB.PAR0)
                        }

                        Store (Arg0, \_SB.SSTE)
                        If (NATK ())
                        {
                            Store (MA2D (Arg0), \_SB.NSTE)
                            Store (\_SB.NSTE, \_SB.SSTE)
                        }

                        If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
                        {
                            Store (0x80000001, \_SB.PINX)
                            ISMI (0x9C)
                            Release (\_SB.MPAR)
                        }

                        Notify (\_SB.PCI0.GFX0, 0x81)
                    }
                    Else
                    {
                        Store (0x01, \_SB.PCI0.GFX0.CEVT)
                        Store (0x03, \_SB.PCI0.GFX0.CSTS)
                        If (LNotEqual (\_SB.CADL, \_SB.PADL))
                        {
                            Store (\_SB.CADL, \_SB.PADL)
                            If (LEqual (OSFG, OSXP))
                            {
                                Notify (\_SB.PCI0, 0x00)
                            }
                            Else
                            {
                                Notify (\_SB.PCI0.GFX0, 0x00)
                            }

                            Sleep (0x03E8)
                        }

                        Store (MA2D (NXTD), \_SB.NSTE)
                        WNDD (\_SB.NSTE)
                        Notify (\_SB.PCI0.GFX0, 0x80)
                    }
                }

                Method (GCDD, 0, NotSerialized)
                {
                    Store (0x01, \_SB.PAR0)
                    If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
                    {
                        Store (0x80000000, \_SB.PINX)
                        ISMI (0x9C)
                        Release (\_SB.MPAR)
                    }

                    Return (\_SB.CSTE)
                }

                Method (GNDD, 0, NotSerialized)
                {
                    Store (0x05, \_SB.PAR0)
                    If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
                    {
                        Store (0x80000000, \_SB.PINX)
                        ISMI (0x9C)
                        Release (\_SB.MPAR)
                    }

                    Return (\_SB.NSTE)
                }

                Method (GCAD, 0, NotSerialized)
                {
                    Store (0x02, \_SB.PAR0)
                    If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
                    {
                        Store (0x80000000, \_SB.PINX)
                        ISMI (0x9C)
                        Release (\_SB.MPAR)
                    }

                    Return (\_SB.CADL)
                }

                Method (GVIF, 0, NotSerialized)
                {
                    Store (0x67, \_SB.VBIF)
                    Store (0x00, \_SB.PAR0)
                    If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
                    {
                        Store (0x80000000, \_SB.PINX)
                        ISMI (0x9C)
                        Release (\_SB.MPAR)
                    }

                    Return (\_SB.VBIF)
                }

                Method (ADVD, 0, NotSerialized)
                {
                    If (And (SGEN, 0x01)) {}
                    If (And (DOSF, 0x03))
                    {
                        GCDD ()
                        GCAD ()
                        GVIF ()
                    }
                    Else
                    {
                        OGCA ()
                        OGCD ()
                    }

                    If (NATK ())
                    {
                        If (UPDN)
                        {
                            Store (MD2A (\_SB.CSTE), NXTD)
                            Store (Zero, UPDN)
                        }

                        Store (Zero, Local0)
                        Store (MD2A (\_SB.CADL), Local1)
                        Store (Zero, Local2)
                        If (And (\_SB.VGAF, 0x01))
                        {
                            And (\_SB.VBIF, 0x08, Local2)
                        }

                        If (And (LEqual (Local2, 0x08), And (\_SB.VGAF, 0x01)))
                        {
                            And (NXTD, Local1, NXTD)
                            Store (NXTD, Local0)
                        }

                        While (LNotEqual (NXTD, Local0))
                        {
                            Increment (NXTD)
                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x03)))
                            {
                                Increment (NXTD)
                            }

                            If (And (DOSF, 0x03))
                            {
                                If (LEqual (NXTD, 0x05))
                                {
                                    Increment (NXTD)
                                }

                                If (LEqual (NXTD, 0x06))
                                {
                                    Increment (NXTD)
                                }
                            }

                            If (LEqual (NXTD, 0x07))
                            {
                                Increment (NXTD)
                            }

                            If (And (DOSF, 0x03))
                            {
                                If (LEqual (NXTD, 0x09))
                                {
                                    Increment (NXTD)
                                }
                            }

                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x0A)))
                            {
                                Increment (NXTD)
                            }

                            If (LEqual (NXTD, 0x0B))
                            {
                                Increment (NXTD)
                            }

                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x0C)))
                            {
                                Increment (NXTD)
                            }

                            While (LAnd (LGreater (NXTD, 0x0C), LLess (NXTD, 0x10)))
                            {
                                Increment (NXTD)
                            }

                            If (LEqual (DOSF, 0x01))
                            {
                                If (LEqual (NXTD, 0x11))
                                {
                                    Increment (NXTD)
                                }

                                If (LEqual (NXTD, 0x12))
                                {
                                    Increment (NXTD)
                                }
                            }

                            If (LEqual (NXTD, 0x13))
                            {
                                Increment (NXTD)
                            }

                            If (LEqual (DOSF, 0x01))
                            {
                                While (LAnd (LGreaterEqual (NXTD, 0x14), LLess (NXTD, 0x20)))
                                {
                                    Increment (NXTD)
                                }

                                If (LEqual (NXTD, 0x21))
                                {
                                    Increment (NXTD)
                                }

                                If (LEqual (NXTD, 0x22))
                                {
                                    Increment (NXTD)
                                }
                            }

                            If (LEqual (NXTD, 0x23))
                            {
                                Increment (NXTD)
                            }

                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x24)))
                            {
                                Increment (NXTD)
                            }

                            While (LAnd (LGreater (NXTD, 0x24), LLess (NXTD, 0x28)))
                            {
                                Increment (NXTD)
                            }

                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x28)))
                            {
                                Increment (NXTD)
                            }

                            While (LAnd (LGreater (NXTD, 0x28), LLess (NXTD, 0x30)))
                            {
                                Increment (NXTD)
                            }

                            If (LAnd (LEqual (DOSF, 0x01), LEqual (NXTD, 0x30)))
                            {
                                Increment (NXTD)
                            }

                            If (LGreater (NXTD, 0x30))
                            {
                                Store (One, NXTD)
                            }

                            And (NXTD, Local1, Local0)
                        }

                        Return (NXTD)
                    }

                    Return (GNDD ())
                }

                Method (NATK, 0, NotSerialized)
                {
                    Return (One)
                }

                Name (BCMD, 0x00)
                Method (UPBL, 0, NotSerialized)
                {
                    If (And (SGEN, 0x01))
                    {
                        HUPB ()
                        Return (Zero)
                    }

                    If (BRNC)
                    {
                        Store (CBLV, Local0)
                        Store (Zero, BCMD)
                        Notify (LCDD, 0x86)
                        Store (0x0BB8, Local2)
                        And (Local0, 0x7FFFFFFF, Local1)
                        If (LGreaterEqual (Local1, DerefOf (Index (BLAC, 0x01))))
                        {
                            Store (Zero, Local2)
                            Store (One, Local1)
                        }

                        While (LAnd (LNot (BCMD), Local2))
                        {
                            Store (CBLV, Local1)
                            If (LNot (And (Local1, 0x80000000)))
                            {
                                Store (Local0, Local1)
                            }

                            If (LEqual (Local0, Local1))
                            {
                                Sleep (0x0A)
                                Decrement (Local2)
                                Store (Zero, Local1)
                            }
                            Else
                            {
                                Store (Zero, Local2)
                                Store (One, Local1)
                            }
                        }

                        If (LAnd (LNot (BCMD), Local1))
                        {
                            Store (GCBL (CBLV), Local3)
                            Subtract (Subtract (0x0B, 0x01), Local3, Local3)
                            Store (Local3, LBTN)
                        }
                    }
                    Else
                    {
                        If (LLess (LBTN, 0x0F))
                        {
                            Increment (LBTN)
                        }
                        Else
                        {
                            Store (0x0F, LBTN)
                        }

                        STBR ()
                    }

                    Return (Zero)
                }

                Method (DWBL, 0, NotSerialized)
                {
                    If (And (SGEN, 0x01))
                    {
                        HDWB ()
                        Return (Zero)
                    }

                    If (BRNC)
                    {
                        Store (CBLV, Local0)
                        Store (Zero, BCMD)
                        Notify (LCDD, 0x87)
                        Store (0x0BB8, Local2)
                        And (Local0, 0x7FFFFFFF, Local1)
                        If (LLessEqual (Local1, DerefOf (Index (BLAC, Subtract (0x0B, 0x01
                            )))))
                        {
                            Store (Zero, Local2)
                            Store (One, Local1)
                        }

                        While (LAnd (LNot (BCMD), Local2))
                        {
                            Store (CBLV, Local1)
                            If (LNot (And (Local1, 0x80000000)))
                            {
                                Store (Local0, Local1)
                            }

                            If (LEqual (Local0, Local1))
                            {
                                Sleep (0x0A)
                                Decrement (Local2)
                                Store (Zero, Local1)
                            }
                            Else
                            {
                                Store (Zero, Local2)
                                Store (One, Local1)
                            }
                        }

                        If (LAnd (LNot (BCMD), Local1))
                        {
                            Store (GCBL (CBLV), Local3)
                            Subtract (Subtract (0x0B, 0x01), Local3, Local3)
                            Store (Local3, LBTN)
                        }
                    }
                    Else
                    {
                        If (LGreater (LBTN, 0x00))
                        {
                            Decrement (LBTN)
                        }

                        If (LGreater (LBTN, 0x0F))
                        {
                            Store (0x0F, LBTN)
                        }

                        STBR ()
                    }

                    Return (Zero)
                }

                Method (GCBL, 1, NotSerialized)
                {
                    Store (0x00, Local0)
                    And (Arg0, 0x7FFFFFFF, Arg0)
                    While (LLess (Local0, Subtract (0x0B, 0x01)))
                    {
                        Store (DerefOf (Index (BLAC, Local0)), Local1)
                        Store (DerefOf (Index (BLAC, Add (Local0, 0x01))), Local2)
                        If (LAnd (LLessEqual (Arg0, Local1), LGreater (Arg0, Local2)))
                        {
                            Break
                        }

                        Increment (Local0)
                    }

                    Return (Local0)
                }

                Method (GDTP, 1, NotSerialized)
                {
                    And (Arg0, 0x0F00, Local0)
                    If (LEqual (Local0, 0x0100))
                    {
                        Store (Arg0, CRID)
                    }

                    If (LEqual (Local0, 0x0200))
                    {
                        Store (Arg0, TVID)
                    }

                    If (LEqual (Local0, 0x0400))
                    {
                        Store (Arg0, LFID)
                    }

                    If (LEqual (Local0, 0x0300))
                    {
                        Store (Arg0, HDID)
                    }
                }

                Method (SDTP, 0, NotSerialized)
                {
                    GDTP (CPDL)
                    GDTP (CPL2)
                    GDTP (CPL3)
                    GDTP (CPL4)
                    GDTP (CPL5)
                    GDTP (CPL6)
                    GDTP (CPL7)
                    GDTP (CPL8)
                }

                Method (OA2D, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (Arg0, LFID))
                    {
                        Or (Local0, LCDM, Local0)
                    }

                    If (LEqual (Arg0, CRID))
                    {
                        Or (Local0, CRTM, Local0)
                    }

                    If (LEqual (Arg0, TVID))
                    {
                        Or (Local0, TVOM, Local0)
                    }

                    If (LEqual (Arg0, HDID))
                    {
                        Or (Local0, HDMM, Local0)
                    }

                    If (LEqual (Arg0, DVID))
                    {
                        Or (Local0, DVIM, Local0)
                    }

                    If (LEqual (Arg0, DPID))
                    {
                        Or (Local0, DPOM, Local0)
                    }

                    Return (Local0)
                }

                Method (OGCD, 0, NotSerialized)
                {
                    If (LEqual (CADL, 0x00))
                    {
                        Store (LCDM, \_SB.CSTE)
                        Return (Zero)
                    }

                    Store (OA2D (CADL), \_SB.CSTE)
                    If (LEqual (CAL2, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL2), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL3, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL3), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL4, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL4), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL5, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL5), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL6, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL6), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL7, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL7), \_SB.CSTE, \_SB.CSTE)
                    If (LEqual (CAL8, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CAL8), \_SB.CSTE, \_SB.CSTE)
                    Return (Zero)
                }

                Method (OGCA, 0, NotSerialized)
                {
                    SDTP ()
                    If (LEqual (CPDL, 0x00))
                    {
                        Store (LCDM, \_SB.CADL)
                        Return (Zero)
                    }

                    Store (OA2D (CPDL), \_SB.CADL)
                    If (LEqual (CPL2, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL2), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL3, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL3), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL4, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL4), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL5, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL5), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL6, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL6), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL7, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL7), \_SB.CADL, \_SB.CADL)
                    If (LEqual (CPL8, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (OA2D (CPL8), \_SB.CADL, \_SB.CADL)
                    Return (Zero)
                }

                Method (GDID, 1, NotSerialized)
                {
                    While (LLess (CONT, 0x08))
                    {
                        Store (0x01, Local0)
                        ShiftLeft (Local0, CONT, Local0)
                        And (\_SB.NSTE, Local0, Local1)
                        Increment (CONT)
                        If (And (Local1, LCDM))
                        {
                            Return (LFID)
                        }

                        If (And (Local1, CRTM))
                        {
                            Return (CRID)
                        }

                        If (And (Local1, TVOM))
                        {
                            Return (TVID)
                        }

                        If (And (Local1, HDMM))
                        {
                            Return (HDID)
                        }

                        If (And (Local1, DVIM))
                        {
                            Return (DVID)
                        }
                    }

                    Return (0x00)
                }

                Method (WNDD, 1, NotSerialized)
                {
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NADL)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL2)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL3)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL4)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL5)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL6)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL7)
                    Store (GDID (Arg0), DDID)
                    Store (DDID, NDL8)
                    Store (0x00, CONT)
                }

                Name (HGCK, 0x00)
                Name (HPWR, 0x00)
                Name (HPOK, 0x00)
                Name (HGDP, 0x00)
                Name (HGAP, 0x00)
                Name (HPLG, 0x00)
                Name (HPEJ, 0x00)
                Name (HPLE, 0x00)
                Name (HLMX, 0x00)
                Name (HLMM, 0x00)
                Name (HCMX, 0x00)
                Name (HCMM, 0x00)
                Name (HDMX, 0x00)
                Name (HDMU, 0x00)
                Name (HHMX, 0x00)
                Name (HHMM, 0x00)
                Name (HPMX, 0x00)
                Name (HPMM, 0x00)
                Name (HVGF, 0x00)
                Name (BOTF, Zero)
                Name (DONE, Zero)
                Name (CMO1, 0x00)
                Name (TLST, 0x01)
                Name (DSM2, 0x00)
                Name (DSM5, 0x00)
                Name (QATH, 0x00)
                Name (HGDD, 0x01)
                Name (HHKM, One)
                Name (BLCD, 0x0101)
                Name (BCRT, 0x0202)
                Name (BTVO, 0x0808)
                Name (BHDM, 0x0404)
                Name (BDVI, 0x4040)
                Name (BDPO, 0x8080)
                Method (HINI, 0, NotSerialized)
                {
                    Store (0x01, HPWR)
                    Store (0x01, HPOK)
                    Store (0x00, HGDP)
                    Store (0x00, HGAP)
                    Store (0x00, HPLG)
                    Store (0x00, HPEJ)
                    Store (0x01, HPLE)
                    Store (0x00, HLMX)
                    Store (0x00, HLMM)
                    Store (0x00, HCMX)
                    Store (0x00, HCMM)
                    Store (0x00, HDMX)
                    Store (0x00, HDMU)
                    Store (0x00, HHMX)
                    Store (0x00, HHMM)
                    SAVO ()
                }

                Method (_DSM, 4, Serialized)
                {
                    Name (_T_0, Zero)
                    If (LEqual (Arg0, Buffer (0x10)
                            {
                                /* 0000 */    0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47, 
                                /* 0008 */    0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
                            }))
                    {
                        Store (Zero, Local0)
                        Store (ShiftLeft (DerefOf (Index (Arg3, 0x03)), 0x18), Local0)
                        Add (ShiftLeft (DerefOf (Index (Arg3, 0x02)), 0x10), Local0, 
                            Local0)
                        Add (ShiftLeft (DerefOf (Index (Arg3, One)), 0x08), Local0, 
                            Local0)
                        Add (ShiftLeft (DerefOf (Index (Arg3, Zero)), Zero), Local0, 
                            Local0)
                        If (LNotEqual (Arg1, 0x0100))
                        {
                            Return (Buffer (0x04)
                            {
                                0x02, 0x00, 0x00, 0x80
                            })
                        }

                        Store ("Optimus _DSM is called ", Debug)
                        While (One)
                        {
                            Store (Arg2, _T_0)
                            If (LEqual (_T_0, 0x00))
                            {
                                Store ("Optimus _DSM subfunc 0, return 0x04000001 ", Debug)
                                Return (Buffer (0x04)
                                {
                                    0x01, 0x00, 0x03, 0x04
                                })
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x10))
                                {
                                    ShiftRight (Local0, 0x10, Local2)
                                    If (LEqual (Local2, 0x564B))
                                    {
                                        Return (\OPVK ())
                                    }

                                    Return (Zero)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x1A))
                                    {
                                        Store ("Optimus _DSM subfunc 26 ", Debug)
                                        If (And (Local0, One))
                                        {
                                            ShiftRight (Local0, 0x18, Local2)
                                            If (LEqual (Local2, 0x03))
                                            {
                                                Store ("Optimus _DSM subfunc 26, OMPR=3", Debug)
                                                Store (0x03, \OMPR)
                                            }

                                            If (LEqual (Local2, 0x02))
                                            {
                                                Store (0x02, \OMPR)
                                            }
                                        }

                                        If (LEqual (\PO54, Zero))
                                        {
                                            Return (Buffer (0x04)
                                            {
                                                0x59, 0x00, 0x00, 0x01
                                            })
                                        }
                                        Else
                                        {
                                            Return (Buffer (0x04)
                                            {
                                                0x41, 0x00, 0x00, 0x01
                                            })
                                        }
                                    }
                                    Else
                                    {
                                        Return (Buffer (0x04)
                                        {
                                            0x02, 0x00, 0x00, 0x80
                                        })
                                    }
                                }
                            }

                            Break
                        }
                    }

                    Return (0x00)
                }

                Method (RSTO, 0, NotSerialized)
                {
                    OperationRegion (PEGR, SystemMemory, 0xE0008000, 0x0100)
                    Field (PEGR, ByteAcc, NoLock, Preserve)
                    {
                        PREG,   2048
                    }

                    Store (RST0, PREG)
                    OperationRegion (VGAR, SystemMemory, 0xE0100000, 0x0100)
                    Field (VGAR, ByteAcc, NoLock, Preserve)
                    {
                        VREG,   2048
                    }

                    Store (RST1, VREG)
                }

                Method (SAVO, 0, NotSerialized)
                {
                    OperationRegion (PEGR, SystemMemory, 0xE0008000, 0x0100)
                    Field (PEGR, ByteAcc, NoLock, Preserve)
                    {
                        PREG,   2048
                    }

                    Store (PREG, RST0)
                    OperationRegion (VGAR, SystemMemory, 0xE0100000, 0x0100)
                    Field (VGAR, ByteAcc, NoLock, Preserve)
                    {
                        VREG,   2048
                    }

                    Store (VREG, RST1)
                }

                Method (HHKW, 0, Serialized)
                {
                    While (LNot (HHKM))
                    {
                        Sleep (0x64)
                    }

                    Store (Zero, HHKM)
                }

                Method (HHKS, 0, Serialized)
                {
                    Store (One, HHKM)
                }

                Method (TGPU, 1, NotSerialized)
                {
                    HHKW ()
                    Store (Arg0, HGDP)
                    Store (Zero, Local0)
                    Add (Arg0, Local0, Local0)
                    Store (Local0, \_SB.PCI0.GFX0.DSM2)
                    Notify (\_SB.PCI0.GFX0, 0xD0)
                    Store (0x1E, Local0)
                    While (Local0)
                    {
                        If (LNotEqual (HGAP, Arg0))
                        {
                            Sleep (0x01F4)
                            Decrement (Local0)
                        }
                        Else
                        {
                            Store (Zero, Local0)
                        }
                    }

                    Store (0x00, \_SB.PCI0.GFX0.DSM2)
                    HHKS ()
                }

                Method (MXDS, 1, NotSerialized)
                {
                    If (And (Arg0, 0x00))
                    {
                        Return (LNot (HLMX))
                    }
                    Else
                    {
                        Store (Zero, HLMX)
                        Store (Zero, HCMX)
                        Sleep (0x64)
                    }
                }

                Method (MXMX, 1, NotSerialized)
                {
                    Store (One, HLMM)
                    Store (One, HCMM)
                    Store (One, HDMU)
                    Store (One, HHMM)
                    Store (Zero, HLMX)
                    Store (Zero, HCMX)
                    Store (Zero, HDMX)
                    Store (Zero, HHMX)
                    Return (0x01)
                }

                Method (HUPB, 0, NotSerialized)
                {
                    If (LEqual (HGAP, 0x01))
                    {
                        Notify (LCDD, 0x86)
                        Notify (\_SB.PCI0.PEGR.GFX0.LCDD, 0x86)
                    }
                }

                Method (HDWB, 0, NotSerialized)
                {
                    If (LEqual (HGAP, 0x01))
                    {
                        Notify (LCDD, 0x87)
                        Notify (\_SB.PCI0.PEGR.GFX0.LCDD, 0x87)
                    }
                }

                Method (HDVG, 0, NotSerialized)
                {
                    If (LEqual (HGAP, 0x01))
                    {
                        HGCA ()
                        HGCD ()
                        And (\CADL, 0xFF, \CADL)
                        And (\CSTE, 0xFF, \CSTE)
                        If (UPDN)
                        {
                            Store (HD2A (\CSTE), NXTD)
                            Store (Zero, UPDN)
                        }

                        Store (\_SB.PCI0.GFX0.HD2A (\CADL), Local1)
                    }
                    Else
                    {
                        Store (0x01, \_SB.PCI0.GFX0.QATH)
                        \_SB.PCI0.GFX0.EV80 ()
                        Store (0x01F4, Local0)
                        While (Local0)
                        {
                            If (\_SB.PCI0.GFX0.QATH)
                            {
                                Sleep (0x0A)
                                Decrement (Local0)
                            }
                            Else
                            {
                                Store (Zero, Local0)
                            }
                        }

                        And (\CADL, 0x0FFF, \CADL)
                        And (\CSTE, 0x0FFF, \CSTE)
                        If (UPDN)
                        {
                            Store (MD2A (\CSTE), NXTD)
                            Store (Zero, UPDN)
                        }

                        Store (\_SB.PCI0.GFX0.MD2A (\CADL), Local1)
                    }

                    Store (Zero, Local0)
                    While (LNotEqual (NXTD, Local0))
                    {
                        Increment (NXTD)
                        If (LEqual (NXTD, 0x07))
                        {
                            Increment (NXTD)
                        }

                        If (LEqual (NXTD, 0x0B))
                        {
                            Increment (NXTD)
                        }

                        If (LAnd (LGreaterEqual (NXTD, 0x0D), LLessEqual (NXTD, 0x0F)))
                        {
                            Increment (NXTD)
                        }

                        If (LEqual (NXTD, 0x13))
                        {
                            Increment (NXTD)
                        }

                        If (LAnd (LGreaterEqual (NXTD, 0x15), LLessEqual (NXTD, 0x17)))
                        {
                            Increment (NXTD)
                        }

                        If (LAnd (LGreaterEqual (NXTD, 0x19), LLessEqual (NXTD, 0x1F)))
                        {
                            Increment (NXTD)
                        }

                        If (LEqual (NXTD, 0x23))
                        {
                            Increment (NXTD)
                        }

                        If (LAnd (LGreaterEqual (NXTD, 0x25), LLessEqual (NXTD, 0x27)))
                        {
                            Increment (NXTD)
                        }

                        If (LAnd (LGreaterEqual (NXTD, 0x29), LLessEqual (NXTD, 0x2F)))
                        {
                            Increment (NXTD)
                        }

                        If (LGreater (NXTD, 0x30))
                        {
                            Store (One, NXTD)
                        }

                        And (NXTD, Local1, Local0)
                    }

                    Return (NXTD)
                }

                Method (GATD, 1, NotSerialized)
                {
                    If (LEqual (Arg0, 0x01))
                    {
                        Return (0x01)
                    }
                    Else
                    {
                        If (LEqual (Arg0, 0x02))
                        {
                            Return (0x02)
                        }
                        Else
                        {
                            If (LEqual (Arg0, 0x03))
                            {
                                Return (0x03)
                            }
                            Else
                            {
                                If (LEqual (Arg0, 0x10))
                                {
                                    Return (0x04)
                                }
                                Else
                                {
                                    If (LEqual (Arg0, 0x11))
                                    {
                                        Return (0x05)
                                    }
                                    Else
                                    {
                                        If (LEqual (Arg0, 0x12))
                                        {
                                            Return (0x06)
                                        }
                                        Else
                                        {
                                            If (LEqual (Arg0, 0x20))
                                            {
                                                Return (0x07)
                                            }
                                            Else
                                            {
                                                If (LEqual (Arg0, 0x21))
                                                {
                                                    Return (0x08)
                                                }
                                                Else
                                                {
                                                    If (LEqual (Arg0, 0x22))
                                                    {
                                                        Return (0x09)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (Arg0, 0x30))
                                                        {
                                                            Return (0x0A)
                                                        }
                                                        Else
                                                        {
                                                            Return (0x01)
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                Method (HWHG, 1, Serialized)
                {
                    If (LAnd (And (Arg0, 0x00), LEqual (HGAP, 0x01)))
                    {
                        \_SB.PCI0.GFX0.TGPU (0x02)
                        Sleep (0x2AF8)
                    }

                    Store (One, UPDN)
                    Store (Zero, DONE)
                    Store (GATD (Arg0), \_SB.PCI0.GFX0.TLST)
                    \_SB.PCI0.GFX0.EV80 ()
                    Store (0x01F4, Local0)
                    While (Local0)
                    {
                        If (DONE)
                        {
                            Store (Zero, Local0)
                        }
                        Else
                        {
                            Sleep (0x0A)
                            Decrement (Local0)
                        }
                    }

                    Sleep (0x64)
                }

                Method (HGCD, 0, NotSerialized)
                {
                    If (LEqual (CADL, 0x00))
                    {
                        Store (BLCD, \CSTE)
                        Return (Zero)
                    }

                    Store (HA2D (CADL), \CSTE)
                    If (LEqual (CAL2, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL2), \CSTE, \CSTE)
                    If (LEqual (CAL3, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL3), \CSTE, \CSTE)
                    If (LEqual (CAL4, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL4), \CSTE, \CSTE)
                    If (LEqual (CAL5, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL5), \CSTE, \CSTE)
                    If (LEqual (CAL6, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL6), \CSTE, \CSTE)
                    If (LEqual (CAL7, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL7), \CSTE, \CSTE)
                    If (LEqual (CAL8, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CAL8), \CSTE, \CSTE)
                    Return (Zero)
                }

                Method (HGTP, 1, NotSerialized)
                {
                    And (Arg0, 0x0FFF, Local0)
                    If (LEqual (Local0, 0x0100))
                    {
                        Store (Arg0, CRID)
                    }

                    If (LEqual (Local0, 0x0110))
                    {
                        Store (Arg0, LFID)
                    }

                    If (LEqual (Local0, 0x0340))
                    {
                        Store (Arg0, DPID)
                    }

                    If (LEqual (Local0, 0x0330))
                    {
                        Store (Arg0, HDID)
                    }
                }

                Method (HDTP, 0, NotSerialized)
                {
                    HGTP (CPDL)
                    HGTP (CPL2)
                    HGTP (CPL3)
                    HGTP (CPL4)
                    HGTP (CPL5)
                    HGTP (CPL6)
                    HGTP (CPL7)
                    HGTP (CPL8)
                }

                Method (HGCA, 0, NotSerialized)
                {
                    HDTP ()
                    If (LEqual (CPDL, 0x00))
                    {
                        Store (BLCD, \CADL)
                        Return (Zero)
                    }

                    Store (HA2D (CPDL), \CADL)
                    If (LEqual (CPL2, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL2), \CADL, \CADL)
                    If (LEqual (CPL3, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL3), \CADL, \CADL)
                    If (LEqual (CPL4, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL4), \CADL, \CADL)
                    If (LEqual (CPL5, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL5), \CADL, \CADL)
                    If (LEqual (CPL6, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL6), \CADL, \CADL)
                    If (LEqual (CPL7, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL7), \CADL, \CADL)
                    If (LEqual (CPL8, 0x00))
                    {
                        Return (Zero)
                    }

                    Or (HA2D (CPL8), \CADL, \CADL)
                    Return (Zero)
                }

                Method (HA2D, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (LEqual (Arg0, LFID))
                    {
                        Or (Local0, BLCD, Local0)
                    }

                    If (LEqual (Arg0, CRID))
                    {
                        Or (Local0, BCRT, Local0)
                    }

                    If (LEqual (Arg0, TVID))
                    {
                        Or (Local0, BTVO, Local0)
                    }

                    If (LEqual (Arg0, HDID))
                    {
                        Or (Local0, BHDM, Local0)
                    }

                    If (LEqual (Arg0, DVID))
                    {
                        Or (Local0, BDVI, Local0)
                    }

                    If (LEqual (Arg0, DPID))
                    {
                        Or (Local0, BDPO, Local0)
                    }

                    Return (Local0)
                }

                Method (HD2A, 1, NotSerialized)
                {
                    Store (Zero, Local0)
                    If (And (Arg0, BLCD))
                    {
                        Or (Local0, 0x01, Local0)
                    }

                    If (And (Arg0, BCRT))
                    {
                        Or (Local0, 0x02, Local0)
                    }

                    If (And (Arg0, BTVO))
                    {
                        Or (Local0, 0x04, Local0)
                    }

                    If (And (Arg0, BDVI))
                    {
                        Or (Local0, 0x08, Local0)
                    }

                    If (And (Arg0, BHDM))
                    {
                        Or (Local0, 0x10, Local0)
                    }

                    If (And (Arg0, BDPO))
                    {
                        Or (Local0, 0x20, Local0)
                    }

                    If (LNot (Local0))
                    {
                        Return (NXTD)
                    }

                    Return (Local0)
                }

                Method (EVD0, 0, NotSerialized)
                {
                    Notify (\_SB.PCI0.GFX0, 0xD0)
                    \_SB.PCI0.NWM1 (0xD0)
                }

                Method (EVD9, 0, NotSerialized)
                {
                    Notify (\_SB.PCI0.GFX0, 0xD9)
                    \_SB.PCI0.NWM1 (0xD9)
                }

                Method (EVDA, 0, NotSerialized)
                {
                    Notify (\_SB.PCI0.GFX0, 0xDA)
                    \_SB.PCI0.NWM1 (0xDA)
                }

                Method (EV80, 0, NotSerialized)
                {
                    Notify (\_SB.PCI0.GFX0, 0x80)
                    \_SB.PCI0.NWM1 (0x80)
                }

                Method (EV81, 0, NotSerialized)
                {
                    Notify (\_SB.PCI0.GFX0, 0x81)
                    \_SB.PCI0.NWM1 (0x81)
                }

                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)
                    {
                        Return (CRS)
                    }
                }

                Scope (\_GPE)
                {
                    Method (_L06, 0, NotSerialized)
                    {
                        If (LAnd (\_SB.PCI0.GFX0.GSSE, LNot (GSMI)))
                        {
                            \_SB.PCI0.GFX0.GSCI ()
                        }
                    }
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L0B, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.P0P1, 0x02)
            }

            Method (_L0D, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.EHC1, 0x02)
                Notify (\_SB.PCI0.EHC2, 0x02)
                Notify (\_SB.PCI0.GLAN, 0x02)
            }

            Method (_L03, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB1, 0x02)
            }

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

            Method (_L0C, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB3, 0x02)
            }

            Method (_L0E, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB4, 0x02)
            }

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

            Method (_L20, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB6, 0x02)
            }

            Method (_L25, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.USB7, 0x02)
            }

            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.RP06.GLAN, 0x02)
                Notify (\_SB.PCI0.PEG3, 0x02)
                Notify (\_SB.PCI0.B0D4, 0x02)
                Notify (\_SB.PCI0.PEGR, 0x02)
                Notify (\_SB.PCI0.PEGR.PEGP, 0x02)
                Notify (\_SB.PCI0.PEGR.GFX0, 0x02)
            }
        }
    }

    Scope (\_SB)
    {
        Device (PTID)
        {
            Name (CADR, 0x00)
            Name (WLEN, 0x00)
            Name (RLEN, 0x00)
            Name (CAMD, 0x00)
            Name (OBUF, Buffer (0x10) {})
            Name (IBUF, Buffer (0x0F) {})
            Name (ERRN, 0x00)
            Name (_HID, EisaId ("INT340E"))
            Name (_CID, EisaId ("PNP0C02"))
            Name (IVER, 0x00030000)
            Name (TSDL, Package (0x04)
            {
                0x00, 
                "CPU Temperature", 
                0x05, 
                "PCH Temperature"
            })
            Name (TMPV, Package (0x02)
            {
                0x80000000, 
                0x80000000
            })
            Name (PSDL, Package (0x04)
            {
                0x00, 
                "CPU Power", 
                0x01, 
                "Gfx Power"
            })
            Name (PWRV, Package (0x02)
            {
                0x80000000, 
                0x80000000
            })
            Name (OSDL, Package (0x06)
            {
                0x04, 
                "Fan RPM", 
                "RPM", 
                0x0C, 
                "Battery Capaciy", 
                "mAh"
            })
            Name (OSDV, Package (0x02)
            {
                0x80000000, 
                0x80000000
            })
            Method (TSDD, 0, NotSerialized)
            {
                Name (TMPC, 0x00)
                Store (\_SB.PCI0.LPCB.EC0.ECPU, TMPC)
                Store (TMPC, Index (TMPV, 0x00))
                Store (\_SB.PCI0.LPCB.EC0.ECPU, TMPC)
                Store (TMPC, Index (TMPV, 0x01))
                Return (TMPV)
            }

            Method (PWRG, 0, NotSerialized)
            {
                Return (Ones)
            }

            Method (PSDD, 0, NotSerialized)
            {
                Name (PWRC, 0x00)
                Store (PWRG (), PWRC)
                Store (PWRC, Index (PWRV, 0x00))
                Store (PWRG (), PWRC)
                Store (PWRC, Index (PWRV, 0x01))
                Return (PWRV)
            }

            Method (OSDG, 0, NotSerialized)
            {
                Return (Ones)
            }

            Method (OSDD, 0, NotSerialized)
            {
                Name (OSDC, 0x00)
                Store (OSDG (), OSDC)
                Store (OSDC, Index (OSDV, 0x00))
                Store (OSDG (), OSDC)
                Store (OSDC, Index (OSDV, 0x01))
                Return (OSDV)
            }

            Method (SDSP, 0, NotSerialized)
            {
                Return (0x0A)
            }

            Name (MBOX, Buffer (0x1A) {})
            Name (PADA, Package (0x0A)
            {
                0x01, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x1A, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (PADD, Package (0x0A)
            {
                0x02, 
                0x0271, 
                0x0270, 
                0x1A, 
                0x62, 
                0x63, 
                0x60, 
                0x61, 
                0x65, 
                0x64
            })
            Method (PADT, 0, NotSerialized)
            {
                And (\_SB.PCI0.LPCB.EC0.PBSY, 0x80, Local0)
                If (LEqual (Local0, 0x00))
                {
                    Return (PADD)
                }

                Return (PADA)
            }

            Method (RPMD, 0, NotSerialized)
            {
                Store (0x00, Local0)
                Store (0x0A, Local1)
                Add (WLEN, Local1, Local1)
                While (LLess (Local0, RLEN))
                {
                    Store (DerefOf (Index (IBUF, Local0)), Index (MBOX, Local1))
                    Add (0x01, Local0, Local0)
                    Add (0x01, Local1, Local1)
                }

                Return (MBOX)
            }

            Method (WPMD, 1, NotSerialized)
            {
                If (LNotEqual (SizeOf (Arg0), 0x1A))
                {
                    Return (0xFFFFFFFF)
                }

                Store (0x00, Local0)
                While (LLess (Local0, 0x1A))
                {
                    Store (DerefOf (Index (Arg0, Local0)), Index (MBOX, Local0))
                    Add (0x01, Local0, Local0)
                }

                Store (DerefOf (Index (Arg0, 0x06)), CADR)
                Store (DerefOf (Index (Arg0, 0x07)), WLEN)
                Store (DerefOf (Index (Arg0, 0x08)), RLEN)
                Store (DerefOf (Index (Arg0, 0x09)), CAMD)
                Name (CUNT, 0x00)
                Store (0x00, CUNT)
                Store (0x0A, Local0)
                While (LLess (CUNT, WLEN))
                {
                    Store (DerefOf (Index (Arg0, Local0)), Index (OBUF, CUNT))
                    Add (CUNT, 0x01, CUNT)
                    Add (Local0, 0x01, Local0)
                }

                Return (0x00)
            }

            Name (CYCT, 0x00)
            Method (ISPC, 0, NotSerialized)
            {
                Store (DerefOf (Index (MBOX, 0x03)), CYCT)
                ShiftLeft (CYCT, 0x08, CYCT)
                Add (CYCT, DerefOf (Index (MBOX, 0x02)), CYCT)
                ShiftLeft (CYCT, 0x08, CYCT)
                Add (CYCT, DerefOf (Index (MBOX, 0x01)), CYCT)
                ShiftLeft (CYCT, 0x08, CYCT)
                Add (CYCT, DerefOf (Index (MBOX, 0x00)), CYCT)
                If (LGreaterEqual (CYCT, 0x01))
                {
                    Store (DerefOf (Index (MBOX, 0x04)), Local0)
                    Multiply (Local0, 0x0A, Local0)
                    Sleep (Local0)
                }

                Store (\_SB.PCI0.LPCB.EC0.PECI (CADR, WLEN, RLEN, CAMD, OBUF, IBUF, ERRN), Local0)
                If (LEqual (Local0, 0x01))
                {
                    If (LGreater (CYCT, 0x00))
                    {
                        Subtract (CYCT, 0x01, CYCT)
                        And (CYCT, 0xFF, Index (MBOX, 0x00))
                        And (CYCT, 0xFF00, Local0)
                        ShiftRight (Local0, 0x08, Index (MBOX, 0x01))
                        And (CYCT, 0x00FF0000, Local0)
                        ShiftRight (Local0, 0x10, Index (MBOX, 0x02))
                        And (CYCT, 0xFF000000, Local0)
                        ShiftRight (Local0, 0x18, Index (MBOX, 0x03))
                    }
                }
            }

            Method (ENPC, 0, NotSerialized)
            {
                Store (0x00, CYCT)
            }

            Method (RPCS, 0, NotSerialized)
            {
                Name (TPCS, 0x00)
                If (LGreater (CYCT, 0x00))
                {
                    Store (0x01, TPCS)
                    ISPC ()
                }
                Else
                {
                    Store (0x00, TPCS)
                }

                Return (TPCS)
            }

            Method (RPEC, 0, NotSerialized)
            {
                Name (TPEC, 0x00)
                Store (ERRN, TPEC)
                Return (TPEC)
            }
        }
    }

    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 (_PTS, 1, NotSerialized)
    {
        PTS (Arg0)
    }

    Method (_WAK, 1, Serialized)
    {
        WAK (Arg0)
        Return (Package (0x02)
        {
            0x00, 
            0x00
        })
    }

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

    Method (PNOT, 0, Serialized)
    {
        If (LGreater (TCNT, 0x01))
        {
            If (And (PDC0, 0x08))
            {
                Notify (\_PR.CPU0, 0x80)
                If (And (PDC0, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU0, 0x81)
                }
            }

            If (And (PDC1, 0x08))
            {
                Notify (\_PR.CPU1, 0x80)
                If (And (PDC1, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU1, 0x81)
                }
            }

            If (And (PDC2, 0x08))
            {
                Notify (\_PR.CPU2, 0x80)
                If (And (PDC2, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU2, 0x81)
                }
            }

            If (And (PDC3, 0x08))
            {
                Notify (\_PR.CPU3, 0x80)
                If (And (PDC3, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU3, 0x81)
                }
            }

            If (And (PDC4, 0x08))
            {
                Notify (\_PR.CPU4, 0x80)
                If (And (PDC4, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU4, 0x81)
                }
            }

            If (And (PDC5, 0x08))
            {
                Notify (\_PR.CPU5, 0x80)
                If (And (PDC5, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU5, 0x81)
                }
            }

            If (And (PDC6, 0x08))
            {
                Notify (\_PR.CPU6, 0x80)
                If (And (PDC6, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU6, 0x81)
                }
            }

            If (And (PDC7, 0x08))
            {
                Notify (\_PR.CPU7, 0x80)
                If (And (PDC7, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU7, 0x81)
                }
            }
        }
        Else
        {
            Notify (\_PR.CPU0, 0x80)
            Sleep (0x64)
            Notify (\_PR.CPU0, 0x81)
        }
    }

    Method (TRAP, 2, Serialized)
    {
        Store (Arg1, SMIF)
        If (LEqual (Arg0, \TRTP))
        {
            Store (0x00, TRP0)
        }

        If (LEqual (Arg0, \TRTD))
        {
            Store (Arg1, DTSF)
            Store (0x00, TRPD)
            Return (DTSF)
        }

        Return (SMIF)
    }

    Scope (\_SB.PCI0)
    {
        Method (_INI, 0, NotSerialized)
        {
            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 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

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

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

                If (\_SB.ACPS)
                {
                    ShiftRight (\_SB.PSTN, 0x08, \_SB.SLMT)
                }
                Else
                {
                    And (\_SB.PSTN, 0xFF, \_SB.SLMT)
                }
            }
        }
    }

    Scope (\)
    {
        Name (PICM, 0x00)
        Name (PRWP, Package (0x02)
        {
            Zero, 
            Zero
        })
        Method (GPRW, 2, NotSerialized)
        {
            Store (Arg0, Index (PRWP, 0x00))
            Store (ShiftLeft (SS1, 0x01), Local0)
            Or (Local0, ShiftLeft (SS2, 0x02), Local0)
            Or (Local0, ShiftLeft (SS3, 0x03), Local0)
            Or (Local0, ShiftLeft (SS4, 0x04), Local0)
            If (And (ShiftLeft (0x01, Arg1), Local0))
            {
                Store (Arg1, Index (PRWP, 0x01))
            }
            Else
            {
                ShiftRight (Local0, 0x01, Local0)
                FindSetLeftBit (Local0, Index (PRWP, 0x01))
            }

            Return (PRWP)
        }
    }

    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, \PMBS, 0x80)
        Field (PMIO, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x20), 
                    Offset (0x22), 
                ,   3, 
            GPS3,   1, 
                    Offset (0x28), 
                    Offset (0x2A), 
                ,   3, 
            GPE3,   1, 
                    Offset (0x3C), 
                ,   1, 
            UPRW,   1, 
                    Offset (0x42), 
                ,   1, 
            GPEC,   1, 
                    Offset (0x64), 
                ,   9, 
            SCIS,   1, 
                    Offset (0x66)
        }

        OperationRegion (GPIO, SystemIO, \GPBS, 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, 
            GL04,   8, 
            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, 
                    Offset (0x359C), 
            UP0D,   1, 
            UP1D,   1, 
            UP2D,   1, 
            UP3D,   1, 
            UP4D,   1, 
            UP5D,   1, 
            UP6D,   1, 
            UP7D,   1, 
            UP8D,   1, 
            UP9D,   1, 
            UPAD,   1, 
            UPBD,   1, 
            UPCD,   1, 
            UPDD,   1, 
                ,   1, 
                    Offset (0x359E)
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (SAT0)
        {
            Name (_ADR, 0x001F0002)
        }

        Device (SAT1)
        {
            Name (_ADR, 0x001F0005)
        }
    }

    Scope (\_SB.PCI0)
    {
    }

    Scope (\_SB)
    {
        Name (RAMB, 0xAAF8A018)
        OperationRegion (RAMW, SystemMemory, RAMB, 0x00010000)
        Field (RAMW, ByteAcc, NoLock, Preserve)
        {
            PAR0,   32, 
            PAR1,   32, 
            PAR2,   32, 
            PINX,   32, 
            ACPE,   8, 
            GNBF,   32, 
            BIPA,   32, 
            DSMA,   32, 
            WRPS,   8, 
            WRST,   8, 
            WMST,   8, 
            BRPS,   8, 
            BRST,   8, 
            LBTN,   8, 
            ALSL,   8, 
            ALAE,   8, 
            CAPM,   8, 
            COSF,   8, 
            ACPS,   8, 
            DCPS,   8, 
            CPUN,   8, 
            BLTS,   8, 
            WLSS,   8, 
            WMDP,   8, 
            DC2S,   8, 
            ACPF,   8, 
            DCPF,   8, 
            DCP2,   8, 
            DSYN,   8, 
            CPUP,   8, 
            PSTN,   16, 
            SLMT,   8, 
            MODE,   8, 
            CTBO,   8, 
            PTAB,   32, 
            CPCH,   32, 
            HTPT,   32, 
            TRTY,   8, 
            FADR,   32, 
            FSIZ,   16, 
            FSTA,   16, 
            FSFN,   8, 
            PTIM,   8, 
            PTMP,   8, 
            ALPR,   32, 
            TMPB,   8, 
            THKA,   32, 
            VVID,   16, 
            VGAF,   8, 
            VBIF,   16, 
            PADL,   16, 
            CADL,   16, 
            CSTE,   16, 
            NSTE,   16, 
            SSTE,   16, 
            ACTD,   8, 
            AVLD,   8, 
            SETD,   8, 
            BRTI,   8, 
            LCDV,   32, 
            LCDR,   8, 
            GPUF,   8, 
            RBUF,   32, 
            RVBS,   32, 
            SGEN,   8
        }

        Mutex (MPAR, 0x00)
        Name (ARBF, Buffer (0x10) {})
        CreateDWordField (ARBF, 0x00, REAX)
        CreateDWordField (ARBF, 0x04, REBX)
        CreateDWordField (ARBF, 0x08, RECX)
        CreateDWordField (ARBF, 0x0C, REDX)
        OperationRegion (IOB2, SystemIO, SMIP, 0x02)
        Field (IOB2, ByteAcc, NoLock, Preserve)
        {
            SMIC,   8, 
            SMIS,   8
        }

        Method (ISMI, 1, Serialized)
        {
            Store (Arg0, SMIC)
        }

        Method (GMSR, 1, Serialized)
        {
            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
            {
                Store (0x80000000, PINX)
                Store (Arg0, PAR0)
                ISMI (0x90)
                Store (Arg0, RECX)
                Store (PAR1, REAX)
                Store (PAR2, REDX)
                Release (MPAR)
                Return (ARBF)
            }

            Return (Ones)
        }

        Method (SMSR, 1, Serialized)
        {
            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
            {
                CreateDWordField (Arg0, 0x00, AEAX)
                CreateDWordField (Arg0, 0x04, AEBX)
                CreateDWordField (Arg0, 0x08, AECX)
                CreateDWordField (Arg0, 0x0C, AEDX)
                Store (0x80000001, PINX)
                Store (AECX, PAR0)
                Store (AEAX, PAR1)
                Store (AEDX, PAR2)
                ISMI (0x90)
                Release (MPAR)
            }

            Return (Ones)
        }

        Method (PRID, 1, Serialized)
        {
            If (LEqual (Acquire (MPAR, 0xFFFF), 0x00))
            {
                Store (0x80000002, PINX)
                Store (Arg0, PAR0)
                ISMI (0x90)
                Store (PAR1, REAX)
                Store (PAR2, REDX)
                Release (MPAR)
                Return (ARBF)
            }

            Return (Ones)
        }

        Method (SARM, 1, Serialized)
        {
            If (LNotEqual (Arg0, 0x03))
            {
                ISMI (0x92)
            }
        }
    }

    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) {}
    }

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

                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 (\_SB.ATKD)
    {
        Method (AGFN, 1, Serialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                Return (\_SB.GNBF)
            }

            Store (0x00, Local0)
            OperationRegion (PARM, SystemMemory, Arg0, 0x1000)
            Field (PARM, DWordAcc, NoLock, Preserve)
            {
                MFUN,   16, 
                SFUN,   16, 
                LEN,    16, 
                STAS,   8, 
                EROR,   8
            }

            Store (0x00, EROR)
            Store (0x01, STAS)
            If (LEqual (MFUN, 0x20))
            {
                BSMI (Arg0)
                And (STAS, 0xFE, STAS)
            }

            And (MFUN, 0xF0, Local0)
            If (LEqual (Local0, 0x10))
            {
                MF1X (Arg0, LEN, MFUN, SFUN)
            }

            If (LEqual (MFUN, 0x30))
            {
                MF30 (Arg0, SFUN, LEN)
                And (STAS, 0xFE, STAS)
            }

            AGLN (Arg0, MFUN, SFUN, LEN)
            If (LEqual (STAS, 0x01))
            {
                Store (0x01, EROR)
                Or (STAS, 0x02, STAS)
            }

            And (STAS, 0xFE, STAS)
            Or (STAS, 0x80, STAS)
            Return (0x00)
        }

        Method (BSMI, 1, Serialized)
        {
            Store (Arg0, BIPA)
            ISMI (0x9A)
        }

        Method (MF1X, 4, NotSerialized)
        {
            OperationRegion (FM1X, SystemMemory, Arg0, 0x08)
            Field (FM1X, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x06), 
                SM1X,   8, 
                EM1X,   8
            }

            Store (0x01, Local0)
            If (LEqual (Arg2, 0x11))
            {
                Store (MF11 (Arg0, Arg1, Arg3), Local0)
            }

            If (LEqual (Arg2, 0x1F))
            {
                Store (MF1F (Arg0, Arg1, Arg3), Local0)
            }

            And (SM1X, 0xFE, SM1X)
            If (Local0)
            {
                Store (Local0, EM1X)
                Or (SM1X, 0x02, SM1X)
            }

            Or (SM1X, 0x80, SM1X)
        }

        Method (MF1F, 3, NotSerialized)
        {
            BSMI (Arg0)
            Return (0x00)
        }

        Method (MF11, 3, NotSerialized)
        {
            Store (0x01, Local0)
            If (LEqual (Arg2, 0x00))
            {
                Store (G11V (Arg0, Arg1), Local0)
            }

            If (LEqual (Arg2, 0x01))
            {
                Store (GBAT (Arg0, Arg1), Local0)
            }

            If (LEqual (Arg2, 0x02))
            {
                Store (ASBR (Arg0, Arg1), Local0)
            }

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

            If (LEqual (Arg2, 0x04))
            {
                Store (BTCR (Arg0, Arg1), Local0)
            }

            Return (Local0)
        }

        Method (G11V, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x0C))
            {
                Return (0x02)
            }

            OperationRegion (\F110, SystemMemory, Arg0, Arg1)
            Field (\F110, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                SVER,   16, 
                MVER,   16
            }

            Store (0x00, MVER)
            Store (0x00, SVER)
            Return (0x00)
        }

        Method (GBAT, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x0A))
            {
                Return (0x02)
            }

            OperationRegion (\F111, SystemMemory, Arg0, Arg1)
            Field (\F111, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                BTNM,   8, 
                BTTP,   8
            }

            Store (0x01, BTNM)
            Store (0x00, BTTP)
            Return (0x00)
        }

        Method (ASBR, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x30))
            {
                Return (0x02)
            }

            OperationRegion (\F112, SystemMemory, Arg0, Arg1)
            Field (\F112, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                BATN,   8, 
                BATA,   8, 
                REGS,   8, 
                BDAT,   16, 
                BLEN,   8, 
                BREV,   16, 
                BLK1,   32, 
                BLK2,   32, 
                BLK3,   32, 
                BLK4,   32, 
                BLK5,   32, 
                BLK6,   32, 
                BLK7,   32, 
                BLK8,   32
            }

            If (LGreaterEqual (BATN, 0x01))
            {
                Return (0x11)
            }

            If (LEqual (BATA, 0x00))
            {
                Store (\_SB.PCI0.LPCB.EC0.SMBR (\_SB.PCI0.LPCB.EC0.RDWD, 0x0B, REGS), Local0)
                Store (DerefOf (Index (Local0, 0x02)), BDAT)
                Store (DerefOf (Index (Local0, 0x00)), Local2)
                And (Local2, 0x1F, Local2)
                If (Local2)
                {
                    Add (Local2, 0x10, Local2)
                }

                Return (Local2)
            }

            If (LEqual (BATA, 0x01))
            {
                Store (\_SB.PCI0.LPCB.EC0.SMBW (\_SB.PCI0.LPCB.EC0.WRWD, 0x0B, REGS, 0x02, BDAT), Local0)
                Store (DerefOf (Index (Local0, 0x00)), Local2)
                And (Local2, 0x1F, Local2)
                If (Local2)
                {
                    Add (Local2, 0x10, Local2)
                }

                Return (Local2)
            }

            If (LEqual (BATA, 0x02))
            {
                Store (\_SB.PCI0.LPCB.EC0.SMBR (\_SB.PCI0.LPCB.EC0.RDBL, 0x0B, REGS), Local0)
                Name (BKUF, Buffer (0x20) {})
                CreateDWordField (BKUF, 0x00, DAT1)
                CreateDWordField (BKUF, 0x04, DAT2)
                CreateDWordField (BKUF, 0x08, DAT3)
                CreateDWordField (BKUF, 0x0C, DAT4)
                CreateDWordField (BKUF, 0x10, DAT5)
                CreateDWordField (BKUF, 0x14, DAT6)
                CreateDWordField (BKUF, 0x18, DAT7)
                CreateDWordField (BKUF, 0x1C, DAT8)
                Store (DerefOf (Index (Local0, 0x02)), BKUF)
                Store (DAT1, BLK1)
                Store (DAT2, BLK2)
                Store (DAT3, BLK3)
                Store (DAT4, BLK4)
                Store (DAT5, BLK5)
                Store (DAT6, BLK6)
                Store (DAT7, BLK7)
                Store (DAT8, BLK8)
                Store (DerefOf (Index (Local0, 0x01)), BLEN)
                Store (DerefOf (Index (Local0, 0x00)), Local2)
                And (Local2, 0x1F, Local2)
                If (Local2)
                {
                    Add (Local2, 0x10, Local2)
                }

                Return (Local2)
            }

            Return (0x10)
        }

        Method (ASBE, 2, Serialized)
        {
            If (LLess (Arg1, 0x0C))
            {
                Return (0x02)
            }

            OperationRegion (\F113, SystemMemory, Arg0, Arg1)
            Field (\F113, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                BATN,   8, 
                BATA,   8, 
                REGS,   8, 
                BDAT,   8
            }

            If (LGreater (BATN, 0x01))
            {
                Return (0x11)
            }

            If (LEqual (BATA, 0x00))
            {
                Store (\_SB.PCI0.LPCB.EC0.RBEP (REGS), Local2)
                And (Local2, 0xFF, Local3)
                Store (Local3, BDAT)
                ShiftRight (Local2, 0x08, Local2)
                And (Local2, 0x1F, Local2)
                If (Local2)
                {
                    Add (Local2, 0x10, Local2)
                }

                Return (Local2)
            }

            If (LEqual (BATA, 0x01))
            {
                Store (\_SB.PCI0.LPCB.EC0.WBEP (REGS, BDAT), Local2)
                And (Local2, 0x1F, Local2)
                If (Local2)
                {
                    Add (Local2, 0x10, Local2)
                }

                Return (Local2)
            }

            Return (0x10)
        }

        Method (GBTL, 0, Serialized)
        {
            Return (\_SB.PCI0.LPCB.EC0.RPIN (0x00))
        }

        Method (SBTL, 1, Serialized)
        {
            \_SB.PCI0.LPCB.EC0.SPIN (0x00, Arg0)
        }

        Method (BTCR, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x09))
            {
                Return (0x02)
            }

            OperationRegion (\F114, SystemMemory, Arg0, Arg1)
            Field (\F114, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                BCDC,   8
            }

            SBTL (BCDC)
            Return (0x00)
        }

        Method (MF30, 3, NotSerialized)
        {
            OperationRegion (FM30, SystemMemory, Arg0, 0x08)
            Field (FM30, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x06), 
                SM30,   8, 
                EM30,   8
            }

            Store (0x01, Local0)
            If (LEqual (Arg1, 0x00))
            {
                Store (G30V (Arg0, Arg2), Local0)
            }

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

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

            If (Local0)
            {
                Store (Local0, EM30)
                Or (SM30, 0x02, SM30)
            }

            Or (SM30, 0x80, SM30)
            Return (0x00)
        }

        Method (G30V, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x0C))
            {
                Return (0x02)
            }

            OperationRegion (\F300, SystemMemory, Arg0, Arg1)
            Field (\F300, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                SVER,   16, 
                MVER,   16
            }

            Store (0x00, MVER)
            Store (0x00, SVER)
            Return (0x00)
        }

        Method (EC01, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x10))
            {
                Return (0x02)
            }

            OperationRegion (FEC1, SystemMemory, Arg0, Arg1)
            Field (FEC1, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                ECMD,   8, 
                EDA1,   8, 
                EDA2,   8, 
                EDA3,   8, 
                EDA4,   8, 
                EDA5,   8
            }

            Store (\_SB.PCI0.LPCB.EC0.ECXT (ECMD, EDA1, EDA2, EDA3, EDA4, EDA5), Local0)
            Store (DerefOf (Index (Local0, 0x01)), EDA1)
            Store (DerefOf (Index (Local0, 0x02)), EDA2)
            Store (DerefOf (Index (Local0, 0x03)), EDA3)
            Store (DerefOf (Index (Local0, 0x04)), EDA4)
            Store (DerefOf (Index (Local0, 0x05)), EDA5)
            Return (DerefOf (Index (Local0, 0x00)))
        }

        Method (EC02, 2, NotSerialized)
        {
            If (LLess (Arg1, 0x30))
            {
                Return (0x02)
            }

            OperationRegion (FEC2, SystemMemory, Arg0, Arg1)
            Field (FEC2, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x08), 
                BUSN,   8, 
                PROT,   8, 
                DADD,   8, 
                DREG,   8, 
                DAT0,   8, 
                DAT1,   8, 
                BLEN,   8, 
                REVB,   8, 
                BLK1,   32, 
                BLK2,   32, 
                BLK3,   32, 
                BLK4,   32, 
                BLK5,   32, 
                BLK6,   32, 
                BLK7,   32, 
                BLK8,   32
            }

            Store (\_SB.PCI0.LPCB.EC0.ECSB (BUSN, PROT, DADD, DREG, DAT0, DAT1), Local0)
            Store (DerefOf (Index (Local0, 0x01)), DAT0)
            Store (DerefOf (Index (Local0, 0x02)), DAT1)
            Store (DerefOf (Index (Local0, 0x03)), BLEN)
            Name (BKUF, Buffer (0x20) {})
            CreateDWordField (BKUF, 0x00, DD01)
            CreateDWordField (BKUF, 0x04, DD02)
            CreateDWordField (BKUF, 0x08, DD03)
            CreateDWordField (BKUF, 0x0C, DD04)
            CreateDWordField (BKUF, 0x10, DD05)
            CreateDWordField (BKUF, 0x14, DD06)
            CreateDWordField (BKUF, 0x18, DD07)
            CreateDWordField (BKUF, 0x1C, DD08)
            Store (DerefOf (Index (Local0, 0x04)), BKUF)
            Store (DD01, BLK1)
            Store (DD02, BLK2)
            Store (DD03, BLK3)
            Store (DD04, BLK4)
            Store (DD05, BLK5)
            Store (DD06, BLK6)
            Store (DD07, BLK7)
            Store (DD08, BLK8)
            Store (DerefOf (Index (Local0, 0x00)), Local2)
            And (Local2, 0x3F, Local2)
            Return (Local2)
        }
    }

    Scope (\_SB.ATKD)
    {
        Method (AGLN, 4, NotSerialized)
        {
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (RESC)
        {
            Name (_HID, EisaId ("PNP0C02"))
            Name (_UID, 0x09)
            Name (BUF0, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    )
            })
            Method (_CRS, 0, Serialized)
            {
                CreateDWordField (BUF0, 0x04, PTB0)
                Store (\_SB.PTAB, PTB0)
                CreateDWordField (BUF0, 0x08, PTLN)
                If (LEqual (\_SB.PTAB, 0x00))
                {
                    Store (0x00, PTLN)
                }

                Return (BUF0)
            }
        }
    }

    Scope (\)
    {
        OperationRegion (DEBG, SystemIO, 0x80, 0x02)
        Field (DEBG, ByteAcc, Lock, Preserve)
        {
            DBG8,   8
        }

        Method (\DIAG, 1, NotSerialized)
        {
            P8XH (0x00, Arg0)
            \_SB.PCI0.SBUS.SSXB (0x00, Arg0)
        }

        Name (MNAM, "N73SV")
        Name (ONAM, "ASUSTEK")
        Name (OSFG, 0x00)
        Name (OS9X, 0x01)
        Name (OS98, 0x02)
        Name (OSME, 0x04)
        Name (OS2K, 0x08)
        Name (OSXP, 0x10)
        Name (OSVT, 0x20)
        Name (OSEG, 0x40)
        Name (OSW7, 0x80)
        Name (AVNC, Package (0x19)
        {
            0x00, 
            0x61, 
            0x62, 
            0x63, 
            0x64, 
            0x65, 
            0x66, 
            0x67, 
            0xA0, 
            0xA1, 
            0xA2, 
            0xA4, 
            0xA3, 
            0xA5, 
            0xA6, 
            0xA7, 
            0x8C, 
            0x8D, 
            0x8E, 
            0x90, 
            0x8F, 
            0x91, 
            0x92, 
            0x93, 
            0x00
        })
        Method (ATKN, 1, NotSerialized)
        {
            If (\_SB.LID._LID ())
            {
                Return (ATKR (Arg0))
            }

            Return (0x00)
        }

        Method (ATKR, 1, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                \_SB.ATKD.IANE (Arg0)
                Return (0x01)
            }
        }

        Method (NBFS, 1, NotSerialized)
        {
            \_SB.PCI0.LPCB.EC0.EC0S (Arg0)
        }

        Method (NBWK, 1, NotSerialized)
        {
            Store (GACS (), \_SB.ACPS)
            Store (GDCS (0x00), \_SB.DCPS)
            Notify (\_SB.PCI0.AC0, 0x80)
            Notify (\_SB.PCI0.BAT0, 0x80)
            \_SB.PCI0.LPCB.EC0.EC0W (Arg0)
        }

        Method (ADVG, 0, NotSerialized)
        {
            If (\_SB.PCI0.GFX0.PRST ())
            {
                Return (\_SB.PCI0.GFX0.ADVD ())
            }

            If (\_SB.PCI0.PEGR.GFX0.PRST ())
            {
                Return (\_SB.PCI0.PEGR.GFX0.ADVD ())
            }

            Return (0x03)
        }

        Method (NATK, 0, NotSerialized)
        {
            If (\_SB.PCI0.GFX0.PRST ())
            {
                Return (\_SB.PCI0.GFX0.NATK ())
            }

            If (\_SB.PCI0.PEGR.GFX0.PRST ())
            {
                Return (\_SB.PCI0.PEGR.GFX0.NATK ())
            }

            Return (One)
        }

        Method (SWHG, 1, Serialized)
        {
            If (\_SB.PCI0.GFX0.PRST ())
            {
                \_SB.PCI0.GFX0.SWHD (Arg0)
                Return (One)
            }

            If (\_SB.PCI0.PEGR.GFX0.PRST ())
            {
                \_SB.PCI0.PEGR.GFX0.SWHD (Arg0)
                Return (One)
            }

            Return (Zero)
        }

        Name (PWBT, Buffer (0x16)
        {
            /* 0000 */    0x21, 0x2E, 0x3B, 0x48, 0x55, 0x61, 0x6E, 0x7B, 
            /* 0008 */    0x9A, 0xC5, 0xFF, 0x33, 0x40, 0x4D, 0x5A, 0x67, 
            /* 0010 */    0x73, 0x80, 0x8D, 0xA7, 0xCD, 0xFF
        })
        Method (STBR, 0, Serialized)
        {
            If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
            {
                Store (\_SB.LBTN, \_SB.PAR0)
                Store (0x80000003, \_SB.PINX)
                \_SB.ISMI (0x9C)
                Release (\_SB.MPAR)
            }
        }
    }

    Scope (\_SB.PCI0.LPCB.EC0)
    {
        Method (_Q01, 0, NotSerialized)
        {
            ATKN (0x52)
        }

        Method (_Q02, 0, NotSerialized)
        {
            ATKN (0x53)
        }

        Method (_Q03, 0, NotSerialized)
        {
            ATKN (0x54)
        }

        Method (_Q04, 0, NotSerialized)
        {
            ATKN (0x55)
        }

        Method (_Q05, 0, NotSerialized)
        {
            ATKN (0x56)
        }

        Method (_QA0, 0, NotSerialized)
        {
            Sleep (0x01F4)
            Store (GACS (), \_SB.ACPS)
            Add (\_SB.ACPS, 0x57, Local0)
            If (\_SB.ACPS)
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    Store (\_SB.CPUP, \_SB.SLMT)
                }
            }
            Else
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    If (\_SB.PCI0.PEGR.GFX0.PRST ())
                    {
                        Subtract (\_SB.CPUP, 0x01, \_SB.SLMT)
                    }
                }
            }

            Notify (\_SB.PCI0.AC0, 0x80)
            Notify (\_SB.PCI0.BAT0, 0x80)
            \PNOT ()
            ATKR (Local0)
        }

        Method (_QA1, 0, NotSerialized)
        {
            Store (GDCS (0x00), \_SB.DCPS)
            If (\_SB.DCPS)
            {
                Sleep (0x07D0)
            }

            Notify (\_SB.PCI0.BAT0, 0x80)
            Notify (\_SB.PCI0.BAT0, 0x81)
        }

        Method (_QA5, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x6E)
            }
            Else
            {
                If (DCPS)
                {
                    Notify (\_SB.PCI0.BAT0, 0x80)
                }
            }
        }

        Method (_QA3, 0, NotSerialized)
        {
            If (DCPS)
            {
                Store (BCLE (0x00), Local0)
                If (LEqual (Local0, 0x00))
                {
                    Notify (\_SB.PCI0.BAT0, 0x81)
                }
                Else
                {
                    Notify (\_SB.PCI0.BAT0, 0x81)
                    Notify (\_SB.PCI0.AC0, 0x80)
                }
            }
        }

        Method (_QB0, 0, NotSerialized)
        {
            Notify (\_TZ.TZ00, 0x80)
        }

        Method (_QB3, 0, NotSerialized)
        {
            ATKN (0x6D)
        }

        Method (_Q0A, 0, NotSerialized)
        {
            Notify (\_SB.SLPB, 0x80)
        }

        Method (_Q0B, 0, NotSerialized)
        {
            If (And (\_SB.ATKD.WAPF, 0x04))
            {
                If (\_SB.ATKP)
                {
                    ATKN (0x88)
                }
            }
            Else
            {
                Store (OHWR (), Local0)
                If (And (Local0, 0x02))
                {
                    If (And (Local0, 0x01))
                    {
                        Store (One, Local0)
                    }
                    Else
                    {
                        Store (Zero, Local0)
                    }
                }
                Else
                {
                    Store (One, Local0)
                }

                If (Local0)
                {
                    If (And (\_SB.ATKD.WAPF, 0x01))
                    {
                        If (LAnd (WLSS, BLTS))
                        {
                            Store (WRST, Local0)
                            Or (ShiftLeft (BRST, 0x01), Local0, Local0)
                            Increment (Local0)
                            If (LGreater (Local0, 0x03))
                            {
                                Store (0x00, Local0)
                            }

                            Store (DerefOf (Index (WBTL, Local0)), Local1)
                            If (LEqual (Local1, 0x00))
                            {
                                ATKN (0x5D)
                                Sleep (0x0DAC)
                                \OBTD (0x00)
                                ATKN (0x7E)
                            }

                            If (LEqual (Local1, 0x01))
                            {
                                ATKN (0x5D)
                                Sleep (0x0DAC)
                                \OBTD (0x00)
                                ATKN (0x7E)
                            }

                            If (LEqual (Local1, 0x02))
                            {
                                ATKN (0x5D)
                                Sleep (0x0DAC)
                                \OBTD (0x01)
                                ATKN (0x7D)
                            }

                            If (LEqual (Local1, 0x03))
                            {
                                ATKN (0x5D)
                                Sleep (0x0DAC)
                                \OBTD (0x01)
                                ATKN (0x7D)
                            }
                        }
                        Else
                        {
                            If (WLSS)
                            {
                                ATKN (0x5D)
                            }
                            Else
                            {
                                If (BLTS)
                                {
                                    If (BRST)
                                    {
                                        \OBTD (0x00)
                                        ATKN (0x7E)
                                    }
                                    Else
                                    {
                                        \OBTD (0x01)
                                        ATKN (0x7D)
                                    }
                                }
                            }
                        }
                    }
                    Else
                    {
                        Store (LAnd (WLSS, BLTS), Local0)
                        Store (LNotEqual (OSFG, OSEG), Local1)
                        If (LAnd (Local0, Local1))
                        {
                            Store (WRST, Local0)
                            Or (ShiftLeft (BRST, 0x01), Local0, Local0)
                            Increment (Local0)
                            If (LGreater (Local0, 0x03))
                            {
                                Store (0x00, Local0)
                            }

                            Store (DerefOf (Index (WBTL, Local0)), Local1)
                            If (LEqual (Local1, 0x00))
                            {
                                \OWLD (0x00)
                                ATKN (0x5F)
                                Sleep (0x0DAC)
                                \OBTD (0x00)
                                ATKN (0x7E)
                                \WBLD (0x00)
                            }

                            If (LEqual (Local1, 0x01))
                            {
                                \OWLD (0x01)
                                ATKN (0x5E)
                                Sleep (0x0DAC)
                                \OBTD (0x00)
                                ATKN (0x7E)
                                \WBLD (0x01)
                            }

                            If (LEqual (Local1, 0x02))
                            {
                                \OWLD (0x00)
                                ATKN (0x5F)
                                Sleep (0x0DAC)
                                \OBTD (0x01)
                                ATKN (0x7D)
                                \WBLD (0x01)
                            }

                            If (LEqual (Local1, 0x03))
                            {
                                \OWLD (0x01)
                                ATKN (0x5E)
                                Sleep (0x0DAC)
                                \OBTD (0x01)
                                ATKN (0x7D)
                                \WBLD (0x01)
                            }
                        }
                        Else
                        {
                            If (WLSS)
                            {
                                If (WRST)
                                {
                                    \OWLD (0x00)
                                    ATKN (0x5F)
                                    \WBLD (0x00)
                                }
                                Else
                                {
                                    \OWLD (0x01)
                                    ATKN (0x5E)
                                    \WBLD (0x01)
                                }
                            }
                            Else
                            {
                                If (BLTS)
                                {
                                    If (BRST)
                                    {
                                        \OBTD (0x00)
                                        ATKN (0x7E)
                                        \WBLD (0x00)
                                    }
                                    Else
                                    {
                                        \OBTD (0x01)
                                        ATKN (0x7D)
                                        \WBLD (0x01)
                                    }
                                }
                            }
                        }
                    }
                }
                Else
                {
                    If (WLSS)
                    {
                        ATKN (0x5F)
                    }

                    If (LNotEqual (OSFG, OSEG))
                    {
                        If (LAnd (WLSS, BLTS))
                        {
                            Sleep (0x0DAC)
                        }

                        If (BLTS)
                        {
                            ATKN (0x7E)
                        }
                    }
                }
            }
        }

        Name (WBTL, Package (0x04)
        {
            0x00, 
            0x01, 
            0x02, 
            0x03
        })
        Method (_Q0C, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x50)
            }
        }

        Method (_Q0D, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x51)
            }
        }

        Method (_Q0E, 0, NotSerialized)
        {
            If (LGreaterEqual (OSFG, OSVT))
            {
                Store (\_SB.PCI0.GFX0.CBLV, Local0)
                And (Local0, 0x7FFFFFFF, Local1)
                Store (\_SB.PCI0.GFX0.GCBL (Local1), Local0)
                Subtract (Subtract (0x0B, 0x01), Local0, \_SB.LBTN)
            }

            Store (0x0B, Local1)
            Decrement (Local1)
            Store (\_SB.LBTN, Local0)
            If (LGreater (Local0, 0x00))
            {
                Decrement (Local0)
            }

            If (LGreater (Local0, Local1))
            {
                Store (Local1, Local0)
            }

            ATKN (Add (Local0, 0x20))
            Sleep (0x05)
            Store (Local0, \_SB.LBTN)
            If (LEqual (OSFG, OSW7))
            {
                If (\_SB.PCI0.GFX0.PRST ())
                {
                    Notify (\_SB.PCI0.GFX0.LCDD, 0x87)
                    Sleep (0x0A)
                }
                Else
                {
                    STBR ()
                }
            }
            Else
            {
                STBR ()
            }

            Return (One)
        }

        Method (_Q0F, 0, NotSerialized)
        {
            Store (0x0B, Local2)
            Decrement (Local2)
            If (LGreaterEqual (OSFG, OSVT))
            {
                Store (\_SB.PCI0.GFX0.CBLV, Local0)
                And (Local0, 0x7FFFFFFF, Local1)
                Store (\_SB.PCI0.GFX0.GCBL (Local1), Local0)
                Subtract (Subtract (0x0B, 0x01), Local0, \_SB.LBTN)
            }

            Store (\_SB.LBTN, Local0)
            If (LLess (Local0, Local2))
            {
                Increment (Local0)
            }
            Else
            {
                Store (Local2, Local0)
            }

            ATKN (Add (Local0, 0x10))
            Sleep (0x05)
            Store (Local0, \_SB.LBTN)
            If (LEqual (OSFG, OSW7))
            {
                If (\_SB.PCI0.GFX0.PRST ())
                {
                    Notify (\_SB.PCI0.GFX0.LCDD, 0x86)
                    Sleep (0x0A)
                }
                Else
                {
                    STBR ()
                }
            }
            Else
            {
                STBR ()
            }

            Return (One)
        }

        Method (_Q10, 0, NotSerialized)
        {
            Store (0x01, Local0)
            Store (\_SB.PCI0.LPCB.EC0.RPIN (0x11), Local0)
            XOr (Local0, 0x01, Local0)
            \_SB.PCI0.LPCB.EC0.SPIN (0x11, Local0)
            If (\_SB.ATKP)
            {
                Subtract (0x34, Local0, Local0)
                ATKN (Local0)
            }
        }

        Method (_Q11, 0, Serialized)
        {
            Name (_T_0, Zero)
            FHKW ()
            Store (\ADVG (), Local0)
            If (\NATK ())
            {
                If (LLess (Local0, 0x08))
                {
                    Add (Local0, 0x60, Local1)
                }
                Else
                {
                    If (LLess (Local0, 0x10))
                    {
                        Subtract (Local0, 0x08, Local1)
                        Add (Local1, 0x8C, Local1)
                    }
                    Else
                    {
                        If (LLess (Local0, 0x20))
                        {
                            And (Local0, 0x07, Local1)
                            Add (Local1, 0xA0, Local1)
                        }
                        Else
                        {
                            If (LLess (Local0, 0x40))
                            {
                                While (One)
                                {
                                    Store (ToInteger (Local0), _T_0)
                                    If (LEqual (_T_0, 0x20))
                                    {
                                        Store (0xD0, Local1)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x21))
                                        {
                                            Store (0xD1, Local1)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x22))
                                            {
                                                Store (0xD2, Local1)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x24))
                                                {
                                                    Store (0xD3, Local1)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x28))
                                                    {
                                                        Store (0xD4, Local1)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x30))
                                                        {
                                                            Store (0xD5, Local1)
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    Break
                                }
                            }
                        }
                    }
                }

                If (\_SB.ATKP)
                {
                    ATKN (Local1)
                }
                Else
                {
                    \SWHG (Local0)
                }
            }
            Else
            {
                \SWHG (Local0)
            }

            FHKS ()
        }

        Name (FHKM, One)
        Method (FHKW, 0, Serialized)
        {
            While (LNot (FHKM))
            {
                Sleep (0x0A)
            }

            Store (Zero, FHKM)
        }

        Method (FHKS, 0, Serialized)
        {
            Store (One, FHKM)
        }

        Method (_Q12, 0, NotSerialized)
        {
            If (LNot (And (\_SB.DSYN, 0x01)))
            {
                If (\_SB.ATKP)
                {
                    ATKN (0x6B)
                }
            }
        }

        Method (_Q13, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x32)
            }
        }

        Method (_Q14, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x31)
            }
        }

        Method (_Q15, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x30)
            }
        }

        Method (_Q70, 0, NotSerialized)
        {
        }

        Method (_Q71, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x5C)
            }
        }

        Method (_Q72, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x8A)
            }
        }

        Method (_Q73, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x82)
            }
        }

        Method (_Q6F, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x45)
            }
        }

        Method (_Q6E, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x43)
            }
        }

        Method (_Q6C, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x40)
            }
        }

        Method (_Q6D, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x41)
            }
        }

        Method (_Q80, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x5C)
            }
        }

        Method (_Q84, 0, NotSerialized)
        {
            Store (OHWR (), Local0)
            If (And (Local0, 0x02))
            {
                If (And (\_SB.ATKD.WAPF, 0x04))
                {
                    If (\_SB.ATKP)
                    {
                        If (And (Local0, 0x01))
                        {
                            ATKN (0x80)
                        }
                        Else
                        {
                            ATKN (0x81)
                        }
                    }
                }
                Else
                {
                    If (And (\_SB.ATKD.WAPF, 0x01))
                    {
                        If (And (Local0, 0x01))
                        {
                            If (WLSS)
                            {
                                Sleep (0x09C4)
                                If (LEqual (WRPS, WRST))
                                {
                                    If (WRPS)
                                    {
                                        ATKN (0x5E)
                                    }
                                    Else
                                    {
                                        ATKN (0x5F)
                                    }
                                }
                                Else
                                {
                                    ATKN (0x5D)
                                }
                            }

                            If (LAnd (WLSS, BLTS))
                            {
                                Sleep (0x0DAC)
                            }

                            If (BLTS)
                            {
                                If (BRPS)
                                {
                                    \OBTD (0x01)
                                    ATKN (0x7D)
                                }
                                Else
                                {
                                    \OBTD (0x00)
                                    ATKN (0x7E)
                                }
                            }
                        }
                        Else
                        {
                            If (WLSS)
                            {
                                Store (WRST, WRPS)
                                If (WRST)
                                {
                                    ATKN (0x5D)
                                }
                                Else
                                {
                                    ATKN (0x5F)
                                }
                            }

                            If (LAnd (WLSS, BLTS))
                            {
                                Sleep (0x0DAC)
                            }

                            If (BLTS)
                            {
                                Store (BRST, BRPS)
                                \OBTD (0x00)
                                ATKN (0x7E)
                            }
                        }
                    }
                    Else
                    {
                        If (And (Local0, 0x01))
                        {
                            If (WLSS)
                            {
                                If (WRPS)
                                {
                                    \OWLD (0x01)
                                    ATKN (0x5E)
                                }
                                Else
                                {
                                    \OWLD (0x00)
                                    ATKN (0x5F)
                                }
                            }

                            If (LNotEqual (OSFG, OSEG))
                            {
                                If (LAnd (WLSS, BLTS))
                                {
                                    Sleep (0x0DAC)
                                }

                                If (BLTS)
                                {
                                    If (BRPS)
                                    {
                                        \OBTD (0x01)
                                        ATKN (0x7D)
                                    }
                                    Else
                                    {
                                        \OBTD (0x00)
                                        ATKN (0x7E)
                                    }
                                }
                            }
                        }
                        Else
                        {
                            If (WLSS)
                            {
                                Store (WRST, WRPS)
                                \OWLD (0x00)
                                ATKN (0x5F)
                            }

                            If (LNotEqual (OSFG, OSEG))
                            {
                                If (LAnd (WLSS, BLTS))
                                {
                                    Sleep (0x0DAC)
                                }

                                If (BLTS)
                                {
                                    Store (BRST, BRPS)
                                    \OBTD (0x00)
                                    ATKN (0x7E)
                                }
                            }
                        }
                    }
                }
            }
        }

        Method (_Q86, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x32)
            }
        }

        Method (_Q87, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x31)
            }
        }

        Method (_Q88, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x30)
            }
        }

        Method (_Q89, 0, NotSerialized)
        {
            If (\_SB.ATKP)
            {
                ATKN (0x45)
            }
        }

        Method (_QA8, 0, NotSerialized)
        {
            \DIAG (0xA8)
            If (\_SB.ACPS)
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    Store (\_SB.CPUP, \_SB.SLMT)
                }
            }
            Else
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    If (\_SB.PCI0.PEGR.GFX0.PRST ())
                    {
                        Subtract (\_SB.CPUP, 0x01, \_SB.SLMT)
                    }
                    Else
                    {
                        Store (\_SB.CPUP, \_SB.SLMT)
                    }
                }
            }

            Sleep (0x64)
            \PNOT ()
        }
    }

    Scope (\_SB.ATKD)
    {
        Method (FSMI, 1, NotSerialized)
        {
            Store (Arg0, FSFN)
            Or (Arg0, 0xA0, Local0)
            ISMI (0x97)
            Return (FSTA)
        }

        Method (FLSH, 1, NotSerialized)
        {
            Store (Arg0, FSTA)
            FSMI (0x00)
        }

        Method (FINI, 1, NotSerialized)
        {
            Store (Arg0, FADR)
            Return (FSMI (0x01))
        }

        Method (FERS, 1, NotSerialized)
        {
            Store (Arg0, FSTA)
            Return (FSMI (0x02))
        }

        Method (FWRI, 1, NotSerialized)
        {
            Store (Arg0, FADR)
            Store (0x1000, FSIZ)
            Return (Subtract (0x1000, FSMI (0x03)))
        }

        Method (FWRP, 0, NotSerialized)
        {
            Store (0x00, FSIZ)
            Return (Subtract (0x1000, FSMI (0x03)))
        }

        Method (FEBW, 1, NotSerialized)
        {
            Store (Arg0, FADR)
            Return (FSMI (0x04))
        }

        Method (FEBR, 1, NotSerialized)
        {
            Store (Arg0, FADR)
            Return (FSMI (0x05))
        }

        Method (FEDW, 0, NotSerialized)
        {
            Return (FSMI (0x06))
        }

        Method (ECSR, 1, NotSerialized)
        {
            Store (Arg0, FSTA)
            Return (FSMI (0x07))
        }

        Method (FLSC, 1, NotSerialized)
        {
            Store (Arg0, FSTA)
            Return (FSMI (0x08))
        }

        Method (IGME, 1, NotSerialized)
        {
            If (Or (LEqual (Arg0, 0x04), LEqual (Arg0, 0x05)))
            {
                Store (FADR, Local0)
                ISMI (Local0)
                Store (0x00, FSTA)
                Return (FSTA)
            }

            Store (Arg0, FSTA)
            Return (FSMI (0x09))
        }

        Method (FREC, 1, NotSerialized)
        {
            Store (Arg0, FSTA)
            Return (FSMI (0x0A))
        }
    }

    Scope (\_SB.PCI0.EHC1)
    {
        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 */    0x31, 0x10, 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 */    0x31, 0x10, 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 */    0x31, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                    })
                }

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

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

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

                Device (PRT7)
                {
                    Name (_ADR, 0x07)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                }

                Device (PRT8)
                {
                    Name (_ADR, 0x08)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                }
            }
        }
    }

    Scope (\_SB.PCI0.EHC2)
    {
        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 */    0x30, 0x10, 0x00, 0x00, 0x00, 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 */    0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                    })
                }

                Device (PRT3)
                {
                    Name (_ADR, 0x03)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        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 */    0x31, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
                    })
                }

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

                Device (PRT6)
                {
                    Name (_ADR, 0x06)
                    Name (_UPC, Package (0x04)
                    {
                        0x00, 
                        0xFF, 
                        0x00, 
                        0x00
                    })
                }

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

                Device (PRT8)
                {
                    Name (_ADR, 0x08)
                }
            }
        }
    }

    Scope (\_SB.PCI0.PEGR)
    {
        Method (_STA, 0, Serialized)
        {
            If (LNotEqual (\_SB.PCI0.PEGR.SVID, 0xFFFFFFFF))
            {
                Store (0x00, \_SB.PCI0.PEGR.HDAE)
                Sleep (0x32)
            }

            Return (0x0F)
        }

        OperationRegion (PEGM, SystemMemory, 0xE0008000, 0x0FF0)
        Field (PEGM, ByteAcc, NoLock, Preserve)
        {
            REG0,   32, 
            REG1,   32, 
            REG2,   32, 
                    Offset (0x19), 
            RE19,   8, 
            RE1A,   8, 
                    Offset (0x3E), 
            RE3E,   8, 
                    Offset (0x84), 
            PWST,   2, 
                    Offset (0xB0), 
            ASPM,   2, 
                ,   2, 
            LNKD,   1, 
                    Offset (0xB3), 
                ,   3, 
            LTST,   1, 
            RSCC,   1, 
                    Offset (0xB4), 
                ,   6, 
            HPCP,   1, 
            SPLV,   8, 
            SPLS,   2, 
                ,   2, 
            PHSN,   13, 
                    Offset (0x114), 
            T0V0,   1, 
            TV0M,   7, 
                    Offset (0x1FC), 
            R1FC,   9, 
                    Offset (0x201), 
                ,   5, 
            CGEL,   2, 
                ,   3, 
            LCRB,   1, 
                    Offset (0x204), 
            RETO,   10, 
                    Offset (0x214), 
                    Offset (0x216), 
            LNKS,   4, 
                    Offset (0x220), 
            R220,   32, 
                    Offset (0x225), 
            DQDA,   1, 
                    Offset (0x226), 
            R224,   32, 
                    Offset (0xC28), 
            RC28,   1, 
                    Offset (0xC34), 
            RC34,   32, 
                    Offset (0xDFC), 
                ,   1, 
            RDFC,   3, 
                    Offset (0xE08), 
                ,   30, 
            RE08,   1, 
                    Offset (0xE28), 
                ,   30, 
            RE28,   1, 
                    Offset (0xE48), 
                ,   30, 
            RE48,   1, 
                    Offset (0xE68), 
                ,   30, 
            RE68,   1, 
                    Offset (0xE88), 
                ,   30, 
            RE88,   1, 
                    Offset (0xEA8), 
                ,   30, 
            REA8,   1, 
                    Offset (0xEC8), 
                ,   30, 
            REC8,   1, 
                    Offset (0xEE8), 
                ,   30, 
            REE8,   1, 
                    Offset (0xF08), 
                ,   30, 
            RF08,   1, 
                    Offset (0xF28), 
                ,   30, 
            RF28,   1, 
                    Offset (0xF48), 
                ,   30, 
            RF48,   1, 
                    Offset (0xF68), 
                ,   30, 
            RF68,   1, 
                    Offset (0xF88), 
                ,   30, 
            RF88,   1, 
                    Offset (0xFA8), 
                ,   30, 
            RFA8,   1, 
                    Offset (0xFC8), 
                ,   30, 
            RFC8,   1, 
                    Offset (0xFE8), 
                ,   30, 
            RFE8,   1
        }

        OperationRegion (DMIM, SystemMemory, 0xFED18000, 0x0D00)
        Field (DMIM, ByteAcc, NoLock, Preserve)
        {
                    Offset (0xC34), 
            DC34,   32
        }

        OperationRegion (GFXM, SystemMemory, 0xE0100000, 0x0FF0)
        Field (GFXM, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x2C), 
            SVID,   32, 
                    Offset (0x48B), 
                ,   1, 
            HDAE,   1
        }
    }

    Scope (\_SB.PCI0.PEGR.GFX0)
    {
        Name (DGPS, Zero)
        Name (_PSC, Zero)
        Method (_PS0, 0, NotSerialized)
        {
            Store (0xD0, DBG8)
            Store (Zero, _PSC)
            If (LNotEqual (DGPS, Zero))
            {
                Store ("PS0: Need to power on dGPU", Debug)
                Store (0xC1, DBG8)
                \_SB.PCI0.PEGR.GFX0._ON ()
                Store (0xC2, DBG8)
                Store (Zero, DGPS)
                Store (Zero, \_SB.PCI0.PEGR.HDAE)
                \_SB.PCI0.LPCB.EC0.TSES ()
            }
        }

        Method (DON, 0, NotSerialized)
        {
            If (\_SB.ACPS)
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    Store (\_SB.CPUP, \_SB.SLMT)
                }
            }
            Else
            {
                If (LEqual (\_SB.CTBO, 0x01))
                {
                    Subtract (\_SB.CPUP, 0x01, \_SB.SLMT)
                }
            }

            \PNOT ()
            _ON ()
        }

        Method (_ON, 0, NotSerialized)
        {
            Store (Zero, PWST)
            Store (0x00, \PO50)
            Sleep (0x64)
            Store (0x00, \PO54)
            Sleep (0x64)
            Store (\PI17, Local0)
            While (LNot (Local0))
            {
                Sleep (0x0A)
                Store (\PI17, Local0)
            }

            Store (0x01, \PO50)
            Sleep (0x64)
            Store (0x00, LNKD)
            Store (0x03, Local1)
            While (Local1)
            {
                Decrement (Local1)
                If (LEqual (LNKS, 0x07))
                {
                    Store (Zero, Local1)
                }
                Else
                {
                    Store (0x64, Local0)
                    While (Local0)
                    {
                        Sleep (0x0A)
                        Decrement (Local0)
                        If (LEqual (LNKS, 0x07))
                        {
                            Store (Zero, Local0)
                            Store (Zero, Local1)
                        }
                    }

                    If (LAnd (Local1, LNotEqual (LNKS, 0x07)))
                    {
                        Store (One, LNKD)
                        Sleep (0x6E)
                    }
                }
            }

            Sleep (0x64)
            \_SB.PCI0.GFX0.RSTO ()
            Store (0x01, \_SB.PCI0.GFX0.HPWR)
        }

        Method (_PS3, 0, NotSerialized)
        {
            Store (0xD3, DBG8)
            If (LEqual (\OMPR, 0x03))
            {
                Store ("PS3: Driver wants to power off dGPU", Debug)
                If (LEqual (DGPS, Zero))
                {
                    Store (0xC3, DBG8)
                    \_SB.PCI0.LPCB.EC0.TSDS ()
                    \_SB.PCI0.PEGR.GFX0._OFF ()
                    Store (One, DGPS)
                    Store (0xC4, DBG8)
                }

                Store (0x02, \OMPR)
                Store ("PS3: OMPR=2 now", Debug)
            }

            Store (0x03, _PSC)
        }

        Method (DOFF, 0, NotSerialized)
        {
            _OFF ()
            If (LEqual (\_SB.CTBO, 0x01))
            {
                Store (\_SB.CPUP, \_SB.SLMT)
            }

            \PNOT ()
        }

        Method (_OFF, 0, NotSerialized)
        {
            If (LEqual (\_SB.PCI0.PEGR.SVID, 0xFFFFFFFF))
            {
                Return (Zero)
            }

            \_SB.PCI0.GFX0.SAVO ()
            Store (0x00, ASPM)
            Store (0x01, LNKD)
            Store (0x01, Local0)
            While (Local0)
            {
                If (LNot (LNKS))
                {
                    Store (0x00, Local0)
                }
                Else
                {
                    Sleep (0x0A)
                }
            }

            Store (0x00, \PO50)
            Sleep (0x0A)
            Store (0x01, \PO54)
            Store (0x00, \_SB.PCI0.GFX0.HPWR)
            Return (Zero)
        }

        Method (MXDS, 1, NotSerialized)
        {
            If (And (Arg0, 0x00))
            {
                Return (\_SB.PCI0.GFX0.HLMX)
            }
            Else
            {
                Store (One, \_SB.PCI0.GFX0.HLMX)
                Store (One, \_SB.PCI0.GFX0.HCMX)
                Sleep (0x64)
            }
        }

        Method (MXMX, 1, NotSerialized)
        {
            Store (One, \_SB.PCI0.GFX0.HLMM)
            Store (One, \_SB.PCI0.GFX0.HCMM)
            Store (One, \_SB.PCI0.GFX0.HDMU)
            Store (One, \_SB.PCI0.GFX0.HHMM)
            Store (One, \_SB.PCI0.GFX0.HLMX)
            Store (One, \_SB.PCI0.GFX0.HCMX)
            Store (One, \_SB.PCI0.GFX0.HDMX)
            Store (One, \_SB.PCI0.GFX0.HHMX)
            Return (0x01)
        }

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

        Method (DSTA, 0, Serialized)
        {
            Return (_STA ())
        }

        OperationRegion (VSID, PCI_Config, 0x00, 0x0100)
        Field (VSID, ByteAcc, NoLock, Preserve)
        {
            REG0,   32, 
            REG1,   32, 
            REG2,   32, 
            REG3,   32, 
            REG4,   32, 
            REG5,   32, 
            REG6,   32, 
            REG7,   32, 
            REG8,   32, 
            REG9,   32, 
            REGA,   32, 
            REGB,   32, 
            REGC,   32, 
            REGD,   32, 
            REGE,   32, 
            REGF,   32, 
            REGG,   32
        }

        OperationRegion (VVID, SystemMemory, 0xE0100114, 0x10)
        Field (VVID, ByteAcc, NoLock, Preserve)
        {
            T0V0,   1, 
            TV0M,   7
        }

        Name (BLAC, Package (0x0B) {})
        Method (PRST, 0, NotSerialized)
        {
            If (LEqual (REG0, 0x0DF410DE))
            {
                Return (One)
            }
            Else
            {
                Return (Zero)
            }
        }

        Name (UPDN, One)
        Name (NXTD, 0x01)
        Name (LCDM, 0x01)
        Name (CRTM, 0x02)
        Name (TVOM, 0x04)
        Name (DVIM, 0x08)
        Name (HDMM, 0x10)
        Name (PACH, Zero)
        Name (DONE, Zero)
        Name (DOSF, One)
        Name (BRNC, Zero)
        Method (_INI, 0, NotSerialized)
        {
        }

        Method (_DOS, 1, NotSerialized)
        {
            And (Arg0, 0x03, DOSF)
            Store (ShiftRight (Arg0, 0x02), BRNC)
            And (BRNC, 0x01, BRNC)
        }

        Method (_DOD, 0, NotSerialized)
        {
            Return (Package (0x04)
            {
                0x0110, 
                0x80000100, 
                0x80007330, 
                0x80006340
            })
        }

        Device (CRTD)
        {
            Name (_ADR, 0x80000100)
            Method (_DCS, 0, NotSerialized)
            {
                Store (\_SB.AVLD, Local0)
                If (Local0)
                {
                    If (And (Local0, CRTM))
                    {
                        Return (0x1F)
                    }
                }

                Return (0x1D)
            }

            Method (_DGS, 0, NotSerialized)
            {
                And (NXTD, CRTM, Local0)
                If (Local0)
                {
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (And (Arg0, 0x40000000))
                {
                    If (And (Arg0, 0x80000000))
                    {
                        Store (One, DONE)
                    }
                }
            }
        }

        Device (HDMI)
        {
            Name (_ADR, 0x80007330)
            Method (_DCS, 0, NotSerialized)
            {
                Store (\_SB.AVLD, Local0)
                If (Local0)
                {
                    If (And (Local0, HDMM))
                    {
                        Return (0x1F)
                    }
                }

                Return (0x1D)
            }

            Method (_DGS, 0, NotSerialized)
            {
                And (NXTD, HDMM, Local0)
                If (Local0)
                {
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (And (Arg0, 0x40000000))
                {
                    If (And (Arg0, 0x80000000))
                    {
                        Store (One, DONE)
                    }
                }
            }
        }

        Device (LCDD)
        {
            Name (_ADR, 0x0110)
            Method (_DCS, 0, NotSerialized)
            {
                Store (\_SB.AVLD, Local0)
                If (Local0)
                {
                    If (And (Local0, LCDM))
                    {
                        Return (0x1F)
                    }
                }

                Return (0x1D)
            }

            Method (_DGS, 0, NotSerialized)
            {
                And (NXTD, LCDM, Local0)
                If (Local0)
                {
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (_DSS, 1, NotSerialized)
            {
                If (And (Arg0, 0x40000000))
                {
                    If (And (Arg0, 0x80000000))
                    {
                        Store (One, DONE)
                    }
                }

                Store (One, DONE)
            }

            Method (_BCL, 0, NotSerialized)
            {
                Store (0x00, Local0)
                Store (\_SB.BRTI, Local4)
                ShiftLeft (Local4, 0x04, Local4)
                While (LLess (Local0, 0x0B))
                {
                    Subtract (0x0B, Local0, Local3)
                    Subtract (Local3, 0x01, Local3)
                    Store (Add (Local4, Local3), Local3)
                    Store (DerefOf (Index (PWBT, Local3)), Local1)
                    Store (Divide (Multiply (Local1, 0x64), 0xFF, ), Local2)
                    Store (Local2, Index (BLAC, Local0))
                    Increment (Local0)
                }

                Return (BLAC)
            }

            Method (_BCM, 1, NotSerialized)
            {
                Store (GCBL (Arg0), Local0)
                Subtract (Subtract (0x0B, 0x01), Local0, \_SB.LBTN)
                STBR ()
            }

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

        Method (SWHD, 1, Serialized)
        {
            \_SB.PCI0.GFX0.HWHG (Arg0)
        }

        Method (GCDD, 0, NotSerialized)
        {
            If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
            {
                Store (0x80000000, \_SB.PINX)
                ISMI (0x9C)
                Release (\_SB.MPAR)
            }

            Return (\_SB.ACTD)
        }

        Method (GNDD, 0, NotSerialized)
        {
            If (LEqual (Acquire (\_SB.MPAR, 0xFFFF), 0x00))
            {
                Store (0x80000002, \_SB.PINX)
                ISMI (0x9C)
                Release (\_SB.MPAR)
            }

            Return (\_SB.SETD)
        }

        Method (ADVD, 0, NotSerialized)
        {
            Return (\_SB.PCI0.GFX0.HDVG ())
        }

        Method (UPBL, 0, NotSerialized)
        {
            If (LEqual (\_SB.PCI0.GFX0.HGAP, 0x02))
            {
                Notify (\_SB.PCI0.GFX0.LCDD, 0x86)
                Notify (LCDD, 0x86)
            }
        }

        Method (DWBL, 0, NotSerialized)
        {
            If (LEqual (\_SB.PCI0.GFX0.HGAP, 0x02))
            {
                Notify (\_SB.PCI0.GFX0.LCDD, 0x87)
                Notify (LCDD, 0x87)
            }
        }

        Method (NATK, 0, NotSerialized)
        {
            Return (One)
        }

        Method (GCBL, 1, NotSerialized)
        {
            Store (0x00, Local0)
            And (Arg0, 0x7FFFFFFF, Arg0)
            While (LLess (Local0, 0x0B))
            {
                Store (DerefOf (Index (BLAC, Local0)), Local1)
                If (LLessEqual (Local1, Arg0))
                {
                    Break
                }

                Increment (Local0)
            }

            If (LGreaterEqual (Local0, 0x0B))
            {
                Store (Subtract (0x0B, 0x01), Local2)
            }
            Else
            {
                Store (Local0, Local2)
            }

            Return (Local2)
        }

        Method (_ROM, 2, NotSerialized)
        {
            Add (Arg0, RBUF, Local0)
            ShiftLeft (Arg1, 0x03, Local1)
            Name (VBUF, Buffer (Arg1) {})
            OperationRegion (VROM, SystemMemory, Local0, Local1)
            Field (VROM, ByteAcc, NoLock, Preserve)
            {
                ROMI,   65536
            }

            Store (ROMI, VBUF)
            Return (VBUF)
        }

        Method (_DSM, 4, NotSerialized)
        {
            Return (\_SB.PCI0.GFX0._DSM (Arg0, Arg1, Arg2, Arg3))
        }
    }

    Scope (\)
    {
    }

    Scope (\_SB.PCI0)
    {
        OperationRegion (HOSG, PCI_Config, 0x00, 0x0100)
        Field (HOSG, ByteAcc, NoLock, Preserve)
        {
            REG0,   32, 
            REG1,   32, 
            REG2,   32, 
                    Offset (0x54), 
                ,   1, 
            D1EN,   1
        }

        OperationRegion (MCHB, SystemMemory, 0xFED10000, 0x4000)
        Field (MCHB, DWordAcc, Lock, Preserve)
        {
                    Offset (0xC14), 
            CLKD,   6
        }

        Method (NWM1, 1, NotSerialized)
        {
            Notify (WMI1, Arg0)
        }

        Device (WMI1)
        {
            Name (_HID, "pnp0c14")
            Name (_UID, "OPT1")
            Name (_WDG, Buffer (0x14)
            {
                /* 0000 */    0x3C, 0x5C, 0xCB, 0xF6, 0xAE, 0x9C, 0xBD, 0x4E, 
                /* 0008 */    0xB5, 0x77, 0x93, 0x1E, 0xA3, 0x2A, 0x2C, 0xC0, 
                /* 0010 */    0x4D, 0x58, 0x01, 0x02
            })
            Method (WMMX, 3, NotSerialized)
            {
                CreateDWordField (Arg2, Zero, FUNC)
                If (LEqual (FUNC, 0x4D53445F))
                {
                    If (LGreaterEqual (SizeOf (Arg2), 0x1C))
                    {
                        CreateField (Arg2, Zero, 0x80, MUID)
                        CreateDWordField (Arg2, 0x10, REVI)
                        CreateDWordField (Arg2, 0x14, SFNC)
                        CreateField (Arg2, 0xE0, 0x20, XRG0)
                        Return (\_SB.PCI0.GFX0._DSM (MUID, REVI, SFNC, XRG0))
                    }
                }

                If (LEqual (FUNC, 0x47504F4E))
                {
                    Store (One, \_SB.PCI0.PEGR.GFX0.DGPS)
                    \_SB.PCI0.PEGR.GFX0._PS0 ()
                }

                Return (Zero)
            }
        }
    }

    Scope (\)
    {
        Name (OMPR, 0x02)
        Name (HHPS, 0x00)
        Method (OPVK, 0, NotSerialized)
        {
            If (LEqual (\_SB.PCI0.GFX0.REG0, 0x01168086))
            {
                Return (\OPV1)
            }

            If (LEqual (\_SB.PCI0.GFX0.REG0, 0x01268086))
            {
                Return (\OPV2)
            }

            If (LEqual (\_SB.PCI0.GFX0.REG0, 0x01068086))
            {
                Return (\OPV3)
            }
        }

        Name (OPV1, Buffer (0xE6)
        {
            /* 0000 */    0xAE, 0xB7, 0x13, 0xD5, 0x7B, 0x81, 0x18, 0x01, 
            /* 0008 */    0x4B, 0x56, 0xE6, 0x00, 0x00, 0x00, 0x01, 0x00, 
            /* 0010 */    0x31, 0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 
            /* 0018 */    0x36, 0x39, 0x38, 0x35, 0x47, 0x65, 0x6E, 0x75, 
            /* 0020 */    0x69, 0x6E, 0x65, 0x20, 0x4E, 0x56, 0x49, 0x44, 
            /* 0028 */    0x49, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 
            /* 0030 */    0x66, 0x69, 0x65, 0x64, 0x20, 0x4F, 0x70, 0x74, 
            /* 0038 */    0x69, 0x6D, 0x75, 0x73, 0x20, 0x52, 0x65, 0x61, 
            /* 0040 */    0x64, 0x79, 0x20, 0x4D, 0x6F, 0x74, 0x68, 0x65, 
            /* 0048 */    0x72, 0x62, 0x6F, 0x61, 0x72, 0x64, 0x20, 0x66, 
            /* 0050 */    0x6F, 0x72, 0x20, 0x61, 0x73, 0x75, 0x73, 0x20, 
            /* 0058 */    0x62, 0x75, 0x67, 0x20, 0x37, 0x35, 0x38, 0x35, 
            /* 0060 */    0x32, 0x38, 0x20, 0x31, 0x31, 0x36, 0x20, 0x20, 
            /* 0068 */    0x2D, 0x20, 0x2E, 0x2A, 0x41, 0x43, 0x3B, 0x4F, 
            /* 0070 */    0x22, 0x36, 0x22, 0x37, 0x2E, 0x21, 0x5A, 0x5A, 
            /* 0078 */    0x57, 0x28, 0x2D, 0x41, 0x41, 0x58, 0x3D, 0x2B, 
            /* 0080 */    0x22, 0x4A, 0x25, 0x2E, 0x28, 0x38, 0x5E, 0x32, 
            /* 0088 */    0x53, 0x28, 0x29, 0x3D, 0x39, 0x22, 0x3F, 0x35, 
            /* 0090 */    0x52, 0x47, 0x24, 0x45, 0x2E, 0x33, 0x5A, 0x2F, 
            /* 0098 */    0x54, 0x3F, 0x23, 0x50, 0x49, 0x24, 0x20, 0x2D, 
            /* 00A0 */    0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 
            /* 00A8 */    0x68, 0x74, 0x20, 0x32, 0x30, 0x31, 0x30, 0x20, 
            /* 00B0 */    0x4E, 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x43, 
            /* 00B8 */    0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 
            /* 00C0 */    0x6F, 0x6E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, 
            /* 00C8 */    0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 
            /* 00D0 */    0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2D, 0x31, 
            /* 00D8 */    0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 0x36, 
            /* 00E0 */    0x39, 0x38, 0x35, 0x28, 0x52, 0x29
        })
        Name (OPV2, Buffer (0xE6)
        {
            /* 0000 */    0x0F, 0x8E, 0x33, 0xAE, 0x91, 0xB5, 0x83, 0xBB, 
            /* 0008 */    0x4B, 0x56, 0xE6, 0x00, 0x00, 0x00, 0x01, 0x00, 
            /* 0010 */    0x31, 0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 
            /* 0018 */    0x36, 0x39, 0x38, 0x35, 0x47, 0x65, 0x6E, 0x75, 
            /* 0020 */    0x69, 0x6E, 0x65, 0x20, 0x4E, 0x56, 0x49, 0x44, 
            /* 0028 */    0x49, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 
            /* 0030 */    0x66, 0x69, 0x65, 0x64, 0x20, 0x4F, 0x70, 0x74, 
            /* 0038 */    0x69, 0x6D, 0x75, 0x73, 0x20, 0x52, 0x65, 0x61, 
            /* 0040 */    0x64, 0x79, 0x20, 0x4D, 0x6F, 0x74, 0x68, 0x65, 
            /* 0048 */    0x72, 0x62, 0x6F, 0x61, 0x72, 0x64, 0x20, 0x66, 
            /* 0050 */    0x6F, 0x72, 0x20, 0x62, 0x75, 0x67, 0x20, 0x37, 
            /* 0058 */    0x35, 0x38, 0x35, 0x32, 0x38, 0x20, 0x30, 0x31, 
            /* 0060 */    0x32, 0x36, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
            /* 0068 */    0x2D, 0x20, 0x52, 0x5C, 0x32, 0x32, 0x27, 0x38, 
            /* 0070 */    0x2A, 0x3C, 0x26, 0x39, 0x2E, 0x23, 0x56, 0x54, 
            /* 0078 */    0x4F, 0x22, 0x31, 0x53, 0x51, 0x2A, 0x48, 0x35, 
            /* 0080 */    0x48, 0x54, 0x46, 0x30, 0x4F, 0x5B, 0x3A, 0x55, 
            /* 0088 */    0x28, 0x5D, 0x5A, 0x2E, 0x49, 0x31, 0x2A, 0x3E, 
            /* 0090 */    0x5D, 0x4C, 0x29, 0x46, 0x2D, 0x4F, 0x57, 0x26, 
            /* 0098 */    0x4D, 0x30, 0x36, 0x21, 0x58, 0x31, 0x20, 0x2D, 
            /* 00A0 */    0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 
            /* 00A8 */    0x68, 0x74, 0x20, 0x32, 0x30, 0x31, 0x30, 0x20, 
            /* 00B0 */    0x4E, 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x43, 
            /* 00B8 */    0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 
            /* 00C0 */    0x6F, 0x6E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, 
            /* 00C8 */    0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 
            /* 00D0 */    0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2D, 0x31, 
            /* 00D8 */    0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 0x36, 
            /* 00E0 */    0x39, 0x38, 0x35, 0x28, 0x52, 0x29
        })
        Name (OPV3, Buffer (0xE6)
        {
            /* 0000 */    0x31, 0x16, 0x09, 0xA0, 0xB0, 0x83, 0x33, 0x45, 
            /* 0008 */    0x4B, 0x56, 0xE6, 0x00, 0x00, 0x00, 0x01, 0x00, 
            /* 0010 */    0x31, 0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 
            /* 0018 */    0x36, 0x39, 0x38, 0x35, 0x47, 0x65, 0x6E, 0x75, 
            /* 0020 */    0x69, 0x6E, 0x65, 0x20, 0x4E, 0x56, 0x49, 0x44, 
            /* 0028 */    0x49, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 
            /* 0030 */    0x66, 0x69, 0x65, 0x64, 0x20, 0x4F, 0x70, 0x74, 
            /* 0038 */    0x69, 0x6D, 0x75, 0x73, 0x20, 0x52, 0x65, 0x61, 
            /* 0040 */    0x64, 0x79, 0x20, 0x4D, 0x6F, 0x74, 0x68, 0x65, 
            /* 0048 */    0x72, 0x62, 0x6F, 0x61, 0x72, 0x64, 0x20, 0x66, 
            /* 0050 */    0x6F, 0x72, 0x20, 0x61, 0x73, 0x75, 0x73, 0x20, 
            /* 0058 */    0x62, 0x75, 0x67, 0x37, 0x35, 0x38, 0x35, 0x32, 
            /* 0060 */    0x38, 0x20, 0x31, 0x30, 0x36, 0x20, 0x20, 0x20, 
            /* 0068 */    0x2D, 0x20, 0x2D, 0x29, 0x40, 0x42, 0x3A, 0x4C, 
            /* 0070 */    0x21, 0x35, 0x23, 0x36, 0x2D, 0x22, 0x5B, 0x5B, 
            /* 0078 */    0x56, 0x29, 0x2C, 0x40, 0x40, 0x5B, 0x3C, 0x28, 
            /* 0080 */    0x22, 0x4D, 0x22, 0x2D, 0x2F, 0x39, 0x5F, 0x33, 
            /* 0088 */    0x50, 0x2B, 0x26, 0x3C, 0x38, 0x23, 0x3E, 0x34, 
            /* 0090 */    0x55, 0x46, 0x25, 0x44, 0x2D, 0x4D, 0x5B, 0x2C, 
            /* 0098 */    0x55, 0x3E, 0x22, 0x2F, 0x48, 0x23, 0x20, 0x2D, 
            /* 00A0 */    0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 
            /* 00A8 */    0x68, 0x74, 0x20, 0x32, 0x30, 0x31, 0x30, 0x20, 
            /* 00B0 */    0x4E, 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x43, 
            /* 00B8 */    0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 
            /* 00C0 */    0x6F, 0x6E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, 
            /* 00C8 */    0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, 
            /* 00D0 */    0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2D, 0x31, 
            /* 00D8 */    0x34, 0x38, 0x35, 0x39, 0x37, 0x34, 0x35, 0x36, 
            /* 00E0 */    0x39, 0x38, 0x35, 0x28, 0x52, 0x29
        })
        OperationRegion (SBGP, SystemIO, 0x0500, 0x4A)
        Field (SBGP, ByteAcc, Lock, Preserve)
        {
                    Offset (0x0C), 
                ,   17, 
            PI17,   1, 
                    Offset (0x0F), 
            PO24,   1, 
                    Offset (0x38), 
                ,   5, 
            PI37,   1, 
                ,   12, 
            PO50,   1, 
                ,   1, 
            PO52,   1, 
            PO53,   1, 
            PO54,   1, 
                    Offset (0x48), 
                ,   3
        }

        Method (GTHS, 0, Serialized)
        {
            Return (0x00)
        }

        Method (OEMS, 1, NotSerialized)
        {
        }

        Method (OEMW, 1, NotSerialized)
        {
        }
    }

    Scope (\_SB.PCI0.LPCB.EC0)
    {
        Method (TSDS, 0, Serialized)
        {
            WRAM (0x052E, 0x00)
            WRAM (0x052F, 0x00)
            WRAM (0x052B, 0x00)
            WRAM (0x0520, 0x94)
            WRAM (0x0521, 0x8D)
        }

        Method (TSES, 0, Serialized)
        {
            WRAM (0x052E, 0x01)
            WRAM (0x052F, 0x00)
            WRAM (0x052B, 0x9E)
            WRAM (0x0520, 0x96)
            WRAM (0x0521, 0xAD)
        }
    }

    Scope (\)
    {
        Method (GACS, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RPIN (0x03), Local0)
            XOr (Local0, 0x01, Local0)
            Return (Local0)
        }

        Method (GDCS, 1, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RPIN (0x04), Local0)
            If (Arg0)
            {
                Store (\_SB.PCI0.LPCB.EC0.RPIN (0x05), Local0)
            }

            XOr (Local0, 0x01, Local0)
            Return (Local0)
        }

        Method (GDCP, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1DC, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0DC, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (GFCC, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1FC, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0FC, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (GBDV, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1DV, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0DV, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (GBCR, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1CC, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0CC, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (CHGS, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.EB1S, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.EB0S, Local0)
                }

                If (LNotEqual (Local0, 0xFF))
                {
                    And (Local0, 0x02, Local0)
                }
                Else
                {
                    Store (Zero, Local0)
                }
            }
            Else
            {
                Store (Zero, Local0)
            }

            Return (Local0)
        }

        Method (GBRC, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1RC, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0RC, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (GBVT, 1, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                If (Arg0)
                {
                    Store (\_SB.PCI0.LPCB.EC0.B1VL, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.B0VL, Local0)
                }
            }
            Else
            {
                Store (Ones, Local0)
            }

            Return (Local0)
        }

        Method (BCLE, 1, Serialized)
        {
            If (Arg0)
            {
                If (\_SB.PCI0.LPCB.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.LPCB.EC0.EB1S, Local1)
                    And (Local1, 0xFFFF, Local1)
                    If (LNotEqual (Local1, 0xFFFF))
                    {
                        And (Local1, 0x16, Local1)
                        If (LEqual (Local1, 0x04))
                        {
                            Store (0x00, Local0)
                        }
                        Else
                        {
                            If (LEqual (Local1, 0x02))
                            {
                                Store (0x01, Local0)
                            }
                            Else
                            {
                                If (LEqual (Local1, 0x10))
                                {
                                    Store (0x01, Local0)
                                }
                            }
                        }
                    }

                    Store (Ones, Local0)
                }
                Else
                {
                    Store (Ones, Local0)
                }

                Return (Local0)
            }
            Else
            {
                If (\_SB.PCI0.LPCB.EC0.ECAV ())
                {
                    Store (\_SB.PCI0.LPCB.EC0.EB0S, Local1)
                    And (Local1, 0xFFFF, Local1)
                    If (LNotEqual (Local1, 0xFFFF))
                    {
                        And (Local1, 0x16, Local1)
                        If (LEqual (Local1, 0x04))
                        {
                            Store (0x00, Local0)
                        }
                        Else
                        {
                            If (LEqual (Local1, 0x02))
                            {
                                Store (0x01, Local0)
                            }
                            Else
                            {
                                If (LEqual (Local1, 0x10))
                                {
                                    Store (0x01, Local0)
                                }
                            }
                        }
                    }

                    Store (Ones, Local0)
                }
                Else
                {
                    Store (Ones, Local0)
                }

                Return (Local0)
            }
        }

        Method (GFAN, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.TAH0, Local0)
                And (Local0, 0xFFFF, Local0)
                If (LNotEqual (Local0, 0x00))
                {
                    If (LEqual (Local0, 0xFFFF))
                    {
                        Store (Zero, Local0)
                    }
                    Else
                    {
                        Store (0x80, Local1)
                        Store (0x02, Local2)
                        Multiply (Local1, Local2, Local3)
                        Multiply (Local0, Local3, Local4)
                        Divide (0x03938700, Local4, Local5, Local6)
                        Multiply (Local6, 0x0A, Local6)
                        Store (Local6, Local0)
                    }
                }

                Divide (Local0, 0x64, Local1, Local0)
                Add (Local0, 0x01, Local0)
                If (LLessEqual (Local0, 0x3C))
                {
                    Store (Local0, \_TZ.FANS)
                }
                Else
                {
                    Store (\_TZ.FANS, Local0)
                }
            }
            Else
            {
                Store (Zero, Local0)
            }

            Return (Local0)
        }

        Method (RFSE, 0, NotSerialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.RFOV (0x00), Local1)
                If (LLess (Local1, 0x80))
                {
                    If (LLess (Local1, 0x0A))
                    {
                        Store (0x00, Local0)
                    }
                    Else
                    {
                        Store (0x01, Local0)
                    }
                }
                Else
                {
                    If (LLess (Local1, 0xF5))
                    {
                        Store (0x02, Local0)
                    }
                    Else
                    {
                        Store (0x0F, Local0)
                    }
                }
            }
            Else
            {
                Store (Zero, Local0)
            }

            Return (Local0)
        }

        Method (GTMP, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.ECPU, Local0)
                If (LLess (Local0, 0x80))
                {
                    Store (Local0, \_TZ.LTMP)
                }
            }

            Return (\_TZ.LTMP)
        }

        Method (GLTM, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.TH0L, Local0)
                If (LLess (Local0, 0x80))
                {
                    Store (Local0, \_TZ.STMP)
                }
            }

            Return (\_TZ.STMP)
        }

        Method (GCRT, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.ECRT, Local0)
                If (LLess (Local0, 0x80))
                {
                    Store (Local0, \_TZ.TCRT)
                }
            }

            Return (\_TZ.TCRT)
        }

        Method (GPSV, 0, Serialized)
        {
            If (\_SB.PCI0.LPCB.EC0.ECAV ())
            {
                Store (\_SB.PCI0.LPCB.EC0.EPSV, Local0)
                If (LLess (Local0, 0x80))
                {
                    Store (Local0, \_TZ.TPSV)
                }
            }

            Return (\_TZ.TPSV)
        }

        Method (GLID, 0, Serialized)
        {
            Store (\_SB.PCI0.LPCB.EC0.RPIN (0x06), Local0)
            If (LNotEqual (Local0, 0x00))
            {
                Store (One, Local0)
            }

            If (And (\_SB.VGAF, 0x01))
            {
                Store (0x01, \_SB.PCI0.GFX0.CLID)
            }

            Return (Local0)
        }

        Method (TGLD, 0, Serialized)
        {
        }

        Method (OWGD, 1, Serialized)
        {
            If (Arg0)
            {
                Or (GL02, 0x40, GL02)
            }
            Else
            {
                And (GL02, 0xBF, GL02)
            }
        }

        Method (WBLD, 1, Serialized)
        {
            If (Arg0)
            {
                Or (GL02, 0x40, GL02)
            }
            Else
            {
                And (GL02, 0xBF, GL02)
            }
        }

        Method (OWLD, 1, Serialized)
        {
            Store (Arg0, \_SB.WRST)
            If (Arg0)
            {
                If (LEqual (LAnd (\_SB.ATKD.WAPF, 0x05), 0x00))
                {
                    And (GP28, 0x00, GP28)
                }
            }
            Else
            {
                If (LEqual (LAnd (\_SB.ATKD.WAPF, 0x05), 0x00))
                {
                    Or (GP28, 0x01, GP28)
                }
            }
        }

        Method (OBTD, 1, Serialized)
        {
            Store (Arg0, \_SB.BRST)
            If (Arg0)
            {
                Or (GL07, 0x02, GL07)
            }
            Else
            {
                And (GL07, 0xFD, GL07)
            }
        }

        Method (OWMD, 1, Serialized)
        {
            Store (Arg0, \_SB.WMST)
            Return (0x01)
        }

        Method (OHWR, 0, Serialized)
        {
            Store (Zero, Local0)
            Or (Local0, 0x02, Local0)
            Or (Local0, 0x0400, Local0)
            If (LEqual (\_SB.PCI0.LPCB.EC0.RPIN (0x07), 0x00))
            {
                Or (Local0, 0x01, Local0)
            }

            Or (ShiftLeft (\_SB.BLTS, 0x08), Local0, Local0)
            Or (ShiftLeft (\_SB.WLSS, 0x07), Local0, Local0)
            Or (ShiftLeft (\_SB.WMDP, 0x04), Local0, Local0)
            Return (Local0)
        }

        Method (ODWR, 0, Serialized)
        {
            Store (0x00, Local0)
            Or (Local0, 0x08, Local0)
            Return (Local0)
        }

        Method (OQDC, 0, Serialized)
        {
            Store (0x02, Local0)
            Return (Local0)
        }

        Method (OQDG, 0, Serialized)
        {
            Store (0x02, Local0)
            Return (Local0)
        }

        Method (OQDS, 0, Serialized)
        {
            Store (0x02, Local0)
            Return (Local0)
        }

        Method (OQDM, 0, Serialized)
        {
            Store (0x02, Local0)
            If (\_SB.PCI0.LPCB.EC0.RPIN (0x1D))
            {
                Store (0x01, Local0)
            }
            Else
            {
                Store (0x00, Local0)
            }

            Return (Local0)
        }

        Method (ONDC, 0, Serialized)
        {
            Return (0x00)
        }

        Method (ONDG, 0, Serialized)
        {
            Return (0x00)
        }

        Method (ONDS, 0, Serialized)
        {
            Return (0x00)
        }

        Method (ONDM, 0, Serialized)
        {
            \_SB.PCI0.LPCB.EC0.SPIN (0x1D, 0x00)
            Return (0x01)
        }

        Method (OFDC, 0, Serialized)
        {
            Return (0x00)
        }

        Method (OFDG, 0, Serialized)
        {
            Return (0x00)
        }

        Method (OFDS, 0, Serialized)
        {
            Return (0x00)
        }

        Method (OFDM, 0, Serialized)
        {
            \_SB.PCI0.LPCB.EC0.SPIN (0x1D, 0x01)
            Return (0x01)
        }

        Method (GBTL, 0, Serialized)
        {
            Return (\_SB.PCI0.LPCB.EC0.RPIN (0x00))
        }

        Method (SBTL, 1, Serialized)
        {
            \_SB.PCI0.LPCB.EC0.SPIN (0x00, Arg0)
        }
    }

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    If (SS1)
    {
        Name (\_S1, Package (0x04)
        {
            0x01, 
            0x00, 
            0x00, 
            0x00
        })
    }

    If (SS3)
    {
        Name (\_S3, Package (0x04)
        {
            0x05, 
            0x00, 
            0x00, 
            0x00
        })
    }

    If (SS4)
    {
        Name (\_S4, Package (0x04)
        {
            0x06, 
            0x00, 
            0x00, 
            0x00
        })
    }

    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.SARM (Arg0)
            \NBFS (Arg0)
            \OEMS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        \NBWK (Arg0)
        \OEMW (Arg0)
    }
}