/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20090123
 *
 * Disassembly of DSDT.dat, Mon Jan  3 10:30:38 2011
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x00005A10 (23056)
 *     Revision         0x01 **** ACPI 1.0, no 64-bit math support
 *     Checksum         0x5C
 *     OEM ID           "ASUS"
 *     OEM Table ID     "L1400B  "
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "MSFT"
 *     Compiler Version 0x0100000D (16777229)
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "ASUS", "L1400B  ", 0x00001000)
{
    Scope (\_PR)
    {
        Processor (\_PR.CPU0, 0x01, 0x0000E410, 0x05)
        {
            Name (_PCT, Package (0x02)
            {
                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x08,               // Bit Width
                        0x00,               // Bit Offset
                        0x00000000000000B2, // Address
                        ,)
                }, 

                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x08,               // Bit Width
                        0x00,               // Bit Offset
                        0x00000000000000B3, // Address
                        ,)
                }
            })
            Name (_PSS, Package (0x02)
            {
                Package (0x06)
                {
                    0x03E8, 
                    0x4E20, 
                    0x01F4, 
                    0x012C, 
                    0x83, 
                    0x00
                }, 

                Package (0x06)
                {
                    0x02DD, 
                    0x2710, 
                    0x01F4, 
                    0x012C, 
                    0x84, 
                    0x01
                }
            })
            Method (_PPC, 0, NotSerialized)
            {
                If (LGreaterEqual (\_SB.PCI0.PX40.REVN, 0x02))
                {
                    Return (0x00)
                }
                Else
                {
                    If (LEqual (OSFL, 0x08))
                    {
                        If (THRT)
                        {
                            Return (0x01)
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }
            }
        }
    }

    OperationRegion (FSEG, SystemMemory, 0x000FDF00, 0x0100)
    Field (FSEG, AnyAcc, NoLock, Preserve)
    {
        ACPR,   32, 
        MMSZ,   16, 
        NPS2,   8, 
        STRF,   8, 
        HCUD,   8, 
        HCPI,   8, 
        HDUD,   8, 
        HDPI,   8, 
        HEUD,   8, 
        HEPI,   8, 
        HFUD,   8, 
        HFPI,   8, 
        LPTM,   8, 
        CM2M,   8, 
        IRMD,   8, 
        FLG0,   8, 
                Offset (0xF0), 
        MBID,   8, 
        SMBA,   8, 
        CR00,   8
    }

    OperationRegion (NVSR, SystemMemory, ACPR, 0x0100)
    Field (NVSR, AnyAcc, NoLock, Preserve)
    {
        TRTY,   8, 
        SLPT,   8, 
                Offset (0x03), 
        KPSW,   8, 
        MPSW,   8, 
                Offset (0x10), 
        FADR,   32, 
        FSIZ,   16, 
        FSTA,   16, 
        FSFN,   8, 
                Offset (0x20), 
        RSIZ,   32, 
        VFUN,   16, 
        CSTE,   16, 
        NSTE,   16, 
        SSTE,   16, 
        CADL,   16, 
        PADL,   16, 
        LCDP,   8, 
                Offset (0x40), 
        A000,   32, 
        A001,   32, 
        A002,   32, 
        A003,   32, 
        A004,   32, 
        A005,   32, 
                Offset (0x80), 
        DDUG,   8, 
        CTMP,   8, 
                Offset (0x88), 
        ECMD,   8, 
        ECD1,   8, 
                Offset (0x90), 
        QLMD,   8, 
        QVSR,   8, 
        QNAC,   8
    }

    OperationRegion (GPSC, SystemIO, 0xB2, 0x01)
    Field (GPSC, ByteAcc, NoLock, Preserve)
    {
        SMCM,   8
    }

    Method (ISMI, 1, Serialized)
    {
        Store (Arg0, TRTY)
        Store (0xA7, SMCM)
    }

    OperationRegion (\DEBG, SystemIO, 0x80, 0x01)
    Field (\DEBG, ByteAcc, NoLock, Preserve)
    {
        DBG1,   8
    }

    Method (DIAG, 1, NotSerialized)
    {
        Store (Arg0, DBG1)
    }

    Method (SSLP, 1, NotSerialized)
    {
        Store (Arg0, SLPT)
    }

    Mutex (MTXS, 0x04)
    OperationRegion (SM00, SystemIO, 0xE800, 0x07)
    Field (SM00, ByteAcc, NoLock, Preserve)
    {
        HSTS,   8, 
                Offset (0x02), 
        CTLR,   8, 
        CMDR,   8, 
        ADDR,   8, 
        SMD0,   8, 
        SMD1,   8
    }

    Method (SWFS, 0, NotSerialized)
    {
        And (HSTS, 0x06, Local0)
        Store (0x4000, Local1)
        While (LOr (LEqual (Local0, Zero), LEqual (Local1, Zero)))
        {
            Stall (0x01)
            And (HSTS, 0x06, Local0)
            Decrement (Local1)
        }

        Store (0xFF, HSTS)
    }

    Method (SBYT, 2, NotSerialized)
    {
        Store (Arg0, ADDR)
        Store (Arg1, CMDR)
        Store (0xFF, HSTS)
        Store (0x44, CTLR)
        SWFS ()
    }

    Method (WBYT, 3, NotSerialized)
    {
        Store (Arg0, ADDR)
        Store (Arg1, CMDR)
        Store (Arg2, SMD0)
        Store (0xFF, HSTS)
        Store (0x48, CTLR)
        SWFS ()
    }

    Method (WWRD, 4, NotSerialized)
    {
        Store (Arg0, ADDR)
        Store (Arg1, CMDR)
        Store (Arg2, SMD0)
        Store (Arg3, SMD1)
        Store (0xFF, HSTS)
        Store (0x4C, CTLR)
        SWFS ()
    }

    Method (RBYT, 2, NotSerialized)
    {
        Or (Arg0, 0x01, Local1)
        Store (Local1, ADDR)
        Store (Arg1, CMDR)
        Store (0xFF, HSTS)
        Store (0x48, CTLR)
        SWFS ()
        Return (SMD0)
    }

    Method (RWRD, 2, NotSerialized)
    {
        Or (Arg0, 0x01, ADDR)
        Store (Arg1, CMDR)
        Store (0xFF, HSTS)
        Store (0x4C, CTLR)
        SWFS ()
        Store (SMD0, Local0)
        ShiftLeft (SMD1, 0x08, Local1)
        Or (Local0, Local1, Local2)
        Return (Local2)
    }

    Method (RTMX, 0, NotSerialized)
    {
        Store (Zero, Local1)
        Store (One, Local2)
        While (LAnd (Subtract (0x05, Local1), Local2))
        {
            Store (RBYT (0x98, 0x01), Local0)
            If (LEqual (DDUG, 0x55))
            {
                Store (Local0, CTMP)
            }

            If (LEqual (And (Local0, 0x80), Zero))
            {
                Store (Zero, Local2)
            }

            Increment (Local1)
        }

        ShiftLeft (Local0, 0x01, Local1)
        ShiftLeft (Local0, 0x03, Local2)
        Add (Local1, Local2, Local0)
        Add (Local0, 0x0AAC, Local0)
        Return (Local0)
    }

    Method (CALM, 0, NotSerialized)
    {
        Store (0x19, ADDR)
        Store (0x19, CMDR)
        Store (0xFF, HSTS)
        Store (0x44, CTLR)
        SWFS ()
    }

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S1, Package (0x04)
    {
        0x02, 
        0x02, 
        0x00, 
        0x00
    })
    Name (\_S3, Package (0x04)
    {
        0x05, 
        0x05, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x06, 
        0x06, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x07, 
        0x00, 
        0x00
    })
    OperationRegion (ECOS, SystemIO, 0x72, 0x02)
    Field (ECOS, ByteAcc, NoLock, Preserve)
    {
        CIDX,   8, 
        CDAT,   8
    }

    IndexField (CIDX, CDAT, ByteAcc, NoLock, Preserve)
    {
                Offset (0x37), 
        BRIT,   4, 
        PNOF,   1, 
                Offset (0x5F), 
        SUS3,   1, 
                Offset (0x60)
    }

    Name (PRW1, Package (0x07)
    {
        Package (0x02)
        {
            0x0B, 
            0x01
        }, 

        Package (0x02)
        {
            0x03, 
            0x01
        }, 

        Package (0x02)
        {
            0x04, 
            0x01
        }, 

        Package (0x02)
        {
            0x0C, 
            0x01
        }, 

        Package (0x02)
        {
            0x08, 
            0x01
        }, 

        Package (0x02)
        {
            0x1D, 
            0x01
        }, 

        Package (0x02)
        {
            0x05, 
            0x01
        }
    })
    Name (PRW3, Package (0x07)
    {
        Package (0x02)
        {
            0x0B, 
            0x03
        }, 

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

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

        Package (0x02)
        {
            0x0C, 
            0x03
        }, 

        Package (0x02)
        {
            0x08, 
            0x03
        }, 

        Package (0x02)
        {
            0x1D, 
            0x04
        }, 

        Package (0x02)
        {
            0x05, 
            0x03
        }
    })
    Name (PRWT, Package (0x07)
    {
        0x0B, 
        0x03, 
        0x04, 
        0x0C, 
        0x08, 
        0x1D, 
        0x05
    })
    Method (SPRW, 1, NotSerialized)
    {
        Store (Match (PRWT, MEQ, Arg0, MTR, 0x00, 0x00), Local0)
        If (LEqual (SUS3, Zero))
        {
            Return (DerefOf (Index (PRW1, Local0)))
        }
        Else
        {
            Return (DerefOf (Index (PRW3, Local0)))
        }
    }

    OperationRegion (GPOO, SystemIO, 0xEC00, 0x3C)
    Field (GPOO, ByteAcc, NoLock, Preserve)
    {
                Offset (0x0E), 
            ,   1, 
        GO17,   1, 
                Offset (0x0F), 
            ,   1, 
        GO25,   1, 
            ,   1, 
        GO27,   1, 
                Offset (0x2C), 
        GIV0,   1, 
        GIV1,   1, 
        GIV2,   1, 
        GIV3,   1, 
        GIV4,   1, 
        GIV5,   1, 
        GIV6,   1, 
        GIV7,   1, 
        GIV8,   1, 
            ,   2, 
        GIVB,   1, 
        GIVC,   1, 
        GIVD,   1, 
                Offset (0x38), 
        MOD3,   1, 
            ,   1, 
        AVID,   5, 
        MUBP,   1, 
        CMSD,   1, 
            ,   1, 
        EMLE,   1, 
        FWHW,   1
    }

    OperationRegion (GIB0, SystemIO, 0xE400, 0x30)
    Field (GIB0, ByteAcc, NoLock, Preserve)
    {
                Offset (0x10), 
            ,   1, 
            ,   3, 
            ,   1, 
                Offset (0x2C), 
        GI00,   1, 
        GI01,   1, 
        GI02,   1, 
        GI03,   1, 
        GI04,   1, 
        GI05,   1, 
        GI06,   1, 
        GI07,   1, 
        GI08,   1, 
        GI09,   1, 
        GI0A,   1, 
        GI0B,   1, 
        GI0C,   1, 
        GI0D,   1, 
        GI0E,   1, 
        GI0F,   1, 
            ,   12, 
        KSCE,   1
    }

    OperationRegion (GIB1, SystemIO, 0xE410, 0x01)
    Field (GIB1, ByteAcc, NoLock, Preserve)
    {
            ,   1, 
        DUTY,   3, 
        THTE,   1
    }

    OperationRegion (SMIC, SystemIO, 0xFE00, 0x01)
    Field (SMIC, ByteAcc, NoLock, Preserve)
    {
        ESMI,   8
    }

    Name (OSFL, 0x08)
    Name (ACIO, 0x00)
    Name (ENUM, 0x01)
    Name (FANS, 0x00)
    Name (THRT, 0x00)
    Name (TRNG, 0x00)
    Name (KCPD, 0x00)
    Name (TH0L, 0x00)
    Name (TH0H, 0x3C)
    Name (TH1L, 0x32)
    Name (TH1H, 0x55)
    Name (TH2L, 0x4B)
    Name (TH2H, 0x5C)
    Name (TH3L, 0x58)
    Name (TH3H, 0x67)
    Name (TPC, 0x64)
    Scope (\_TZ)
    {
        Method (FOFF, 0, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0xFF)
            \_SB.PCI0.PX40.ECWR (0x06, 0x84)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
            Release (\_SB.PCI0.PX40.MTXE)
            Store (Zero, FANS)
        }

        Method (FONL, 0, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0xAA)
            \_SB.PCI0.PX40.ECWR (0x06, 0x84)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
            Release (\_SB.PCI0.PX40.MTXE)
            Store (One, FANS)
        }

        Method (FONH, 0, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0x00)
            \_SB.PCI0.PX40.ECWR (0x06, 0x84)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
            Release (\_SB.PCI0.PX40.MTXE)
            Store (One, FANS)
        }

        Method (TZNE, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                WBYT (0x98, 0x0D, TH0H)
                WBYT (0x98, 0x0E, TH0L)
                FOFF ()
            }

            If (LEqual (Arg0, 0x01))
            {
                WBYT (0x98, 0x0D, TH1H)
                WBYT (0x98, 0x0E, TH1L)
                FONL ()
            }

            If (LEqual (Arg0, 0x02))
            {
                WBYT (0x98, 0x0D, TH2H)
                WBYT (0x98, 0x0E, TH2L)
                FONH ()
                If (LGreaterEqual (\_SB.PCI0.PX40.REVN, 0x02)) {}
                Else
                {
                    If (LEqual (OSFL, 0x08))
                    {
                        Store (Zero, THRT)
                        Notify (\_PR.CPU0, 0x80)
                    }
                    Else
                    {
                        Store (0x30, TRTY)
                        Store (0x00, ESMI)
                    }
                }
            }

            If (LEqual (Arg0, 0x03))
            {
                WBYT (0x98, 0x0D, TH3H)
                WBYT (0x98, 0x0E, TH3L)
                FONH ()
                If (LGreaterEqual (\_SB.PCI0.PX40.REVN, 0x02)) {}
                Else
                {
                    If (LEqual (OSFL, 0x08))
                    {
                        Store (One, THRT)
                        Notify (\_PR.CPU0, 0x80)
                    }
                    Else
                    {
                        Store (0x31, TRTY)
                        Store (0x00, ESMI)
                    }
                }
            }
        }

        Method (TRST, 0, NotSerialized)
        {
            Store (RBYT (0x98, 0x01), Local0)
            If (LLessEqual (Local0, TH0H))
            {
                Store (0x00, TRNG)
            }
            Else
            {
                If (LLessEqual (Local0, TH1H))
                {
                    Store (0x01, TRNG)
                }
                Else
                {
                    If (LLessEqual (Local0, TH2H))
                    {
                        Store (0x02, TRNG)
                    }
                    Else
                    {
                        Store (0x03, TRNG)
                    }
                }
            }

            TZNE (TRNG)
        }

        PowerResource (PFAN, 0x00, 0x0000)
        {
            Method (_STA, 0, NotSerialized)
            {
                Return (FANS)
            }

            Method (_OFF, 0, NotSerialized)
            {
                Store (Zero, FANS)
            }

            Method (_ON, 0, NotSerialized)
            {
                Store (One, FANS)
            }
        }

        Device (FAN)
        {
            Name (_HID, EisaId ("PNP0C0B"))
            Name (_PR0, Package (0x01)
            {
                PFAN
            })
        }

        ThermalZone (THRM)
        {
            Name (_GPE, 0x00)
            Name (_AL0, Package (0x01)
            {
                FAN
            })
            Method (_AC0, 0, NotSerialized)
            {
                TRST ()
                If (LEqual (TRNG, 0x00))
                {
                    Store (TH0H, Local0)
                }
                Else
                {
                    Store (TH1H, Local0)
                }

                Multiply (Local0, 0x0A, Local1)
                Add (Local1, 0x0AAC, Local0)
                Return (Local0)
            }

            Name (_PSL, Package (0x01)
            {
                \_PR.CPU0
            })
            Name (_TSP, 0x32)
            Name (_TC1, 0x01)
            Name (_TC2, 0x04)
            Method (_PSV, 0, NotSerialized)
            {
                If (LGreaterEqual (TRNG, 0x03))
                {
                    Subtract (TH3L, 0x01, Local0)
                }
                Else
                {
                    Subtract (TH2H, 0x01, Local0)
                }

                Multiply (Local0, 0x0A, Local1)
                Add (Local1, 0x0AAC, Local0)
                Return (Local0)
            }

            Method (_CRT, 0, NotSerialized)
            {
                Multiply (TPC, 0x0A, Local1)
                Add (Local1, 0x0AAC, Local0)
                Return (Local0)
            }

            Method (_TMP, 0, NotSerialized)
            {
                Return (RTMX ())
            }

            Method (_SCP, 1, NotSerialized)
            {
                Notify (\_TZ.THRM, 0x81)
            }
        }
    }

    Scope (\_GPE)
    {
        Method (_L00, 0, NotSerialized)
        {
            Notify (\_TZ.THRM, 0x80)
            Store (RBYT (0x98, 0x02), Local0)
            If (LEqual (And (Local0, 0x10), 0x10))
            {
                If (LEqual (TRNG, 0x03))
                {
                    Store (0x03, TRNG)
                }
                Else
                {
                    Increment (TRNG)
                }

                If (LEqual (TRNG, 0x03))
                {
                    Notify (\_TZ.THRM, 0x81)
                }
            }
            Else
            {
                If (LEqual (TRNG, 0x00))
                {
                    Store (0x00, TRNG)
                }
                Else
                {
                    Decrement (TRNG)
                }

                If (LEqual (TRNG, 0x02))
                {
                    Notify (\_TZ.THRM, 0x81)
                }
            }

            \_TZ.TZNE (TRNG)
            Store (RBYT (0x98, 0x02), Local0)
            CALM ()
        }

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

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

        Method (_L08, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.ACMO, 0x02)
            Notify (\_SB.LID, 0x80)
        }

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

        Method (_L18, 0, NotSerialized)
        {
        }

        Method (_L1B, 0, NotSerialized)
        {
            XOr (GIVB, One, GIVB)
            Notify (\_SB.LID, 0x80)
        }

        Method (_L1C, 0, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            Store (\_SB.PCI0.PX40.ECQR (), Local0)
            Release (\_SB.PCI0.PX40.MTXE)
            While (Local0)
            {
                If (LEqual (Local0, 0x01))
                {
                    \_SB.PCI0.PX40.Q01 ()
                }

                If (LEqual (Local0, 0x02))
                {
                    \_SB.PCI0.PX40.Q02 ()
                }

                If (LEqual (Local0, 0x03))
                {
                    \_SB.PCI0.PX40.Q03 ()
                }

                If (LEqual (Local0, 0x04))
                {
                    \_SB.PCI0.PX40.Q04 ()
                }

                If (LEqual (Local0, 0x05))
                {
                    \_SB.PCI0.PX40.Q05 ()
                }

                If (LEqual (Local0, 0x0A))
                {
                    \_SB.PCI0.PX40.Q0A ()
                }

                If (LEqual (Local0, 0x0D))
                {
                    \_SB.PCI0.PX40.Q0D ()
                }

                If (LEqual (Local0, 0x0E))
                {
                    \_SB.PCI0.PX40.Q0E ()
                }

                If (LEqual (Local0, 0x0F))
                {
                    \_SB.PCI0.PX40.Q0F ()
                }

                If (LEqual (Local0, 0x10))
                {
                    \_SB.PCI0.PX40.Q10 ()
                }

                If (LEqual (Local0, 0x11))
                {
                    \_SB.PCI0.PX40.Q11 ()
                }

                If (LEqual (Local0, 0x12))
                {
                    \_SB.PCI0.PX40.Q12 ()
                }

                If (LEqual (Local0, 0x13))
                {
                    \_SB.PCI0.PX40.Q13 ()
                }

                If (LEqual (Local0, 0x14))
                {
                    \_SB.PCI0.PX40.Q14 ()
                }

                If (LEqual (Local0, 0x15))
                {
                    \_SB.PCI0.PX40.Q15 ()
                }

                If (LEqual (Local0, 0x2E))
                {
                    \_SB.PCI0.PX40.Q2E ()
                }

                If (LEqual (Local0, 0x2F))
                {
                    \_SB.PCI0.PX40.Q2F ()
                }

                If (LEqual (Local0, 0x31))
                {
                    \_SB.PCI0.PX40.Q31 ()
                }

                If (LEqual (Local0, 0x32))
                {
                    \_SB.PCI0.PX40.Q32 ()
                }

                If (LEqual (Local0, 0x33))
                {
                    \_SB.PCI0.PX40.Q33 ()
                }

                If (LEqual (Local0, 0x34))
                {
                    \_SB.PCI0.PX40.Q34 ()
                }

                If (LEqual (Local0, 0x36))
                {
                    \_SB.PCI0.PX40.Q36 ()
                }

                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                Store (\_SB.PCI0.PX40.ECQR (), Local0)
                Release (\_SB.PCI0.PX40.MTXE)
            }
        }
    }

    Method (\_PTS, 1, NotSerialized)
    {
        Store (Arg0, \DBG1)
        Store (Zero, FWHW)
        If (LEqual (OSFL, 0x01))
        {
            If (LEqual (Arg0, 0x03))
            {
                \_SB.PCI0.USB0.SSTA ()
                \_SB.PCI0.USB1.SSTA ()
            }
        }

        If (LEqual (Arg0, 0x01))
        {
            WBYT (0x98, 0x0D, 0x78)
            WBYT (0x98, 0x0E, 0xBF)
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0xFF)
            \_SB.PCI0.PX40.ECWR (0x06, 0x84)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
            \_SB.PCI0.PX40.ECWR (0x05, 0x2B)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            \_SB.PCI0.PX40.ECWR (0x07, 0x01)
            \_SB.PCI0.PX40.ECWR (0x06, 0xE9)
            \_SB.PCI0.PX40.ECWR (0x05, 0xA9)
            \_SB.PCI0.PX40.ECWR (0x04, 0xBB)
            \_SB.PCI0.PX40.ECWR (0x07, 0x00)
            \_SB.PCI0.PX40.ECWR (0x06, 0x7D)
            \_SB.PCI0.PX40.ECWR (0x05, 0x20)
            \_SB.PCI0.PX40.ECWR (0x04, 0xBB)
            \_SB.PCI0.PX40.ECWR (0x04, 0xCB)
            Release (\_SB.PCI0.PX40.MTXE)
            Store (Zero, FANS)
        }

        If (LAnd (LGreaterEqual (Arg0, 0x03), LLess (Arg0, 0x05)))
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0x4A)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            Release (\_SB.PCI0.PX40.MTXE)
        }

        If (LEqual (Arg0, 0x03))
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x05, 0x2B)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            \_SB.PCI0.PX40.ECWR (0x07, 0x01)
            \_SB.PCI0.PX40.ECWR (0x06, 0xE9)
            \_SB.PCI0.PX40.ECWR (0x05, 0xA9)
            \_SB.PCI0.PX40.ECWR (0x04, 0xBB)
            \_SB.PCI0.PX40.ECWR (0x05, 0x2D)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            \_SB.PCI0.PX40.ECWR (0x05, 0x2E)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            \_SB.PCI0.PX40.ECWR (0x07, 0x00)
            \_SB.PCI0.PX40.ECWR (0x06, 0x7D)
            \_SB.PCI0.PX40.ECWR (0x05, 0x20)
            \_SB.PCI0.PX40.ECWR (0x04, 0xBB)
            \_SB.PCI0.PX40.ECWR (0x05, 0x2C)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
            \_SB.PCI0.PX40.ECWR (0x05, 0x00)
            \_SB.PCI0.PX40.ECWR (0x06, 0x84)
            \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
            \_SB.PCI0.PX40.ECWR (0x04, 0xCB)
            Store (One, KCPD)
            Release (\_SB.PCI0.PX40.MTXE)
        }

        Store (0xA8, SMCM)
    }

    Method (\_WAK, 1, NotSerialized)
    {
        Store (0xF8, DBG1)
        Store (Zero, KCPD)
        If (LEqual (Arg0, 0x01))
        {
            Notify (\_SB.LID, 0x80)
            Store (0xA9, SMCM)
        }

        If (LEqual (OSFL, 0x01))
        {
            If (LEqual (Arg0, 0x03))
            {
                \_SB.PCI0.USB0.RSTA ()
                \_SB.PCI0.USB1.RSTA ()
            }
        }

        If (LGreaterEqual (Arg0, 0x03))
        {
            Notify (\_SB.PCI0.PX40.IRDA, 0x00)
            Notify (\_SB.PCI0.PX40.FIR, 0x00)
            Notify (\_SB.PCI0.PCI1.CDB0, 0x00)
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            And (\_SB.PCI0.PX40.ECRP (0x06), 0x04, Local0)
            Release (\_SB.PCI0.PX40.MTXE)
            If (LEqual (Local0, Zero))
            {
                \_SB.PCI0.PX41.SFC1 (HEPI, HEUD, HFPI, HFUD)
            }

            If (LAnd (LEqual (Local0, Zero), LGreaterEqual (OSFL, 0x04)))
            {
                If (LAnd (LEqual (HFPI, 0x0F), LEqual (HFUD, 0x0F)))
                {
                    Notify (\_SB.PCI0.PX41.CHN1.DRV0, 0x01)
                }
                Else
                {
                    Notify (\_SB.PCI0.PX41.CHN1.DRV1, 0x01)
                }

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

        WBYT (0x98, 0x0B, 0x7F)
        WBYT (0x98, 0x0C, 0xBF)
        \_TZ.TRST ()
        Notify (\_TZ.THRM, 0x81)
        Notify (\_TZ.THRM, 0x80)
        RBYT (0x98, 0x02)
        If (LEqual (Arg0, 0x04))
        {
            Notify (\_SB.PWRB, 0x02)
        }
    }

    Scope (\_SB)
    {
        Device (AC)
        {
            Name (ADPS, 0x01)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Name (_HID, "ACPI0003")
            Method (_PSR, 0, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                Store (\_SB.PCI0.PX40.ECRD (0x78), Local0)
                Release (\_SB.PCI0.PX40.MTXE)
                Store (And (ShiftRight (Local0, 0x04), 0x01), ADPS)
                And (Local0, 0x10, Local0)
                If (Local0)
                {
                    Return (0x01)
                }
                Else
                {
                    Return (0x00)
                }
            }
        }

        Device (LID)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Name (_GPE, 0x1B)
            Name (_PRW, Package (0x02)
            {
                0x1B, 
                0x04
            })
            Method (_LID, 0, NotSerialized)
            {
                Return (GIVB)
            }
        }

        Name (BUFF, Package (0x0D) {})
        Name (BUF, Package (0x04) {})
        Method (RBAT, 2, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            \_SB.PCI0.PX40.ECWR (0x06, Arg0)
            Store (Arg1, Local0)
            ShiftLeft (Local0, 0x01, Local0)
            Add (Local0, 0xDA, Local1)
            \_SB.PCI0.PX40.ECWR (0x04, Local1)
            Store (0x1000, Local2)
            While (LAnd (\_SB.PCI0.PX40.ECRD (0x04), Local2))
            {
                Decrement (Local2)
            }

            Store (\_SB.PCI0.PX40.ECRD (0x05), Arg1)
            Release (\_SB.PCI0.PX40.MTXE)
            Return (Arg1)
        }

        Method (RVSR, 1, NotSerialized)
        {
            Store (RBAT (0x12, Arg0), Local0)
            Store (RBAT (0x13, Arg0), Local1)
            ShiftLeft (Local0, 0x08, Local0)
            Add (Local0, Local1, Local0)
            And (Local0, 0xFFFF, Local0)
            And (Local0, 0x8000, Local1)
            If (Local1)
            {
                Not (Local0, Local0)
                And (Local0, 0xFFFF, Local0)
            }

            Store (Local0, Local1)
            ShiftRight (Local1, 0x01, Local1)
            ShiftLeft (Local0, 0x01, Local0)
            Add (Local0, Local1, Local0)
            Store (Local0, Arg0)
            Return (Arg0)
        }

        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                And (\_SB.PCI0.PX40.ECRD (0x78), 0x02, Local0)
                Release (\_SB.PCI0.PX40.MTXE)
                If (Local0)
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x1F)
                }
            }

            Method (_BIF, 0, NotSerialized)
            {
                Store (One, Index (BUFF, 0x00))
                Store (RBAT (0x07, 0x00), Local0)
                Store ("BA-02", Index (BUFF, 0x09))
                Store ("Li-ION", Index (BUFF, 0x0B))
                Store (RBAT (0x05, 0x00), Local0)
                ShiftLeft (Local0, 0x05, Local0)
                Store (Local0, Local1)
                Store (Local0, Index (BUFF, 0x02))
                Store (Local0, Index (BUFF, 0x01))
                Store (One, Index (BUFF, 0x03))
                Store (0x39D0, Index (BUFF, 0x04))
                Divide (Local1, 0x0A, Local0, Local1)
                Store (Local1, Index (BUFF, 0x05))
                Divide (Local1, 0x0A, Local0, Local1)
                Store (Local1, Index (BUFF, 0x06))
                Subtract (DerefOf (Index (BUFF, 0x05)), DerefOf (Index (BUFF, 0x06
                    )), Index (BUFF, 0x07))
                Subtract (DerefOf (Index (BUFF, 0x02)), DerefOf (Index (BUFF, 0x05
                    )), Index (BUFF, 0x08))
                Store (" ", Index (BUFF, 0x0A))
                Store ("ASUSTek", Index (BUFF, 0x0C))
                Return (BUFF)
            }

            Method (_BST, 0, NotSerialized)
            {
                Store (RBAT (0x01, 0x00), Local0)
                Store (Zero, Local1)
                If (LNotEqual (ACIO, Zero))
                {
                    Decrement (ACIO)
                    Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                    And (\_SB.PCI0.PX40.ECRD (0x78), 0x10, Local7)
                    Release (\_SB.PCI0.PX40.MTXE)
                    If (Local7)
                    {
                        Or (Local1, 0x02, Local1)
                    }
                    Else
                    {
                        Or (Local1, 0x01, Local1)
                    }
                }
                Else
                {
                    If (And (Local0, 0x80))
                    {
                        Or (Local1, 0x02, Local1)
                    }
                    Else
                    {
                        Or (Local1, 0x01, Local1)
                    }
                }

                Store (Local1, Index (BUF, 0x00))
                Store (RVSR (0x00), Index (BUF, 0x01))
                Store (RBAT (0x17, 0x00), Local0)
                Store (RBAT (0x03, 0x00), Local1)
                ShiftLeft (Local1, 0x08, Local1)
                Add (Local0, Local1, Local1)
                ShiftRight (Local1, 0x03, Local1)
                Store (Local1, Index (BUF, 0x02))
                Store (DerefOf (Index (BUFF, 0x01)), Local2)
                Subtract (Local2, Local1, Local3)
                If (LLess (Local3, 0x0A))
                {
                    Store (Local2, Index (BUF, 0x02))
                }

                Store (RBAT (0x0B, 0x00), Local0)
                Multiply (Local0, 0x6F9F, Local0)
                Divide (Local0, 0x0178, Local1, Local0)
                Store (Local0, Index (BUF, 0x03))
                Return (BUF)
            }
        }

        Method (DRST, 0, NotSerialized)
        {
            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
            And (\_SB.PCI0.PX40.ECRP (0x06), 0x04, Local0)
            If (LNot (Local0))
            {
                Store (0x00, \_SB.PCI0.PX41.SESG)
                Sleep (0x07D0)
                \_SB.PCI0.PX40.ECWR (0x05, 0x4A)
                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                While (\_SB.PCI0.PX40.ECRD (0x04)) {}
                Sleep (0x1B58)
                Store (0xB1, TRTY)
                Store (0x00, ESMI)
                \_SB.PCI0.PX41.SFC1 (HEPI, HEUD, HFPI, HFUD)
                If (LGreaterEqual (OSFL, 0x04))
                {
                    If (LAnd (LEqual (HFPI, 0x0F), LEqual (HFUD, 0x0F)))
                    {
                        Notify (\_SB.PCI0.PX41.CHN1.DRV0, 0x01)
                    }
                    Else
                    {
                        Notify (\_SB.PCI0.PX41.CHN1.DRV1, 0x01)
                    }

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

                Notify (\_SB.HOTK, 0x59)
            }
            Else
            {
                Store (0xB2, TRTY)
                Store (0x00, ESMI)
                If (LGreaterEqual (OSFL, 0x04))
                {
                    If (LAnd (LEqual (HFPI, 0x0F), LEqual (HFUD, 0x0F)))
                    {
                        Notify (\_SB.PCI0.PX41.CHN1.DRV0, 0x01)
                    }
                    Else
                    {
                        Notify (\_SB.PCI0.PX41.CHN1.DRV1, 0x01)
                    }

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

                \_SB.PCI0.PX40.ECWR (0x05, 0x2A)
                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                While (\_SB.PCI0.PX40.ECRD (0x04)) {}
                Store (0x00, \_SB.PCI0.PX41.SDM0)
                Store (0x00, \_SB.PCI0.PX41.SDM1)
                Store (0x00, \_SB.PCI0.PX41.SCT0)
                Store (0x00, \_SB.PCI0.PX41.SCT1)
                Store (0x01, \_SB.PCI0.PX41.SESG)
                Notify (\_SB.HOTK, 0x5A)
            }

            Release (\_SB.PCI0.PX40.MTXE)
        }

        Device (HOTK)
        {
            Name (_HID, "ATK0100")
            Name (_UID, 0x01010100)
            Method (INIT, 1, NotSerialized)
            {
                If (Not (Arg0))
                {
                    Store ("L84F", Local0)
                    Return (Local0)
                }
            }

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

            Method (BSTS, 0, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                Store (\_SB.PCI0.PX40.ECRD (0x78), Local1)
                Store (\_SB.PCI0.PX40.ECRP (0x05), Local2)
                \_SB.PCI0.PX40.ECWR (0x05, 0x4B)
                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                \_SB.PCI0.PX40.ECWR (0x48, 0x80)
                \_SB.PCI0.PX40.ECWR (0x49, 0x80)
                \_SB.PCI0.PX40.ECWR (0x53, 0x80)
                \_SB.PCI0.PX40.ECWR (0x56, 0x80)
                \_SB.PCI0.PX40.ECWR (0x4C, 0x80)
                \_SB.PCI0.PX40.ECWR (0x4D, 0x80)
                \_SB.PCI0.PX40.ECWR (0x5B, 0x80)
                \_SB.PCI0.PX40.ECWR (0x5E, 0x80)
                \_SB.PCI0.PX40.ECWR (0x05, 0x4B)
                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                Release (\_SB.PCI0.PX40.MTXE)
                Store (0x00, Local0)
                If (LEqual (And (Local1, 0x08), 0x00))
                {
                    Or (Local0, 0x01, Local0)
                }

                If (LEqual (And (Local1, 0x40), 0x00))
                {
                    Or (Local0, 0x02, Local0)
                }

                If (LEqual (And (Local2, 0x10), 0x00))
                {
                    Or (Local0, 0x04, Local0)
                }

                If (LEqual (And (Local2, 0x20), 0x00))
                {
                    Or (Local0, 0x08, Local0)
                }

                Return (Local0)
            }

            Method (MLED, 1, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                If (LEqual (Arg0, 0x00))
                {
                    \_SB.PCI0.PX40.ECWR (0x05, 0x33)
                }
                Else
                {
                    \_SB.PCI0.PX40.ECWR (0x05, 0x53)
                }

                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                Release (\_SB.PCI0.PX40.MTXE)
            }

            Method (FSMI, 1, NotSerialized)
            {
                Store (Arg0, FSFN)
                Store (0xF1, TRTY)
                Store (0x00, ESMI)
                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 (TMPR, 0, NotSerialized)
            {
                Store (Zero, Local0)
                Store (RTMX (), Local0)
                If (KCPD) {}
                Else
                {
                    Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                    \_SB.PCI0.PX40.ECWR (0x06, 0x44)
                    \_SB.PCI0.PX40.ECWR (0x04, 0xC4)
                    Store (\_SB.PCI0.PX40.ECRD (0x05), Local1)
                    Release (\_SB.PCI0.PX40.MTXE)
                    If (LEqual (Local1, 0x00))
                    {
                        Store (0x00370000, Local2)
                    }

                    If (LEqual (Local1, 0xAA))
                    {
                        Store (0x002B0000, Local2)
                    }

                    If (LEqual (Local1, 0xFF))
                    {
                        Store (0x00, Local2)
                    }

                    Or (Local0, Local2, Local0)
                }

                If (THTE)
                {
                    Store (DUTY, Local1)
                }
                Else
                {
                    Store (Zero, Local1)
                }

                ShiftLeft (Local1, 0x18, Local1)
                Or (Local1, Local0, Local0)
                Return (Local0)
            }

            Method (AIBX, 0, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                And (\_SB.PCI0.PX40.ECRP (0x06), 0x04, Local0)
                Release (\_SB.PCI0.PX40.MTXE)
                If (Local0)
                {
                    Return (0x00)
                }
                Else
                {
                    Return (0x01)
                }
            }

            Method (SWBX, 1, NotSerialized)
            {
                If (Arg0)
                {
                    Store (0x2A, Local0)
                }
                Else
                {
                    Store (0x4A, Local0)
                }

                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                \_SB.PCI0.PX40.ECWR (0x05, Local0)
                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                Release (\_SB.PCI0.PX40.MTXE)
            }

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

            Method (SPLV, 1, NotSerialized)
            {
                Store (Arg0, BRIT)
                \_SB.PCI0.PX40.BTUN ()
            }

            Method (WLED, 1, NotSerialized)
            {
                Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                If (LEqual (Arg0, 0x01))
                {
                    \_SB.PCI0.PX40.ECWR (0x05, 0x41)
                }
                Else
                {
                    \_SB.PCI0.PX40.ECWR (0x05, 0x21)
                }

                \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                Release (\_SB.PCI0.PX40.MTXE)
            }
        }

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

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

        Device (MEM1)
        {
            Name (_HID, EisaId ("PNP0C01"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (BUF1, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x000A0000,         // Address Length
                        )
                    Memory32Fixed (ReadOnly,
                        0x000F0000,         // Address Base
                        0x00010000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0x00100000,         // Address Base
                        0x00000000,         // Address Length
                        _Y00)
                })
                CreateDWordField (BUF1, \_SB.MEM1._CRS._Y00._LEN, EMLN)
                Store (MEMS (), EMLN)
                Decrement (EMLN)
                ShiftLeft (EMLN, 0x14, EMLN)
                Return (BUF1)
            }
        }

        Method (MEMS, 0, NotSerialized)
        {
            Return (MMSZ)
        }

        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x01)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRA, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFA, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y01)
                        {}
                })
                CreateWordField (BUFA, \_SB.LNKA._CRS._Y01._INT, IRA)
                And (\_SB.PCI0.PX40.PIRA, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRA)
                }

                Return (BUFA)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRA1)
                CreateByteField (Arg0, 0x02, IRA2)
                ShiftLeft (IRA2, 0x08, Local0)
                Or (Local0, IRA1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRA, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRA)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRB, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFB, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y02)
                        {}
                })
                CreateWordField (BUFB, \_SB.LNKB._CRS._Y02._INT, IRB)
                And (\_SB.PCI0.PX40.PIRB, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRB)
                }

                Return (BUFB)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRB1)
                CreateByteField (Arg0, 0x02, IRB2)
                ShiftLeft (IRB2, 0x08, Local0)
                Or (Local0, IRB1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRB, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRB)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRC, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFC, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y03)
                        {}
                })
                CreateWordField (BUFC, \_SB.LNKC._CRS._Y03._INT, IRC)
                And (\_SB.PCI0.PX40.PIRC, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRC)
                }

                Return (BUFC)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRC1)
                CreateByteField (Arg0, 0x02, IRC2)
                ShiftLeft (IRC2, 0x08, Local0)
                Or (Local0, IRC1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRC, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRC)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRD, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFD, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y04)
                        {}
                })
                CreateWordField (BUFD, \_SB.LNKD._CRS._Y04._INT, IRD)
                And (\_SB.PCI0.PX40.PIRD, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRD)
                }

                Return (BUFD)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRD1)
                CreateByteField (Arg0, 0x02, IRD2)
                ShiftLeft (IRD2, 0x08, Local0)
                Or (Local0, IRD1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRD, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRD)
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x05)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRE, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRE)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFD, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y05)
                        {}
                })
                CreateWordField (BUFD, \_SB.LNKE._CRS._Y05._INT, IRD)
                And (\_SB.PCI0.PX40.PIRE, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRD)
                }

                Return (BUFD)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRD1)
                CreateByteField (Arg0, 0x02, IRD2)
                ShiftLeft (IRD2, 0x08, Local0)
                Or (Local0, IRD1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRE, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRE)
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x06)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRF, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRF)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFD, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y06)
                        {}
                })
                CreateWordField (BUFD, \_SB.LNKF._CRS._Y06._INT, IRD)
                And (\_SB.PCI0.PX40.PIRF, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRD)
                }

                Return (BUFD)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRD1)
                CreateByteField (Arg0, 0x02, IRD2)
                ShiftLeft (IRD2, 0x08, Local0)
                Or (Local0, IRD1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRF, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRF)
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x07)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRG, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRG)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFD, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y07)
                        {}
                })
                CreateWordField (BUFD, \_SB.LNKG._CRS._Y07._INT, IRD)
                And (\_SB.PCI0.PX40.PIRG, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRD)
                }

                Return (BUFD)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRD1)
                CreateByteField (Arg0, 0x02, IRD2)
                ShiftLeft (IRD2, 0x08, Local0)
                Or (Local0, IRD1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRG, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRG)
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x08)
            Method (_STA, 0, NotSerialized)
            {
                And (\_SB.PCI0.PX40.PIRH, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    Return (0x0B)
                }
                Else
                {
                    Return (0x09)
                }
            }

            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,12,14,15}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Store (0x80, \_SB.PCI0.PX40.PIRH)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (BUFD, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y08)
                        {}
                })
                CreateWordField (BUFD, \_SB.LNKH._CRS._Y08._INT, IRD)
                And (\_SB.PCI0.PX40.PIRH, 0x8F, Local0)
                If (LLess (Local0, 0x80))
                {
                    And (Local0, 0x0F, Local0)
                    ShiftLeft (One, Local0, Local1)
                    Store (Local1, IRD)
                }

                Return (BUFD)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x01, IRD1)
                CreateByteField (Arg0, 0x02, IRD2)
                ShiftLeft (IRD2, 0x08, Local0)
                Or (Local0, IRD1, Local0)
                Store (0x00, Local1)
                ShiftRight (Local0, 0x01, Local0)
                While (LGreater (Local0, 0x00))
                {
                    Increment (Local1)
                    ShiftRight (Local0, 0x01, Local0)
                }

                And (\_SB.PCI0.PX40.PIRH, 0x70, Local0)
                Or (Local1, Local0, \_SB.PCI0.PX40.PIRH)
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00)
            Method (_INI, 0, NotSerialized)
            {
                If (CondRefOf (_OSI, Local0))
                {
                    Store (0x08, OSFL)
                }
                Else
                {
                    Store (SizeOf (_OS), Local0)
                    If (LEqual (Local0, 0x14))
                    {
                        Store (0x04, OSFL)
                    }

                    If (LEqual (Local0, 0x27))
                    {
                        Store (0x02, OSFL)
                    }

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

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

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

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

            OperationRegion (REGS, PCI_Config, 0x40, 0xC0)
            Field (REGS, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x10), 
                CDH,    1, 
                        Offset (0x11), 
                PAMC,   2, 
                PAMD,   2, 
                PAME,   2, 
                        Offset (0x12), 
                DRP0,   4, 
                DRP1,   4, 
                        Offset (0x14), 
                DRP2,   4, 
                        Offset (0x18), 
                    ,   7, 
                HEN,    1
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (CRES, ResourceTemplate ()
                {
                    WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                        0x0000,             // Granularity
                        0x0000,             // Range Minimum
                        0x00FF,             // Range Maximum
                        0x0000,             // Translation Offset
                        0x0100,             // Length
                        ,, )
                    IO (Decode16,
                        0x0CF8,             // Range Minimum
                        0x0CF8,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Granularity
                        0x0000,             // Range Minimum
                        0x0CF7,             // Range Maximum
                        0x0000,             // Translation Offset
                        0x0CF8,             // Length
                        ,, , TypeStatic)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,             // Granularity
                        0x0D00,             // Range Minimum
                        0xFFFF,             // Range Maximum
                        0x0000,             // Translation Offset
                        0xF300,             // Length
                        ,, , TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Granularity
                        0x000A0000,         // Range Minimum
                        0x000BFFFF,         // Range Maximum
                        0x00000000,         // Translation Offset
                        0x00020000,         // Length
                        ,, , AddressRangeMemory, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Granularity
                        0x000DC000,         // Range Minimum
                        0x000DFFFF,         // Range Maximum
                        0x00000000,         // Translation Offset
                        0x00004000,         // Length
                        ,, , AddressRangeMemory, TypeStatic)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,         // Granularity
                        0x00100000,         // Range Minimum
                        0xFFAFFFFF,         // Range Maximum
                        0x00000000,         // Translation Offset
                        0xFFF00000,         // Length
                        ,, _Y09, AddressRangeMemory, TypeStatic)
                })
                CreateDWordField (CRES, \_SB.PCI0._CRS._Y09._MIN, RAMT)
                CreateDWordField (CRES, \_SB.PCI0._CRS._Y09._LEN, RAMR)
                Store (MEMS (), RAMT)
                Increment (RAMT)
                ShiftLeft (RAMT, 0x14, RAMT)
                Subtract (0xFFB00000, RAMT, RAMR)
                Return (CRES)
            }

            Name (PICM, Package (0x06)
            {
                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

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

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x02, 
                    \_SB.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x00, 
                    \_SB.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x01, 
                    \_SB.LNKB, 
                    0x00
                }
            })
            Method (_PRT, 0, NotSerialized)
            {
                Return (PICM)
            }

            Device (PCI1)
            {
                Name (_ADR, 0x001E0000)
                Name (PICM, Package (0x03)
                {
                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x00, 
                        \_SB.LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x00, 
                        \_SB.LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0006FFFF, 
                        0x00, 
                        \_SB.LNKB, 
                        0x00
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (PICM)
                }
            }

            Device (FIGD)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Name (_UID, 0x03)
                Method (_STA, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL, 0x08), LEqual (OSFL, 0x04)))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x07B0,             // Range Minimum
                        0x07B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x07C0,             // Range Minimum
                        0x07C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x0BB0,             // Range Minimum
                        0x0BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x0BC0,             // Range Minimum
                        0x0BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x0FB0,             // Range Minimum
                        0x0FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x0FC0,             // Range Minimum
                        0x0FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x13B0,             // Range Minimum
                        0x13B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x13C0,             // Range Minimum
                        0x13C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x17B0,             // Range Minimum
                        0x17B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x17C0,             // Range Minimum
                        0x17C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x1BB0,             // Range Minimum
                        0x1BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x1BC0,             // Range Minimum
                        0x1BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x1FB0,             // Range Minimum
                        0x1FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x1FC0,             // Range Minimum
                        0x1FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x23B0,             // Range Minimum
                        0x23B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x23C0,             // Range Minimum
                        0x23C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x27B0,             // Range Minimum
                        0x27B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x27C0,             // Range Minimum
                        0x27C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x2BB0,             // Range Minimum
                        0x2BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x2BC0,             // Range Minimum
                        0x2BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x2FB0,             // Range Minimum
                        0x2FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x2FC0,             // Range Minimum
                        0x2FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x33B0,             // Range Minimum
                        0x33B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x33C0,             // Range Minimum
                        0x33C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x37B0,             // Range Minimum
                        0x37B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x37C0,             // Range Minimum
                        0x37C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x3BB0,             // Range Minimum
                        0x3BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x3BC0,             // Range Minimum
                        0x3BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x3FB0,             // Range Minimum
                        0x3FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x3FC0,             // Range Minimum
                        0x3FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x43B0,             // Range Minimum
                        0x43B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x43C0,             // Range Minimum
                        0x43C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x47B0,             // Range Minimum
                        0x47B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x47C0,             // Range Minimum
                        0x47C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x4BB0,             // Range Minimum
                        0x4BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x4BC0,             // Range Minimum
                        0x4BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x4FB0,             // Range Minimum
                        0x4FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x4FC0,             // Range Minimum
                        0x4FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x53B0,             // Range Minimum
                        0x53B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x53C0,             // Range Minimum
                        0x53C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x57B0,             // Range Minimum
                        0x57B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x57C0,             // Range Minimum
                        0x57C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x5BB0,             // Range Minimum
                        0x5BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x5BC0,             // Range Minimum
                        0x5BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x5FB0,             // Range Minimum
                        0x5FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x5FC0,             // Range Minimum
                        0x5FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x63B0,             // Range Minimum
                        0x63B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x63C0,             // Range Minimum
                        0x63C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x67B0,             // Range Minimum
                        0x67B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x67C0,             // Range Minimum
                        0x67C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x6BB0,             // Range Minimum
                        0x6BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x6BC0,             // Range Minimum
                        0x6BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x6FB0,             // Range Minimum
                        0x6FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x6FC0,             // Range Minimum
                        0x6FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x73B0,             // Range Minimum
                        0x73B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x73C0,             // Range Minimum
                        0x73C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x77B0,             // Range Minimum
                        0x77B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x77C0,             // Range Minimum
                        0x77C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x7BB0,             // Range Minimum
                        0x7BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x7BC0,             // Range Minimum
                        0x7BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x7FB0,             // Range Minimum
                        0x7FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x7FC0,             // Range Minimum
                        0x7FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x83B0,             // Range Minimum
                        0x83B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x83C0,             // Range Minimum
                        0x83C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x87B0,             // Range Minimum
                        0x87B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x87C0,             // Range Minimum
                        0x87C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x8BB0,             // Range Minimum
                        0x8BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x8BC0,             // Range Minimum
                        0x8BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x8FB0,             // Range Minimum
                        0x8FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x8FC0,             // Range Minimum
                        0x8FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x93B0,             // Range Minimum
                        0x93B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x93C0,             // Range Minimum
                        0x93C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x97B0,             // Range Minimum
                        0x97B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x97C0,             // Range Minimum
                        0x97C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x9BB0,             // Range Minimum
                        0x9BB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x9BC0,             // Range Minimum
                        0x9BC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x9FB0,             // Range Minimum
                        0x9FB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0x9FC0,             // Range Minimum
                        0x9FC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xA3B0,             // Range Minimum
                        0xA3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xA3C0,             // Range Minimum
                        0xA3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xA7B0,             // Range Minimum
                        0xA7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xA7C0,             // Range Minimum
                        0xA7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xABB0,             // Range Minimum
                        0xABB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xABC0,             // Range Minimum
                        0xABC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xAFB0,             // Range Minimum
                        0xAFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xAFC0,             // Range Minimum
                        0xAFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xB3B0,             // Range Minimum
                        0xB3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xB3C0,             // Range Minimum
                        0xB3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xB7B0,             // Range Minimum
                        0xB7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xB7C0,             // Range Minimum
                        0xB7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xBBB0,             // Range Minimum
                        0xBBB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xBBC0,             // Range Minimum
                        0xBBC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xBFB0,             // Range Minimum
                        0xBFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xBFC0,             // Range Minimum
                        0xBFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xC3B0,             // Range Minimum
                        0xC3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xC3C0,             // Range Minimum
                        0xC3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xC7B0,             // Range Minimum
                        0xC7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xC7C0,             // Range Minimum
                        0xC7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xCBB0,             // Range Minimum
                        0xCBB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xCBC0,             // Range Minimum
                        0xCBC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xCFB0,             // Range Minimum
                        0xCFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xCFC0,             // Range Minimum
                        0xCFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xD3B0,             // Range Minimum
                        0xD3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xD3C0,             // Range Minimum
                        0xD3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xD7B0,             // Range Minimum
                        0xD7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xD7C0,             // Range Minimum
                        0xD7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xDBB0,             // Range Minimum
                        0xDBB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xDBC0,             // Range Minimum
                        0xDBC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xDFB0,             // Range Minimum
                        0xDFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xDFC0,             // Range Minimum
                        0xDFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xE3B0,             // Range Minimum
                        0xE3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xE3C0,             // Range Minimum
                        0xE3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xE7B0,             // Range Minimum
                        0xE7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xE7C0,             // Range Minimum
                        0xE7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xEBB0,             // Range Minimum
                        0xEBB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xEBC0,             // Range Minimum
                        0xEBC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xEFB0,             // Range Minimum
                        0xEFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xEFC0,             // Range Minimum
                        0xEFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xF3B0,             // Range Minimum
                        0xF3B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xF3C0,             // Range Minimum
                        0xF3C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xF7B0,             // Range Minimum
                        0xF7B0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xF7C0,             // Range Minimum
                        0xF7C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xFBB0,             // Range Minimum
                        0xFBB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xFBC0,             // Range Minimum
                        0xFBC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0xFFB0,             // Range Minimum
                        0xFFB0,             // Range Maximum
                        0x01,               // Alignment
                        0x0C,               // Length
                        )
                    IO (Decode16,
                        0xFFC0,             // Range Minimum
                        0xFFC0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                })
            }

            Device (PX41)
            {
                Name (_ADR, 0x001F0001)
                OperationRegion (IDET, PCI_Config, 0x40, 0x0C)
                Field (IDET, DWordAcc, NoLock, Preserve)
                {
                    PTM0,   1, 
                    PIE0,   1, 
                    PPE0,   1, 
                    PDT0,   1, 
                    PTM1,   1, 
                    PIE1,   1, 
                    PPE1,   1, 
                    PDT1,   1, 
                    PRCT,   2, 
                        ,   2, 
                    PISP,   2, 
                    PD1E,   1, 
                    PIDE,   1, 
                    STM0,   1, 
                    SIE0,   1, 
                    SPE0,   1, 
                    SDT0,   1, 
                    STM1,   1, 
                    SIE1,   1, 
                    SPE1,   1, 
                    SDT1,   1, 
                    SRCT,   2, 
                        ,   2, 
                    SISP,   2, 
                    SD1E,   1, 
                    SIDE,   1, 
                    PRC1,   2, 
                    PIS1,   2, 
                    SRC1,   2, 
                    SIS1,   2, 
                            Offset (0x06), 
                            Offset (0x07), 
                            Offset (0x08), 
                    PDMA,   2, 
                    SDM0,   1, 
                    SDM1,   1, 
                            Offset (0x09), 
                            Offset (0x0A), 
                    PCT0,   2, 
                        ,   2, 
                    PCT1,   2, 
                            Offset (0x0B), 
                    SCT0,   2, 
                        ,   2, 
                    SCT1,   2, 
                            Offset (0x0C)
                }

                OperationRegion (IDEC, PCI_Config, 0x54, 0x04)
                Field (IDEC, DWordAcc, NoLock, Preserve)
                {
                    PCB0,   1, 
                    PCB1,   1, 
                    SCB0,   1, 
                    SCB1,   1, 
                    PMCC,   1, 
                    PSCC,   1, 
                    SMCC,   1, 
                    SSCC,   1, 
                        ,   2, 
                        ,   1, 
                        ,   1, 
                    PFP0,   1, 
                    PFP1,   1, 
                    SFP0,   1, 
                    SFP1,   1, 
                    PMSG,   2, 
                    SESG,   2
                }

                Name (PIOT, Package (0x05)
                {
                    0x0258, 
                    0x017C, 
                    0xF0, 
                    0xB4, 
                    0x78
                })
                Name (UDMT, Package (0x06)
                {
                    0x78, 
                    0x50, 
                    0x3C, 
                    0x2D, 
                    0x1E, 
                    0x14
                })
                Name (IDTL, Package (0x05)
                {
                    0x00, 
                    0x02, 
                    0x02, 
                    0x07, 
                    0x07
                })
                Name (IDTH, Package (0x05)
                {
                    0x80, 
                    0x80, 
                    0x81, 
                    0x92, 
                    0xA3
                })
                Name (BU00, Buffer (0x14)
                {
                    /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0010 */    0x00, 0x00, 0x00, 0x00
                })
                CreateDWordField (BU00, 0x00, PIO0)
                CreateDWordField (BU00, 0x04, DMA0)
                CreateDWordField (BU00, 0x08, PIO1)
                CreateDWordField (BU00, 0x0C, DMA1)
                CreateDWordField (BU00, 0x10, FLAG)
                Method (CVDR, 3, NotSerialized)
                {
                    Name (GTF0, Buffer (0x0E)
                    {
                        /* 0000 */    0x03, 0x42, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x03, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                    })
                    Name (GTF1, Buffer (0x07)
                    {
                        0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                    })
                    If (LEqual (Arg1, 0x0F))
                    {
                        CreateByteField (GTF1, 0x01, MDP1)
                        CreateByteField (GTF1, 0x05, DRP1)
                        Add (Arg0, 0x08, MDP1)
                        Store (Arg2, DRP1)
                        Return (GTF1)
                    }
                    Else
                    {
                        CreateByteField (GTF0, 0x01, MDUD)
                        CreateByteField (GTF0, 0x05, DRUD)
                        CreateByteField (GTF0, 0x08, MDPI)
                        CreateByteField (GTF0, 0x0C, DRPI)
                        Add (Arg0, 0x08, MDPI)
                        Store (Arg2, DRPI)
                        Or (Arg1, 0x40, MDUD)
                        Store (Arg2, DRUD)
                        If (LEqual (Arg0, HEPI)) {}
                        Return (GTF0)
                    }
                }

                Method (SFC1, 4, NotSerialized)
                {
                    Store (Arg0, Local0)
                    Store (Arg1, Local1)
                    Store (Arg2, Local2)
                    Store (Arg3, Local3)
                    Store (0x01, \_SB.PCI0.PX41.SIDE)
                    If (LAnd (LGreaterEqual (Local2, 0x0F), LGreaterEqual (Local3, 0x0F)))
                    {
                        Store (Zero, \_SB.PCI0.PX41.SD1E)
                    }
                    Else
                    {
                        Store (One, \_SB.PCI0.PX41.SD1E)
                    }

                    If (LLessEqual (Local0, 0x02))
                    {
                        Store (Zero, \_SB.PCI0.PX41.SISP)
                    }
                    Else
                    {
                        If (LEqual (Local0, 0x03))
                        {
                            Store (One, \_SB.PCI0.PX41.SISP)
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x04))
                            {
                                Store (0x02, \_SB.PCI0.PX41.SISP)
                            }
                        }
                    }

                    If (LNotEqual (Local0, 0x0F))
                    {
                        If (LEqual (Local0, 0x00))
                        {
                            Store (0x00, \_SB.PCI0.PX41.SRCT)
                        }
                        Else
                        {
                            Subtract (Local0, 0x01, \_SB.PCI0.PX41.SRCT)
                        }

                        If (Local0)
                        {
                            Store (One, \_SB.PCI0.PX41.SIE0)
                        }

                        If (LGreaterEqual (Local0, 0x03))
                        {
                            Store (One, \_SB.PCI0.PX41.STM0)
                            Store (One, \_SB.PCI0.PX41.SPE0)
                        }
                    }

                    If (\_SB.PCI0.PX41.SD1E)
                    {
                        If (LGreaterEqual (Local2, 0x03))
                        {
                            Store (One, \_SB.PCI0.PX41.STM1)
                            Store (One, \_SB.PCI0.PX41.SPE1)
                        }

                        If (LLessEqual (Local2, 0x02))
                        {
                            Store (Zero, \_SB.PCI0.PX41.SIS1)
                        }
                        Else
                        {
                            If (LEqual (Local2, 0x03))
                            {
                                Store (One, \_SB.PCI0.PX41.SIS1)
                            }
                            Else
                            {
                                If (LEqual (Local2, 0x04))
                                {
                                    Store (0x02, \_SB.PCI0.PX41.SIS1)
                                }
                            }
                        }

                        If (LEqual (Local2, 0x00))
                        {
                            Store (0x00, \_SB.PCI0.PX41.SRC1)
                        }
                        Else
                        {
                            Subtract (Local2, 0x01, \_SB.PCI0.PX41.SRC1)
                        }
                    }

                    If (LNotEqual (Local1, 0x0F))
                    {
                        If (LLessEqual (Local1, 0x02))
                        {
                            Store (Local1, \_SB.PCI0.PX41.SCT0)
                        }
                        Else
                        {
                            If (LLessEqual (Local1, 0x04))
                            {
                                Store (0x01, \_SB.PCI0.PX41.SCB0)
                                Subtract (Local1, 0x02, \_SB.PCI0.PX41.SCT0)
                            }
                        }
                    }

                    If (LEqual (Local1, 0x0F))
                    {
                        Store (Zero, \_SB.PCI0.PX41.SDM0)
                    }
                    Else
                    {
                        Store (One, \_SB.PCI0.PX41.SDM0)
                    }

                    If (LLessEqual (Local3, 0x02))
                    {
                        Store (Local1, \_SB.PCI0.PX41.SCT1)
                    }
                    Else
                    {
                        If (LLessEqual (Local3, 0x04))
                        {
                            Store (0x01, \_SB.PCI0.PX41.SCB1)
                            Subtract (Local3, 0x02, \_SB.PCI0.PX41.SCT1)
                        }
                    }

                    If (LEqual (Local3, 0x0F))
                    {
                        Store (Zero, \_SB.PCI0.PX41.SDM1)
                    }
                    Else
                    {
                        Store (One, \_SB.PCI0.PX41.SDM1)
                    }
                }

                Device (CHN0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store (0xFFFFFFFF, PIO0)
                        Store (0xFFFFFFFF, PIO1)
                        Store (0xFFFFFFFF, DMA0)
                        Store (0xFFFFFFFF, DMA1)
                        Store (0x10, FLAG)
                        If (LNotEqual (HCPI, 0x0F))
                        {
                            Or (FLAG, 0x02, FLAG)
                            Store (DerefOf (Index (PIOT, HCPI)), PIO0)
                            Store (DerefOf (Index (PIOT, HCPI)), DMA0)
                        }

                        If (LNotEqual (HDPI, 0x0F))
                        {
                            Or (FLAG, 0x08, FLAG)
                            Store (DerefOf (Index (PIOT, HDPI)), PIO1)
                            Store (DerefOf (Index (PIOT, HDPI)), DMA1)
                        }

                        If (LNotEqual (HCUD, 0x0F))
                        {
                            Store (DerefOf (Index (UDMT, HCUD)), DMA0)
                            Or (FLAG, 0x01, FLAG)
                        }

                        If (LNotEqual (HDUD, 0x0F))
                        {
                            Store (DerefOf (Index (UDMT, HDUD)), DMA1)
                            Or (FLAG, 0x04, FLAG)
                        }

                        Return (BU00)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        CreateDWordField (Arg0, 0x00, PPIO)
                        CreateDWordField (Arg0, 0x04, PDMA)
                        CreateDWordField (Arg0, 0x08, SPIO)
                        CreateDWordField (Arg0, 0x0C, SDMA)
                        CreateDWordField (Arg0, 0x10, PFLG)
                        Store (Match (PIOT, MLE, PPIO, MTR, 0x00, 0x00), Local0)
                        Store (Match (UDMT, MLE, PDMA, MTR, 0x00, 0x00), Local1)
                        Store (Match (PIOT, MLE, SPIO, MTR, 0x00, 0x00), Local2)
                        Store (Match (UDMT, MLE, SDMA, MTR, 0x00, 0x00), Local3)
                        Store (0x01, \_SB.PCI0.PX41.PIDE)
                        If (LAnd (LEqual (Local2, Ones), LEqual (Local3, Ones)))
                        {
                            Store (Zero, \_SB.PCI0.PX41.PD1E)
                        }
                        Else
                        {
                            Store (One, \_SB.PCI0.PX41.PD1E)
                        }

                        If (LLessEqual (Local0, 0x02))
                        {
                            Store (Zero, \_SB.PCI0.PX41.PISP)
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x03))
                            {
                                Store (One, \_SB.PCI0.PX41.PISP)
                            }
                            Else
                            {
                                Store (0x02, \_SB.PCI0.PX41.PISP)
                            }
                        }

                        If (LEqual (Local0, 0x00))
                        {
                            Store (0x00, \_SB.PCI0.PX41.PRCT)
                        }
                        Else
                        {
                            Subtract (Local0, 0x01, \_SB.PCI0.PX41.PRCT)
                        }

                        If (Local0)
                        {
                            Store (One, \_SB.PCI0.PX41.PIE0)
                        }

                        If (LGreaterEqual (Local0, 0x03))
                        {
                            Store (One, \_SB.PCI0.PX41.PTM0)
                            Store (One, \_SB.PCI0.PX41.PPE0)
                        }

                        If (\_SB.PCI0.PX41.PD1E)
                        {
                            If (LLessEqual (Local2, 0x02))
                            {
                                Store (Zero, \_SB.PCI0.PX41.PIS1)
                            }
                            Else
                            {
                                If (LEqual (Local2, 0x03))
                                {
                                    Store (One, \_SB.PCI0.PX41.PIS1)
                                }
                                Else
                                {
                                    Store (0x02, \_SB.PCI0.PX41.PIS1)
                                }
                            }

                            If (LEqual (Local2, 0x00))
                            {
                                Store (0x00, \_SB.PCI0.PX41.PRC1)
                            }
                            Else
                            {
                                Subtract (Local2, 0x01, \_SB.PCI0.PX41.PRC1)
                            }
                        }

                        If (And (PFLG, 0x01))
                        {
                            Store (One, \_SB.PCI0.PX41.PDMA)
                        }

                        If (And (PFLG, 0x04))
                        {
                            Or (\_SB.PCI0.PX41.PDMA, 0x02, \_SB.PCI0.PX41.PDMA)
                        }

                        If (LLessEqual (Local1, 0x02))
                        {
                            Store (0x00, \_SB.PCI0.PX41.PCB0)
                            Store (0x00, \_SB.PCI0.PX41.PFP0)
                            Store (Local1, \_SB.PCI0.PX41.PCT0)
                        }
                        Else
                        {
                            If (LLessEqual (Local1, 0x04))
                            {
                                Store (0x01, \_SB.PCI0.PX41.PCB0)
                                Store (0x00, \_SB.PCI0.PX41.PFP0)
                                Subtract (Local1, 0x02, \_SB.PCI0.PX41.PCT0)
                            }
                            Else
                            {
                                Store (0x00, \_SB.PCI0.PX41.PCB0)
                                Store (0x01, \_SB.PCI0.PX41.PFP0)
                                Store (0x01, \_SB.PCI0.PX41.PCT0)
                            }
                        }

                        If (LNotEqual (Local2, Ones))
                        {
                            If (LLessEqual (Local3, 0x02))
                            {
                                Store (0x00, \_SB.PCI0.PX41.PCB1)
                                Store (0x00, \_SB.PCI0.PX41.PFP1)
                                Store (Local1, \_SB.PCI0.PX41.PCT1)
                            }
                            Else
                            {
                                If (LLessEqual (Local3, 0x04))
                                {
                                    Store (0x01, \_SB.PCI0.PX41.PCB1)
                                    Store (0x00, \_SB.PCI0.PX41.PFP1)
                                    Subtract (Local3, 0x02, \_SB.PCI0.PX41.PCT1)
                                }
                                Else
                                {
                                    Store (0x00, \_SB.PCI0.PX41.PCB1)
                                    Store (0x01, \_SB.PCI0.PX41.PFP1)
                                    Store (0x01, \_SB.PCI0.PX41.PCT1)
                                }
                            }
                        }
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (CVDR (HCPI, HCUD, 0xA0))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store (0x78, PIO0)
                        Store (0x78, PIO1)
                        Store (0x28, DMA0)
                        Store (0x28, DMA1)
                        Store (0x1A, FLAG)
                        Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                        Store (\_SB.PCI0.PX40.ECRD (0x78), Local0)
                        Release (\_SB.PCI0.PX40.MTXE)
                        If (And (Local0, 0x04))
                        {
                            Return (BU00)
                        }

                        Store (0x10, FLAG)
                        If (LNotEqual (HEPI, 0x0F))
                        {
                            Or (FLAG, 0x02, FLAG)
                            Store (DerefOf (Index (PIOT, HEPI)), PIO0)
                            Store (DerefOf (Index (PIOT, HEPI)), DMA0)
                        }

                        If (LNotEqual (HFPI, 0x0F))
                        {
                            Or (FLAG, 0x08, FLAG)
                            Store (DerefOf (Index (PIOT, HFPI)), PIO1)
                            Store (DerefOf (Index (PIOT, HFPI)), DMA1)
                        }

                        If (LNotEqual (HEUD, 0x0F))
                        {
                            Store (DerefOf (Index (UDMT, HEUD)), DMA0)
                            Or (FLAG, 0x01, FLAG)
                        }

                        If (LNotEqual (HFUD, 0x0F))
                        {
                            Store (DerefOf (Index (UDMT, HFUD)), DMA1)
                            Or (FLAG, 0x04, FLAG)
                        }

                        Return (BU00)
                    }

                    Method (S_TM, 3, NotSerialized)
                    {
                        Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                        Store (\_SB.PCI0.PX40.ECRD (0x78), Local0)
                        Release (\_SB.PCI0.PX40.MTXE)
                        If (LNot (And (Local0, 0x04)))
                        {
                            Return (0x00)
                        }

                        CreateDWordField (Arg0, 0x00, PPIO)
                        CreateDWordField (Arg0, 0x04, PDMA)
                        CreateDWordField (Arg0, 0x08, SPIO)
                        CreateDWordField (Arg0, 0x0C, SDMA)
                        CreateDWordField (Arg0, 0x10, PFLG)
                        Store (Match (PIOT, MEQ, PPIO, MTR, 0x00, 0x00), Local0)
                        Store (Match (UDMT, MEQ, PDMA, MTR, 0x00, 0x00), Local1)
                        Store (Match (PIOT, MEQ, SPIO, MTR, 0x00, 0x00), Local2)
                        Store (Match (UDMT, MEQ, SDMA, MTR, 0x00, 0x00), Local3)
                        SFC1 (Local0, Local1, Local2, Local3)
                        If (LAnd (PFLG, 0x01))
                        {
                            Store (One, \_SB.PCI0.PX41.SDM0)
                        }

                        If (LAnd (PFLG, 0x04))
                        {
                            Store (One, \_SB.PCI0.PX41.SDM1)
                        }
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_EJ0, 1, NotSerialized)
                        {
                            Store (0x01, \_SB.PCI0.PX41.SESG)
                            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                            \_SB.PCI0.PX40.ECWR (0x05, 0x2A)
                            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                            Release (\_SB.PCI0.PX40.MTXE)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Add (HEPI, HEUD, Local0)
                            If (LEqual (Local0, 0x1E))
                            {
                                Return (0x0D)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }

                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (CVDR (HEPI, HEUD, 0xA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_EJ0, 1, NotSerialized)
                        {
                            Store (0x01, \_SB.PCI0.PX41.SESG)
                            Acquire (\_SB.PCI0.PX40.MTXE, 0xFFFF)
                            \_SB.PCI0.PX40.ECWR (0x05, 0x2A)
                            \_SB.PCI0.PX40.ECWR (0x04, 0xC5)
                            Release (\_SB.PCI0.PX40.MTXE)
                        }

                        Method (_STA, 0, NotSerialized)
                        {
                            Add (HFPI, HFUD, Local0)
                            If (LEqual (Local0, 0x1E))
                            {
                                Return (0x0D)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }

                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (CVDR (HFPI, HFUD, 0xB0))
                        }
                    }
                }
            }

            Device (PX40)
            {
                Name (_ADR, 0x001F0000)
                OperationRegion (REVI, PCI_Config, 0x08, 0x01)
                Field (REVI, ByteAcc, NoLock, Preserve)
                {
                    REVN,   8
                }

                OperationRegion (BCTL, PCI_Config, 0x4E, 0x01)
                Field (BCTL, ByteAcc, NoLock, Preserve)
                {
                    BIWE,   1
                }

                OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C)
                Field (PIRQ, ByteAcc, NoLock, Preserve)
                {
                    PIRA,   8, 
                    PIRB,   8, 
                    PIRC,   8, 
                    PIRD,   8, 
                            Offset (0x08), 
                    PIRE,   8, 
                    PIRF,   8, 
                    PIRG,   8, 
                    PIRH,   8
                }

                OperationRegion (LPDC, PCI_Config, 0xE0, 0x08)
                Field (LPDC, ByteAcc, NoLock, Preserve)
                {
                    UADR,   2, 
                        ,   2, 
                    UBDR,   2, 
                            Offset (0x01), 
                    LPDR,   2, 
                        ,   2, 
                    FDDR,   1, 
                            Offset (0x02), 
                    SBDR,   2, 
                        ,   1, 
                    MDDR,   1, 
                    MSDR,   2, 
                            Offset (0x03), 
                    C0DR,   1, 
                    C8DR,   1, 
                    D0DR,   1, 
                    D8DR,   1, 
                    E0DR,   1, 
                    E8DR,   1, 
                    F0DR,   1, 
                    F8DR,   1, 
                            Offset (0x06), 
                    UALE,   1, 
                    UBLE,   1, 
                    LPLE,   1, 
                    FDLE,   1, 
                    SBLE,   1, 
                    MDLE,   1, 
                    MSLE,   1, 
                    ADLE,   1, 
                    GLLE,   1, 
                    GHLE,   1, 
                    KBLE,   1, 
                    MCLE,   1, 
                    C1LE,   1, 
                    C2LE,   1, 
                            Offset (0x08)
                }

                Mutex (MTXE, 0x04)
                OperationRegion (K62P, SystemIO, 0x62, 0x01)
                Field (K62P, ByteAcc, NoLock, Preserve)
                {
                    EC62,   8
                }

                OperationRegion (K66P, SystemIO, 0x66, 0x01)
                Field (K66P, ByteAcc, NoLock, Preserve)
                {
                    EC66,   8
                }

                Method (RWK, 0, NotSerialized)
                {
                    If (LAnd (LNotEqual (ECMD, Zero), LEqual (DDUG, 0x55)))
                    {
                        ECWR (0x05, ECD1)
                        ECWR (0x04, ECMD)
                        Store (ECRD (0x05), ECD1)
                        Store (Zero, ECMD)
                    }
                }

                Method (RBQ, 0, NotSerialized)
                {
                    If (LEqual (DDUG, 0x55))
                    {
                        Store (RBAT (0x05, 0x00), QLMD)
                        Store (RBAT (0x12, 0x00), QVSR)
                        Store (RBAT (0x03, 0x00), QNAC)
                    }
                }

                Method (RTMP, 0, NotSerialized)
                {
                    If (LEqual (DDUG, 0x55))
                    {
                        Store (RBYT (0x98, 0x01), CTMP)
                    }
                }

                Method (WEIE, 0, NotSerialized)
                {
                    Store (0x4000, Local0)
                    And (EC66, 0x02, Local1)
                    While (LAnd (LNotEqual (Local0, Zero), LEqual (Local1, 0x02)))
                    {
                        And (EC66, 0x02, Local1)
                        Decrement (Local0)
                    }
                }

                Method (WEOF, 0, NotSerialized)
                {
                    Store (0x4000, Local0)
                    And (EC66, 0x01, Local1)
                    While (LAnd (LNotEqual (Local0, Zero), LEqual (Local1, 0x00)))
                    {
                        And (EC66, 0x01, Local1)
                        Decrement (Local0)
                    }
                }

                Method (ECRD, 1, NotSerialized)
                {
                    Store (Zero, KSCE)
                    WEIE ()
                    Store (0x80, EC66)
                    WEIE ()
                    Store (Arg0, EC62)
                    WEOF ()
                    Store (EC62, Local0)
                    While (GI0C)
                    {
                        Store (One, GI0C)
                    }

                    Store (One, KSCE)
                    Return (Local0)
                }

                Method (ECWR, 2, NotSerialized)
                {
                    Store (Zero, KSCE)
                    WEIE ()
                    Store (0x81, EC66)
                    WEIE ()
                    Store (Arg0, EC62)
                    WEIE ()
                    Store (Arg1, EC62)
                    WEIE ()
                    While (GI0C)
                    {
                        Store (One, GI0C)
                    }

                    Store (One, KSCE)
                }

                Method (ECQR, 0, NotSerialized)
                {
                    Store (Zero, KSCE)
                    WEIE ()
                    Store (0x84, EC66)
                    WEIE ()
                    WEOF ()
                    Store (EC62, Local0)
                    While (GI0C)
                    {
                        Store (One, GI0C)
                    }

                    Store (One, KSCE)
                    Return (Local0)
                }

                Method (ECRP, 1, NotSerialized)
                {
                    ECWR (0x05, Arg0)
                    ECWR (0x04, 0xC3)
                    Return (ECRD (0x05))
                }

                Method (BTUN, 0, NotSerialized)
                {
                    Acquire (MTXE, 0xFFFF)
                    If (LAnd (LEqual (LCDP, One), LNot (And (ECRD (0x78), 0x10
                        ))))
                    {
                        Store (0x04, Local1)
                    }
                    Else
                    {
                        Store (0x05, Local1)
                    }

                    Multiply (BRIT, Local1, Local0)
                    ECWR (0x05, Local0)
                    ECWR (0x06, 0xD0)
                    ECWR (0x04, 0xDA)
                    Release (MTXE)
                }

                Method (Q31, 0, NotSerialized)
                {
                    Acquire (MTXE, 0xFFFF)
                    Store (ECRD (0x51), Local0)
                    XOr (Local0, 0x10, Local0)
                    ECWR (0x51, Local0)
                    Release (MTXE)
                    Notify (\_SB.BAT0, 0x00)
                    Notify (\_SB.BAT0, 0x80)
                }

                Method (Q34, 0, NotSerialized)
                {
                    BTUN ()
                    Store (0x03, ACIO)
                    Acquire (MTXE, 0xFFFF)
                    Store (ECRD (0x54), Local0)
                    XOr (Local0, 0x10, Local0)
                    ECWR (0x54, Local0)
                    And (ECRD (0x78), 0x10, Local0)
                    If (Local0)
                    {
                        Notify (\_SB.HOTK, 0x58)
                    }
                    Else
                    {
                        Notify (\_SB.HOTK, 0x57)
                    }

                    Release (MTXE)
                    Notify (\_SB.AC, 0x80)
                }

                Method (Q32, 0, NotSerialized)
                {
                    Acquire (MTXE, 0xFFFF)
                    Store (ECRD (0x52), Local0)
                    XOr (Local0, 0x10, Local0)
                    ECWR (0x52, Local0)
                    Release (MTXE)
                    \_SB.DRST ()
                }

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

                Method (Q33, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x50)
                }

                Method (Q36, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x51)
                }

                Method (Q2E, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x52)
                }

                Method (Q2F, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x53)
                }

                Method (Q0D, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x45)
                }

                Method (Q0E, 0, NotSerialized)
                {
                    If (BRIT)
                    {
                        Decrement (BRIT)
                        BTUN ()
                    }

                    Notify (\_SB.HOTK, Add (BRIT, 0x20))
                }

                Method (Q0F, 0, NotSerialized)
                {
                    If (LLess (BRIT, 0x0F))
                    {
                        Increment (BRIT)
                        BTUN ()
                    }

                    Notify (\_SB.HOTK, Add (BRIT, 0x10))
                }

                Method (Q10, 0, NotSerialized)
                {
                    Acquire (MTXE, 0xFFFF)
                    If (PNOF)
                    {
                        Store (0x00, Local0)
                    }
                    Else
                    {
                        If (LAnd (LEqual (LCDP, One), LNot (And (ECRD (0x78), 0x10
                            ))))
                        {
                            Store (0x04, Local1)
                        }
                        Else
                        {
                            Store (0x05, Local1)
                        }

                        Multiply (BRIT, Local1, Local0)
                    }

                    ECWR (0x05, Local0)
                    ECWR (0x06, 0xD0)
                    ECWR (0x04, 0xDA)
                    Release (MTXE)
                    XOr (PNOF, 0x01, PNOF)
                    Subtract (0x34, PNOF, Local0)
                    Notify (\_SB.HOTK, Local0)
                }

                Method (Q11, 0, NotSerialized)
                {
                    If (LEqual (\_SB.PCI0.VID0.DOSD, 0x01))
                    {
                        Store (0x90, TRTY)
                        Store (0x06, VFUN)
                        Store (0x00, ESMI)
                        Notify (\_SB.PCI0.VID0, 0x81)
                    }
                    Else
                    {
                        Store (0x90, TRTY)
                        Store (0x02, VFUN)
                        Store (0x00, ESMI)
                        If (LNotEqual (CADL, PADL))
                        {
                            Notify (\_SB.PCI0.VID0, 0x00)
                            Sleep (0x03E8)
                        }

                        If (ENUM)
                        {
                            Store (0x90, TRTY)
                            Store (0x07, VFUN)
                            Store (0x00, ESMI)
                            Notify (\_SB.PCI0.VID0, 0x80)
                        }
                    }
                }

                Method (Q12, 0, NotSerialized)
                {
                }

                Method (Q01, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x52)
                }

                Method (Q02, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x53)
                }

                Method (Q03, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x54)
                }

                Method (Q04, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x55)
                }

                Method (Q05, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x56)
                }

                Method (Q0C, 0, NotSerialized)
                {
                }

                Method (Q13, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x32)
                }

                Method (Q14, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x31)
                }

                Method (Q15, 0, NotSerialized)
                {
                    Notify (\_SB.HOTK, 0x30)
                }

                Device (SYS1)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x01)
                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF1, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0010,             // Range Minimum
                                0x0010,             // Range Maximum
                                0x00,               // Alignment
                                0x10,               // Length
                                )
                            IO (Decode16,
                                0x0022,             // Range Minimum
                                0x0022,             // Range Maximum
                                0x00,               // Alignment
                                0x0C,               // Length
                                )
                            IO (Decode16,
                                0x0030,             // Range Minimum
                                0x0030,             // Range Maximum
                                0x00,               // Alignment
                                0x10,               // Length
                                )
                            IO (Decode16,
                                0x0044,             // Range Minimum
                                0x0044,             // Range Maximum
                                0x00,               // Alignment
                                0x1C,               // Length
                                )
                            IO (Decode16,
                                0x0067,             // Range Minimum
                                0x0067,             // Range Maximum
                                0x00,               // Alignment
                                0x09,               // Length
                                )
                            IO (Decode16,
                                0x0074,             // Range Minimum
                                0x0074,             // Range Maximum
                                0x00,               // Alignment
                                0x0C,               // Length
                                )
                            IO (Decode16,
                                0x0091,             // Range Minimum
                                0x0091,             // Range Maximum
                                0x00,               // Alignment
                                0x03,               // Length
                                )
                            IO (Decode16,
                                0x00A2,             // Range Minimum
                                0x00A2,             // Range Maximum
                                0x00,               // Alignment
                                0x1E,               // Length
                                )
                            IO (Decode16,
                                0x00E0,             // Range Minimum
                                0x00E0,             // Range Maximum
                                0x00,               // Alignment
                                0x10,               // Length
                                )
                            IO (Decode16,
                                0x03F0,             // Range Minimum
                                0x03F0,             // Range Maximum
                                0x00,               // Alignment
                                0x02,               // Length
                                )
                            IO (Decode16,
                                0x04D0,             // Range Minimum
                                0x04D0,             // Range Maximum
                                0x00,               // Alignment
                                0x02,               // Length
                                )
                            IO (Decode16,
                                0x0600,             // Range Minimum
                                0x0600,             // Range Maximum
                                0x00,               // Alignment
                                0x20,               // Length
                                )
                            IO (Decode16,
                                0x077B,             // Range Minimum
                                0x077B,             // Range Maximum
                                0x00,               // Alignment
                                0x05,               // Length
                                )
                            IO (Decode16,
                                0xE800,             // Range Minimum
                                0xE800,             // Range Maximum
                                0x00,               // Alignment
                                0x20,               // Length
                                )
                            IO (Decode16,
                                0xFE00,             // Range Minimum
                                0xFE00,             // Range Maximum
                                0x00,               // Alignment
                                0x02,               // Length
                                )
                            Memory32Fixed (ReadOnly,
                                0xFFB80000,         // Address Base
                                0x00080000,         // Address Length
                                )
                            Memory32Fixed (ReadOnly,
                                0xFFF80000,         // Address Base
                                0x00080000,         // Address Length
                                )
                        })
                        Return (BUF1)
                    }
                }

                Device (SYS2)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x02)
                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF1, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0xE400,             // Range Minimum
                                0xE400,             // Range Maximum
                                0x01,               // Alignment
                                0x80,               // Length
                                )
                            IO (Decode16,
                                0xEC00,             // Range Minimum
                                0xEC00,             // Range Maximum
                                0x01,               // Alignment
                                0x40,               // Length
                                )
                        })
                        Return (BUF1)
                    }
                }

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

                Device (DMA1)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        DMA (Compatibility, BusMaster, Transfer8, )
                            {4}
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x11,               // Length
                            )
                        IO (Decode16,
                            0x0094,             // Range Minimum
                            0x0094,             // Range Maximum
                            0x01,               // Alignment
                            0x0C,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                    })
                }

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

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

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

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

                OperationRegion (N393, SystemIO, 0x2E, 0x02)
                Field (N393, ByteAcc, NoLock, Preserve)
                {
                    NIDX,   8, 
                    NDAT,   8
                }

                IndexField (NIDX, NDAT, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x07), 
                    LDNM,   8, 
                            Offset (0x26), 
                    FDCD,   1, 
                    LPTD,   1, 
                    IRD,    1, 
                    COMD,   1, 
                            Offset (0x30), 
                    ACTR,   8, 
                            Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    IOBH,   8, 
                    IOBL,   8, 
                            Offset (0x70), 
                    INTR,   8, 
                    INTP,   8, 
                            Offset (0x74), 
                    DMCH,   8, 
                    DMCL,   8, 
                            Offset (0xF0), 
                    OPT1,   8, 
                    OPT2,   8
                }

                Method (GSTA, 1, NotSerialized)
                {
                    Store (Arg0, LDNM)
                    If (ACTR)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x0D)
                    }
                }

                Method (GDIS, 1, NotSerialized)
                {
                    Store (Arg0, LDNM)
                    Store (0x00, ACTR)
                }

                Name (COMR, Package (0x08)
                {
                    0x03F8, 
                    0x02F8, 
                    0x0220, 
                    0x0228, 
                    0x0238, 
                    0x02E8, 
                    0x0338, 
                    0x03E8
                })
                Device (MOUE)
                {
                    Name (_HID, EisaId ("PNP0F13"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0060,             // Range Minimum
                                0x0060,             // Range Maximum
                                0x01,               // Alignment
                                0x01,               // Length
                                )
                            IO (Decode16,
                                0x0064,             // Range Minimum
                                0x0064,             // Range Maximum
                                0x01,               // Alignment
                                0x01,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {1}
                        })
                        Return (BUF0)
                    }
                }

                Device (FDC0)
                {
                    Name (_HID, EisaId ("PNP0700"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (0x00, LDNM)
                        If (ACTR)
                        {
                            If (FDCD)
                            {
                                Return (0x0D)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (One, FDCD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x03F2,             // Range Minimum
                                0x03F2,             // Range Maximum
                                0x00,               // Alignment
                                0x04,               // Length
                                )
                            IO (Decode16,
                                0x03F7,             // Range Minimum
                                0x03F7,             // Range Maximum
                                0x00,               // Alignment
                                0x01,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, _Y0A)
                                {6}
                            DMA (Compatibility, NotBusMaster, Transfer8, _Y0B)
                                {2}
                        })
                        CreateWordField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y0A._INT, IRQW)
                        CreateByteField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y0B._DMA, DMAV)
                        Store (Zero, LDNM)
                        Store (One, Local0)
                        ShiftLeft (Local0, INTR, IRQW)
                        Store (One, Local0)
                        ShiftLeft (Local0, DMCH, DMAV)
                        Return (BUF0)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x03F2,             // Range Minimum
                            0x03F2,             // Range Maximum
                            0x00,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x03F7,             // Range Minimum
                            0x03F7,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {6}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {2}
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x11, IRQW)
                        CreateByteField (Arg0, 0x15, DMAV)
                        Store (Zero, LDNM)
                        Store (IOHI, IOAH)
                        Store (IOLO, IOAL)
                        FindSetRightBit (IRQW, Local0)
                        Decrement (Local0)
                        Store (Local0, INTR)
                        FindSetRightBit (DMAV, Local0)
                        Decrement (Local0)
                        Store (Local0, DMCH)
                        Store (One, ACTR)
                        Store (Zero, FDCD)
                    }
                }

                Device (LPT)
                {
                    Name (_HID, EisaId ("PNP0400"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (0x01, LDNM)
                        If (ACTR)
                        {
                            If (LEqual (DMCH, 0x04))
                            {
                                If (LPTD)
                                {
                                    Return (0x0D)
                                }
                                Else
                                {
                                    Return (0x0F)
                                }
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (One, LPTD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF5, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0378,             // Range Minimum
                                0x0378,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                _Y0C)
                            IRQ (Edge, ActiveHigh, Exclusive, _Y0D)
                                {7}
                        })
                        CreateByteField (BUF5, \_SB.PCI0.PX40.LPT._CRS._Y0C._MIN, IOLO)
                        CreateByteField (BUF5, 0x03, IOHI)
                        CreateByteField (BUF5, \_SB.PCI0.PX40.LPT._CRS._Y0C._MAX, IORL)
                        CreateByteField (BUF5, 0x05, IORH)
                        CreateByteField (BUF5, \_SB.PCI0.PX40.LPT._CRS._Y0C._LEN, IOLN)
                        CreateWordField (BUF5, \_SB.PCI0.PX40.LPT._CRS._Y0D._INT, IRQW)
                        Store (0x01, LDNM)
                        Store (IOAL, IOLO)
                        Store (IOAL, IORL)
                        Store (IOAH, IOHI)
                        Store (IOAH, IORH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        If (LEqual (Local0, 0x03BC))
                        {
                            Store (0x04, IOLN)
                        }

                        Store (One, Local0)
                        ShiftLeft (Local0, INTR, IRQW)
                        Return (BUF5)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x0378,             // Range Minimum
                                0x0378,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x0278,             // Range Minimum
                                0x0278,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03BC,             // Range Minimum
                                0x03BC,             // Range Maximum
                                0x00,               // Alignment
                                0x04,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x09, IRQW)
                        Store (0x01, LDNM)
                        Store (IOLO, IOAL)
                        Store (IOHI, IOAH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        FindSetRightBit (IRQW, Local0)
                        Decrement (Local0)
                        Store (Local0, INTR)
                        Store (0x02, INTP)
                        Store (One, ACTR)
                        Store (Zero, LPTD)
                    }
                }

                Device (ECP)
                {
                    Name (_HID, EisaId ("PNP0401"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (0x01, LDNM)
                        If (ACTR)
                        {
                            If (LEqual (DMCH, 0x04))
                            {
                                Return (0x00)
                            }
                            Else
                            {
                                If (LPTD)
                                {
                                    Return (0x0D)
                                }
                                Else
                                {
                                    Return (0x0F)
                                }
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (One, LPTD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF6, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0378,             // Range Minimum
                                0x0378,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                _Y0E)
                            IO (Decode16,
                                0x0778,             // Range Minimum
                                0x0778,             // Range Maximum
                                0x00,               // Alignment
                                0x03,               // Length
                                _Y0F)
                            IRQ (Edge, ActiveHigh, Exclusive, _Y10)
                                {7}
                            DMA (Compatibility, NotBusMaster, Transfer8, _Y11)
                                {1}
                        })
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y0E._MIN, IOLO)
                        CreateByteField (BUF6, 0x03, IOHI)
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y0E._MAX, IORL)
                        CreateByteField (BUF6, 0x05, IORH)
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y0E._LEN, IOLN)
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y0F._MIN, I2LO)
                        CreateByteField (BUF6, 0x0B, I2HI)
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y0F._MAX, I2RL)
                        CreateByteField (BUF6, 0x0D, I2RH)
                        CreateWordField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y10._INT, IRQW)
                        CreateByteField (BUF6, \_SB.PCI0.PX40.ECP._CRS._Y11._DMA, DMAC)
                        Store (0x01, LDNM)
                        Store (IOAL, IOLO)
                        Store (IOLO, IORL)
                        Store (IOLO, I2LO)
                        Store (IOLO, I2RL)
                        Store (IOAH, IOHI)
                        Store (IOHI, IORH)
                        Add (IOHI, 0x04, I2HI)
                        Add (IOHI, 0x04, I2RH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        If (LEqual (Local0, 0x03BC))
                        {
                            Store (0x04, IOLN)
                        }
                        Else
                        {
                            Store (0x08, IOLN)
                        }

                        Store (One, Local0)
                        ShiftLeft (Local0, INTR, IRQW)
                        Store (One, Local0)
                        ShiftLeft (Local0, DMCH, DMAC)
                        Return (BUF6)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x0378,             // Range Minimum
                                0x0378,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IO (Decode16,
                                0x0778,             // Range Minimum
                                0x0778,             // Range Maximum
                                0x00,               // Alignment
                                0x03,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {0,1,3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x0278,             // Range Minimum
                                0x0278,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IO (Decode16,
                                0x0678,             // Range Minimum
                                0x0678,             // Range Maximum
                                0x00,               // Alignment
                                0x03,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {0,1,3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03BC,             // Range Minimum
                                0x03BC,             // Range Maximum
                                0x00,               // Alignment
                                0x04,               // Length
                                )
                            IO (Decode16,
                                0x07BC,             // Range Minimum
                                0x07BC,             // Range Maximum
                                0x00,               // Alignment
                                0x03,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {5,7}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {0,1,3}
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x11, IRQW)
                        CreateByteField (Arg0, 0x15, DMAC)
                        Store (0x01, LDNM)
                        Store (IOLO, IOAL)
                        Store (IOHI, IOAH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        FindSetRightBit (IRQW, Local0)
                        Decrement (Local0)
                        Store (Local0, INTR)
                        FindSetRightBit (DMAC, Local0)
                        Decrement (Local0)
                        Store (Local0, DMCH)
                        Store (One, ACTR)
                        Store (Zero, LPTD)
                    }
                }

                Device (IRDA)
                {
                    Name (_HID, EisaId ("PNP0510"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (0x02, LDNM)
                        If (ACTR)
                        {
                            If (LEqual (DMCH, 0x04))
                            {
                                If (IRD)
                                {
                                    Return (0x0D)
                                }
                                Else
                                {
                                    Return (0x0F)
                                }
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (One, IRD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF1, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x02F8,             // Range Minimum
                                0x02F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                _Y12)
                            IRQ (Edge, ActiveHigh, Exclusive, _Y13)
                                {3}
                        })
                        CreateByteField (BUF1, \_SB.PCI0.PX40.IRDA._CRS._Y12._MIN, IOLO)
                        CreateByteField (BUF1, 0x03, IOHI)
                        CreateByteField (BUF1, \_SB.PCI0.PX40.IRDA._CRS._Y12._MAX, IORL)
                        CreateByteField (BUF1, 0x05, IORH)
                        CreateWordField (BUF1, \_SB.PCI0.PX40.IRDA._CRS._Y13._INT, IRQW)
                        Store (0x02, LDNM)
                        Store (IOAL, IOLO)
                        Store (IOAL, IORL)
                        Store (IOAH, IOHI)
                        Store (IOAH, IORH)
                        Store (One, Local0)
                        ShiftLeft (Local0, INTR, IRQW)
                        Return (BUF1)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x02F8,             // Range Minimum
                                0x02F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03F8,             // Range Minimum
                                0x03F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {4}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x02E8,             // Range Minimum
                                0x02E8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03E8,             // Range Minimum
                                0x03E8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {4}
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x09, IRQW)
                        Store (0x02, LDNM)
                        Store (IOLO, IOAL)
                        Store (IOHI, IOAH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        FindSetRightBit (IRQW, Local0)
                        Decrement (Local0)
                        Store (Local0, INTR)
                        Store (One, ACTR)
                        Store (Zero, IRD)
                    }
                }

                Device (FIR)
                {
                    Name (_HID, EisaId ("NSC6001"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (0x02, LDNM)
                        If (ACTR)
                        {
                            If (LEqual (DMCH, 0x04))
                            {
                                Return (0x00)
                            }
                            Else
                            {
                                If (IRD)
                                {
                                    Return (0x0D)
                                }
                                Else
                                {
                                    Return (0x0F)
                                }
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (One, IRD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF1, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x02F8,             // Range Minimum
                                0x02F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                _Y14)
                            IRQ (Edge, ActiveHigh, Exclusive, _Y15)
                                {3}
                            DMA (Compatibility, NotBusMaster, Transfer8, _Y16)
                                {1}
                        })
                        CreateByteField (BUF1, \_SB.PCI0.PX40.FIR._CRS._Y14._MIN, IOLO)
                        CreateByteField (BUF1, 0x03, IOHI)
                        CreateByteField (BUF1, \_SB.PCI0.PX40.FIR._CRS._Y14._MAX, IORL)
                        CreateByteField (BUF1, 0x05, IORH)
                        CreateWordField (BUF1, \_SB.PCI0.PX40.FIR._CRS._Y15._INT, IRQW)
                        CreateWordField (BUF1, \_SB.PCI0.PX40.FIR._CRS._Y16._DMA, DMAV)
                        Store (0x02, LDNM)
                        Store (IOAL, IOLO)
                        Store (IOAL, IORL)
                        Store (IOAH, IOHI)
                        Store (IOAH, IORH)
                        Store (One, Local0)
                        ShiftLeft (Local0, INTR, IRQW)
                        Store (One, Local0)
                        ShiftLeft (Local0, DMCH, DMAV)
                        Return (BUF1)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x02F8,             // Range Minimum
                                0x02F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {3}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {1,3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03F8,             // Range Minimum
                                0x03F8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {4}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {1,3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x02E8,             // Range Minimum
                                0x02E8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {3}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {1,3}
                        }
                        StartDependentFn (0x01, 0x01)
                        {
                            IO (Decode16,
                                0x03E8,             // Range Minimum
                                0x03E8,             // Range Maximum
                                0x00,               // Alignment
                                0x08,               // Length
                                )
                            IRQ (Edge, ActiveHigh, Exclusive, )
                                {4}
                            DMA (Compatibility, NotBusMaster, Transfer8, )
                                {1,3}
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x09, IRQW)
                        CreateByteField (Arg0, 0x0D, DMAC)
                        Store (0x02, LDNM)
                        Store (IOLO, IOAL)
                        Store (IOHI, IOAH)
                        Store (IOHI, Local0)
                        ShiftLeft (Local0, 0x08, Local0)
                        Add (Local0, IOLO, Local0)
                        FindSetRightBit (IRQW, Local0)
                        Decrement (Local0)
                        Store (Local0, INTR)
                        FindSetRightBit (DMAC, Local0)
                        Decrement (Local0)
                        Store (Local0, DMCH)
                        Store (One, ACTR)
                        Store (Zero, IRD)
                    }
                }
            }

            Device (PX43)
            {
                Name (_ADR, 0x001F0003)
            }

            Device (USB0)
            {
                Name (_ADR, 0x001D0000)
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x02)
                }

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

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

                OperationRegion (URE0, PCI_Config, 0xC4, 0x01)
                Field (URE0, ByteAcc, NoLock, Preserve)
                {
                    U0PE,   8
                }

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

                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, One))
                    {
                        Store (0x03, U0PE)
                    }
                    Else
                    {
                        Store (Zero, U0PE)
                    }
                }

                OperationRegion (UPCI, PCI_Config, 0x20, 0x04)
                Field (UPCI, ByteAcc, NoLock, Preserve)
                {
                    UBAS,   32
                }

                Name (BASA, 0xB800)
                Method (SSTA, 0, NotSerialized)
                {
                    Store (UBAS, BASA)
                    And (BASA, 0xFFFFFFFE, BASA)
                }

                Method (RSTA, 0, NotSerialized)
                {
                    Store (BASA, UBAS)
                    OperationRegion (UHCI, SystemIO, BASA, 0x20)
                    Field (UHCI, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0x11), 
                            ,   4, 
                        SPD0,   1, 
                                Offset (0x13), 
                            ,   4, 
                        SPD1,   1
                    }

                    Store (Zero, SPD0)
                    Store (Zero, SPD1)
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x02)
                }

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

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

                OperationRegion (URE1, PCI_Config, 0xC4, 0x01)
                Field (URE1, ByteAcc, NoLock, Preserve)
                {
                    U1PE,   8
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Return (SPRW (0x04))
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, One))
                    {
                        Store (0x03, U1PE)
                    }
                    Else
                    {
                        Store (Zero, U1PE)
                    }
                }

                OperationRegion (UPCI, PCI_Config, 0x20, 0x04)
                Field (UPCI, ByteAcc, NoLock, Preserve)
                {
                    UBAS,   32
                }

                Name (BASA, 0xB400)
                Method (SSTA, 0, NotSerialized)
                {
                    Store (UBAS, BASA)
                    And (BASA, 0xFFFFFFFE, BASA)
                }

                Method (RSTA, 0, NotSerialized)
                {
                    Store (BASA, UBAS)
                    OperationRegion (UHCI, SystemIO, BASA, 0x20)
                    Field (UHCI, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0x11), 
                            ,   4, 
                        SPD0,   1, 
                                Offset (0x13), 
                            ,   4, 
                        SPD1,   1
                    }

                    Store (Zero, SPD0)
                    Store (Zero, SPD1)
                }
            }

            Device (ACMO)
            {
                Name (_ADR, 0x001F0006)
                Name (_PRW, Package (0x02)
                {
                    0x08, 
                    0x03
                })
            }

            Device (VID0)
            {
                Name (_ADR, 0x00020000)
                Name (DOSD, 0x01)
                Name (DISU, 0x03)
                Name (VSTT, Package (0x04)
                {
                    0x03, 
                    0x02, 
                    0x03, 
                    0x01
                })
                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x03)
                }

                Method (_DOS, 1, NotSerialized)
                {
                    Store (Arg0, DOSD)
                }

                Method (_DOD, 0, NotSerialized)
                {
                    Name (PSIZ, 0x00)
                    Name (PPTR, 0x00)
                    Store (0x90, TRTY)
                    Store (0x02, VFUN)
                    Store (0x00, ESMI)
                    Store (CADL, PADL)
                    Store (CADL, Local0)
                    Store (CADL, Local1)
                    While (Local1)
                    {
                        If (And (Local1, 0x01))
                        {
                            Increment (PSIZ)
                        }

                        ShiftRight (Local1, 0x01, Local1)
                    }

                    If (LOr (LEqual (PSIZ, 0x00), LGreater (PSIZ, 0x06)))
                    {
                        Store (0x00, ENUM)
                        Return (Package (0x01)
                        {
                            0x00010400
                        })
                    }
                    Else
                    {
                        Store (0x01, ENUM)
                        If (LEqual (PSIZ, 0x02))
                        {
                            Name (VID2, Package (0x02)
                            {
                                0x00010100, 
                                0x00010200
                            })
                            If (And (Local0, 0x01))
                            {
                                Store (0x00010100, Index (VID2, PPTR))
                                Increment (PPTR)
                            }

                            If (And (Local0, 0x02))
                            {
                                Store (0x00010200, Index (VID2, PPTR))
                                Increment (PPTR)
                            }

                            If (And (Local0, 0x08))
                            {
                                Store (0x00010400, Index (VID2, PPTR))
                                Increment (PPTR)
                            }

                            Return (VID2)
                        }

                        If (LEqual (PSIZ, 0x03))
                        {
                            Return (Package (0x03)
                            {
                                0x00010100, 
                                0x00010200, 
                                0x00010400
                            })
                        }

                        Name (VID1, Package (0x01)
                        {
                            0x00010100
                        })
                        If (And (Local0, 0x01))
                        {
                            Store (0x00010100, Index (VID1, 0x00))
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (0x00010200, Index (VID1, 0x00))
                        }

                        If (And (Local0, 0x08))
                        {
                            Store (0x00010400, Index (VID1, 0x00))
                        }
                    }

                    Return (VID1)
                }

                Device (CRT)
                {
                    Name (_ADR, 0x0100)
                    Method (_DCS, 0, NotSerialized)
                    {
                        Store (0x90, TRTY)
                        Store (0x01, VFUN)
                        Store (0x00, ESMI)
                        Store (CSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x01))
                            {
                                Return (0x1F)
                            }
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)
                    {
                        Store (NSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x01))
                            {
                                Return (0x01)
                            }
                        }

                        Return (0x00)
                    }

                    Method (_DSS, 1, NotSerialized)
                    {
                    }
                }

                Device (TV)
                {
                    Name (_ADR, 0x0200)
                    Method (_DCS, 0, NotSerialized)
                    {
                        Store (0x90, TRTY)
                        Store (0x01, VFUN)
                        Store (0x00, ESMI)
                        Store (CSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x0202))
                            {
                                Return (0x1F)
                            }
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)
                    {
                        Store (NSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x0202))
                            {
                                Return (0x01)
                            }
                        }

                        Return (0x00)
                    }

                    Method (_DSS, 1, NotSerialized)
                    {
                    }
                }

                Device (LCD)
                {
                    Name (_ADR, 0x0400)
                    Method (_DCS, 0, NotSerialized)
                    {
                        Store (0x90, TRTY)
                        Store (0x01, VFUN)
                        Store (0x00, ESMI)
                        Store (CSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x0808))
                            {
                                Return (0x1F)
                            }
                        }

                        Return (0x1D)
                    }

                    Method (_DGS, 0, NotSerialized)
                    {
                        Store (NSTE, Local0)
                        If (Local0)
                        {
                            If (And (Local0, 0x0808))
                            {
                                Return (0x01)
                            }
                        }

                        Return (0x00)
                    }

                    Method (_DSS, 1, NotSerialized)
                    {
                    }
                }
            }

            Scope (\_SB.PCI0.PCI1)
            {
                Device (CDB0)
                {
                    Name (_ADR, 0x00050000)
                    Name (_PRW, Package (0x02)
                    {
                        0x0B, 
                        0x03
                    })
                }

                Device (LAN)
                {
                    Name (_ADR, 0x00030000)
                    Name (_PRW, Package (0x02)
                    {
                        0x0B, 
                        0x03
                    })
                }
            }
        }
    }
}


