Monitoring temperature with acpi (sysctls)

O. Hartmann ohartman at mail.uni-mainz.de
Fri Jul 28 23:03:25 UTC 2006


John Baldwin wrote:
> On Thursday 27 July 2006 02:25, Mike Jakubik wrote:
>   
>> Jiawei Ye wrote:
>>     
>>> On 7/27/06, Mike Jakubik <mikej at rogers.com> wrote:
>>>       
>>>> I don't want to spend $50 extra per system, just so i can read the
>>>> temperature, and not even use any of the IPMI functions. I need a simple
>>>> and scriptable way to get the values, acpi sysctls are ideal for this.
>>>>         
>>> What about using SMBus? Is it available on your system? xmbmon reads
>>> temperatures off the SMBus IIRC.
>>>       
>> I tried that, unfortunately it does not work. All i want to know is if 
>> this a shortcoming of freebsd or the motherboard, if its the later, i 
>> will contact the manufacturer.
>>     
>
> If ACPI doesn't include the sysctl's that's due to your BIOS, not FreeBSD.
> You can verify by doing an acpidump and seeing if you have any thermal
> zones listed in your ASL.
>
>   
This is a 'acpidump -d' of my BIOS, mainboard ASUS A8N32-SLI Deluxe, 
latest BIOS, V1205 as seen on ASUS homepage. Please see attachment.

Oliver
-------------- next part --------------
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20041119
 *
 * Disassembly of /tmp/acpidump.nhd4SF, Fri Jul 28 23:00:44 2006
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "A0371", "A0371001", 1)
{
    Name (DP80, 0x1080)
    Name (DP90, 0x90)
    Name (SPIO, 0x2E)
    Name (IOPB, 0x0C00)
    Name (IOPL, 0x10)
    Name (IOEB, 0x0D00)
    Name (IOEL, 0x10)
    Name (IOGB, 0x0A20)
    Name (IOGL, 0x10)
    Name (IODB, 0x0A30)
    Name (IODL, 0x10)
    Name (IO1B, 0x0A20)
    Name (IO1L, 0x08)
    Name (IO3B, 0x0D00)
    Name (IO3L, 0x80)
    Name (PMBS, 0x0500)
    Name (PMLN, 0x0100)
    Name (SCBS, 0x0800)
    Name (SCLN, 0x0100)
    Name (ACBS, 0x0900)
    Name (ACLN, 0x0100)
    Name (SCIO, 0x0800)
    Name (SCTL, 0x0590)
    Name (EXTS, 0x00)
    Name (APIC, 0x01)
    Name (ABWV, 0xAB)
    Name (PCIB, 0xE0000000)
    Name (PCIL, 0x10000000)
    Name (SMBS, 0x0700)
    OperationRegion (BIOS, SystemMemory, 0x7FFBE064, 0xFF)
    Field (BIOS, ByteAcc, NoLock, Preserve)
    {
        SS1,    1, 
        SS2,    1, 
        SS3,    1, 
        SS4,    1, 
        Offset (0x01), 
        IOST,   16, 
        TOPM,   32, 
        ROMS,   32, 
        MG1B,   32, 
        MG1L,   32, 
        MG2B,   32, 
        MG2L,   32, 
        Offset (0x1C), 
        CPB0,   32, 
        CPB1,   32, 
        CPB2,   32, 
        CPB3,   32, 
        ASSB,   8, 
        AOTB,   8, 
        AAXB,   32
    }

    Method (RRIO, 4, NotSerialized)
    {
        Store ("RRIO", Debug)
    }

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

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

        Store (Arg0, PICM)
    }

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

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

        Store (0x01, OSVR)
        If (CondRefOf (\_OSI, Local1))
        {
            If (\_OSI ("Windows 2001"))
            {
                Store (0x00, OSVR)
            }
        }
        Else
        {
            If (MCTH (\_OS, "Microsoft Windows NT"))
            {
                Store (0x04, OSVR)
            }
            Else
            {
                If (MCTH (\_OS, "Microsoft WindowsME: Millennium Edition"))
                {
                    Store (0x02, OSVR)
                }

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

        Return (OSVR)
    }

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

        Add (SizeOf (Arg0), 0x01, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

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

        Return (PRWP)
    }

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

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

    Scope (\_SB)
    {
        Name (PR00, Package (0x20)
        {
            Package (0x04)
            {
                0x000AFFFF, 
                0x00, 
                LSMB, 
                0x00
            }, 

            Package (0x04)
            {
                0x000BFFFF, 
                0x00, 
                LUB0, 
                0x00
            }, 

            Package (0x04)
            {
                0x000BFFFF, 
                0x01, 
                LUB2, 
                0x00
            }, 

            Package (0x04)
            {
                0x0013FFFF, 
                0x00, 
                LMAC, 
                0x00
            }, 

            Package (0x04)
            {
                0x0010FFFF, 
                0x00, 
                LSA0, 
                0x00
            }, 

            Package (0x04)
            {
                0x0011FFFF, 
                0x00, 
                LSA1, 
                0x00
            }, 

            Package (0x04)
            {
                0x000DFFFF, 
                0x00, 
                LACI, 
                0x00
            }, 

            Package (0x04)
            {
                0x000DFFFF, 
                0x01, 
                LMC9, 
                0x00
            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x0015FFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (AR00, Package (0x20)
        {
            Package (0x04)
            {
                0x000AFFFF, 
                0x00, 
                LSMB, 
                0x00
            }, 

            Package (0x04)
            {
                0x000BFFFF, 
                0x00, 
                LUB0, 
                0x00
            }, 

            Package (0x04)
            {
                0x000BFFFF, 
                0x01, 
                LUB2, 
                0x00
            }, 

            Package (0x04)
            {
                0x0013FFFF, 
                0x00, 
                LMAC, 
                0x00
            }, 

            Package (0x04)
            {
                0x0010FFFF, 
                0x00, 
                LSA0, 
                0x00
            }, 

            Package (0x04)
            {
                0x0011FFFF, 
                0x00, 
                LSA1, 
                0x00
            }, 

            Package (0x04)
            {
                0x000DFFFF, 
                0x00, 
                LACI, 
                0x00
            }, 

            Package (0x04)
            {
                0x000DFFFF, 
                0x01, 
                LMC9, 
                0x00
            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x0015FFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (PR01, Package (0x0D)
        {
            Package (0x04)
            {
                0x000BFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x0008FFFF, 
                0x03, 
                LNKB, 
                0x00
            }
        })
        Name (AR01, Package (0x0D)
        {
            Package (0x04)
            {
                0x000BFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x0008FFFF, 
                0x03, 
                LNKB, 
                0x00
            }
        })
        Name (PR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                0x00
            }
        })
        Name (AR02, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKB, 
                0x00
            }, 

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

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

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

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                0x00
            }
        })
        Name (AR03, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                LNKA, 
                0x00
            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                0x00
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared) {5,7,10,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, PRSD)
        Alias (PRSA, RSMB)
        Alias (PRSA, RSB2)
        Name (RSA1, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared) {11}
        })
        Alias (RSA1, RSA0)
        Alias (PRSA, RSB0)
        Alias (PRSA, RSAC)
        Alias (PRSA, RSCI)
        Alias (PRSA, RSC9)
        Alias (PRSA, RSTA)
        Name (RSIR, ResourceTemplate ()
        {
            Interrupt (ResourceConsumer, Level, ActiveLow, Shared)
            {
                0x00000010,
                0x00000011,
                0x00000012,
                0x00000013,
            }
        })
        Name (RSII, ResourceTemplate ()
        {
            Interrupt (ResourceConsumer, Level, ActiveLow, Shared)
            {
                0x00000014,
                0x00000015,
                0x00000016,
                0x00000017,
            }
        })
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00180000)
            Method (^BN00, 0, NotSerialized)
            {
                Return (0x00)
            }

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

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

                Return (PR00)
            }

            Device (NB2N)
            {
                Name (_ADR, 0x00)
                Method (NPTS, 1, NotSerialized)
                {
                }

                Method (NWAK, 1, NotSerialized)
                {
                }
            }

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

            Device (SBRG)
            {
                Name (_ADR, 0x000A0000)
                Method (SPTS, 1, NotSerialized)
                {
                    Store (Arg0, \_SB.PCI0.IDE0.PTS0)
                    Store (\_SB.PCI0.IDE0.ID20, \_SB.PCI0.IDE0.SID0)
                    Store (\_SB.PCI0.IDE0.IDTS, \_SB.PCI0.IDE0.SID1)
                    Store (\_SB.PCI0.IDE0.IDTP, \_SB.PCI0.IDE0.SID2)
                    Store (\_SB.PCI0.IDE0.ID22, \_SB.PCI0.IDE0.SID3)
                    Store (\_SB.PCI0.IDE0.UMSS, \_SB.PCI0.IDE0.SID4)
                    Store (\_SB.PCI0.IDE0.UMSP, \_SB.PCI0.IDE0.SID5)
                    Store (One, PS1S)
                    Store (One, PS1E)
                    Store (One, \_SB.SLPS)
                }

                Method (SWAK, 1, NotSerialized)
                {
                    Store (Zero, \_SB.SLPS)
                    Store (Zero, PS1E)
                    Store (0x02, S1CT)
                    Store (0x02, S3CT)
                    Store (0x02, S4CT)
                    Store (0x02, S5CT)
                }

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

                OperationRegion (SXCT, SystemIO, SCTL, 0x10)
                Field (SXCT, ByteAcc, NoLock, Preserve)
                {
                    S1CT,   2, 
                    Offset (0x04), 
                    S3CT,   2, 
                    Offset (0x08), 
                    S4CT,   2, 
                    Offset (0x0C), 
                    S5CT,   2, 
                    Offset (0x10)
                }

                Scope (\_SB)
                {
                    Name (SLPS, 0x00)
                    Device (SLPB)
                    {
                        Name (_HID, EisaId ("PNP0C0E"))
                        Method (_STA, 0, NotSerialized)
                        {
                            If (EXTS)
                            {
                                Return (0x0F)
                            }

                            Return (0x00)
                        }

                        Method (SBEV, 0, NotSerialized)
                        {
                            If (SLPS)
                            {
                                Notify (SLPB, 0x02)
                            }
                            Else
                            {
                                Notify (SLPB, 0x80)
                            }
                        }

                        Method (\_GPE._L01, 0, NotSerialized)
                        {
                            \_SB.SLPB.SBEV ()
                        }

                        Method (_PRW, 0, NotSerialized)
                        {
                            Return (Package (0x02)
                            {
                                0x01, 
                                0x04
                            })
                        }
                    }

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

                        Name (_S1D, 0x01)
                        Name (NATA, Package (0x01)
                        {
                            0x00100000
                        })
                        Device (NVRB)
                        {
                            Name (_HID, "NVRAIDBUS")
                            Method (_STA, 0, NotSerialized)
                            {
                                If (And (CPB0, 0x01))
                                {
                                    Return (0x0F)
                                }
                                Else
                                {
                                    Return (0x00)
                                }
                            }

                            Name (_CRS, ResourceTemplate ()
                            {
                                IO (Decode16, 0x04D2, 0x04D2, 0x01, 0x01)
                            })
                        }
                    }
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0020, 0x0020, 0x00, 0x02)
                        IO (Decode16, 0x00A0, 0x00A0, 0x00, 0x02)
                        IRQNoFlags () {2}
                    })
                }

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

                Device (TMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
                        IRQNoFlags () {0}
                    })
                }

                Device (RTC0)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
                        IRQNoFlags () {8}
                    })
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
                    })
                }

                Device (COPR)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x00F0, 0x00F0, 0x00, 0x10)
                        IRQNoFlags () {13}
                    })
                }

                Device (FDC)
                {
                    Name (_HID, EisaId ("PNP0700"))
                    Method (_FDE, 0, NotSerialized)
                    {
                        Name (FDEP, Package (0x05)
                        {
                            0x00, 
                            0x00, 
                            0x02, 
                            0x02, 
                            0x02
                        })
                        If (_STA ())
                        {
                            Store (0x01, Index (FDEP, 0x00))
                        }

                        Return (FDEP)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x03))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x03, 0x00)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        DCRS (0x03, 0x01)
                        Store (IRQM, IRQE)
                        Store (DMAM, DMAE)
                        Store (IO11, IO21)
                        Store (IO12, IO22)
                        Store (0x06, LEN2)
                        Add (IO21, 0x07, IO31)
                        Store (IO31, IO32)
                        Store (0x01, LEN3)
                        Return (CRS2)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, 0x03)
                        CreateWordField (Arg0, 0x11, IRQE)
                        CreateByteField (Arg0, 0x14, DMAE)
                        ENFG (CGLD (0x03))
                        If (IRQE)
                        {
                            FindSetRightBit (IRQE, Local0)
                            Subtract (Local0, 0x01, INTR)
                        }
                        Else
                        {
                            Store (0x00, INTR)
                        }

                        If (DMAE)
                        {
                            FindSetRightBit (DMAE, Local0)
                            Subtract (Local0, 0x01, DMCH)
                        }
                        Else
                        {
                            Store (0x04, DMCH)
                        }

                        EXFG ()
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
                            IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
                            IRQNoFlags () {6}
                            DMA (Compatibility, NotBusMaster, Transfer8) {2}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
                            IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0370, 0x0370, 0x01, 0x06)
                            IO (Decode16, 0x0377, 0x0377, 0x01, 0x01)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        EndDependentFn ()
                    })
                }

                Device (LPTE)
                {
                    Method (_HID, 0, NotSerialized)
                    {
                        If (LPTM (0x02))
                        {
                            Return (0x0104D041)
                        }
                        Else
                        {
                            Return (0x0004D041)
                        }
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x02))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x02, 0x00)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        DCRS (0x02, 0x01)
                        If (LPTM (0x02))
                        {
                            Store (IRQM, IRQE)
                            Store (DMAM, DMAE)
                            Store (IO11, IO21)
                            Store (IO12, IO22)
                            Store (LEN1, LEN2)
                            Add (IO21, 0x0400, IO31)
                            Store (IO31, IO32)
                            Store (LEN2, LEN3)
                            Return (CRS2)
                        }
                        Else
                        {
                            Return (CRS1)
                        }
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, 0x02)
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        If (LPTM (0x02))
                        {
                            Return (EPPR)
                        }
                        Else
                        {
                            Return (LPPR)
                        }
                    }

                    Name (LPPR, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0278, 0x0278, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03BC, 0x03BC, 0x01, 0x04)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        EndDependentFn ()
                    })
                    Name (EPPR, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                            IO (Decode16, 0x0778, 0x0778, 0x01, 0x08)
                            IRQNoFlags () {7}
                            DMA (Compatibility, NotBusMaster, Transfer8) {3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                            IO (Decode16, 0x0778, 0x0778, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0278, 0x0278, 0x01, 0x08)
                            IO (Decode16, 0x0678, 0x0678, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03BC, 0x03BC, 0x01, 0x04)
                            IO (Decode16, 0x07BC, 0x07BC, 0x01, 0x04)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        EndDependentFn ()
                    })
                }

                Device (GAME)
                {
                    Name (_HID, EisaId ("PNPB02F"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x08))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x08, 0x00)
                    }

                    Name (GMCR, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0000, 0x0000, 0x08, 0x08)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateWordField (GMCR, 0x02, IOGL)
                        CreateWordField (GMCR, 0x04, IOGH)
                        ENFG (CGLD (0x08))
                        ShiftLeft (IOAH, 0x08, IOGL)
                        Or (IOAL, IOGL, IOGL)
                        Store (IOGL, IOGH)
                        CreateByteField (GMCR, 0x06, IOAL)
                        Store (0x01, IOAL)
                        EXFG ()
                        Return (GMCR)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x02, IO11)
                        ENFG (CGLD (0x08))
                        And (IO11, 0xFF, IOAL)
                        ShiftRight (IO11, 0x08, IOAH)
                        DCNT (0x08, 0x01)
                        EXFG ()
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16, 0x0201, 0x0201, 0x01, 0x08)
                        }
                        EndDependentFn ()
                    })
                }

                Device (MIDI)
                {
                    Name (_HID, EisaId ("PNPB006"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x05))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x05, 0x00)
                    }

                    Name (MDCR, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0000, 0x0000, 0x01, 0x02)
                        IRQNoFlags () {5}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateWordField (MDCR, 0x02, IOML)
                        CreateWordField (MDCR, 0x04, IOMH)
                        CreateWordField (MDCR, 0x09, IRQM)
                        ENFG (CGLD (0x05))
                        ShiftLeft (IOAH, 0x08, IOML)
                        Or (IOAL, IOML, IOML)
                        Store (IOML, IOMH)
                        If (INTR)
                        {
                            ShiftLeft (0x01, INTR, IRQM)
                        }
                        Else
                        {
                            Store (0x00, IRQM)
                        }

                        EXFG ()
                        Return (MDCR)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x02, IO11)
                        CreateWordField (Arg0, 0x09, IRQM)
                        ENFG (CGLD (0x05))
                        And (IO11, 0xFF, IOAL)
                        ShiftRight (IO11, 0x08, IOAH)
                        If (IRQM)
                        {
                            FindSetRightBit (IRQM, Local0)
                            Subtract (Local0, 0x01, INTR)
                        }
                        Else
                        {
                            Store (0x00, INTR)
                        }

                        DCNT (0x05, 0x01)
                        EXFG ()
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0300, 0x0300, 0x01, 0x02)
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0330, 0x0330, 0x01, 0x02)
                        }
                        EndDependentFn ()
                        IRQNoFlags () {5,7,9,10,11}
                    })
                }

                Device (RMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x10)
                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
                        IO (Decode16, 0x0022, 0x0022, 0x00, 0x1E)
                        IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
                        IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
                        IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
                        IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
                        IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
                        IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
                        IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
                        IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
                        IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
                        IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1E)
                        IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
                        IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
                        IO (Decode16, 0x0800, 0x0800, 0x00, 0x10)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        Memory32Fixed (ReadOnly, 0xFEE01000, 0x000FF000)
                        Memory32Fixed (ReadOnly, 0xFEFFF000, 0x00001000)
                        Memory32Fixed (ReadWrite, 0xFFB00000, 0x004F0000)
                        Memory32Fixed (ReadOnly, 0xFFF00000, 0x00100000)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateWordField (CRS, 0x7A, GP00)
                        CreateWordField (CRS, 0x7C, GP01)
                        CreateByteField (CRS, 0x7F, GP0L)
                        CreateWordField (CRS, 0x82, GP10)
                        CreateWordField (CRS, 0x84, GP11)
                        CreateByteField (CRS, 0x87, GP1L)
                        Store (PMBS, GP00)
                        Store (PMBS, GP01)
                        If (LNot (LLess (PMLN, 0x0100)))
                        {
                            ShiftRight (PMLN, 0x01, GP0L)
                            Add (GP00, GP0L, GP10)
                            Add (GP01, GP0L, GP11)
                            Subtract (PMLN, GP0L, GP1L)
                        }
                        Else
                        {
                            Store (PMLN, GP0L)
                        }

                        If (SCBS)
                        {
                            CreateWordField (CRS, 0x8A, SC00)
                            CreateWordField (CRS, 0x8C, SC01)
                            CreateByteField (CRS, 0x8F, SC0L)
                            CreateWordField (CRS, 0x92, SC10)
                            CreateWordField (CRS, 0x94, SC11)
                            CreateByteField (CRS, 0x97, SC1L)
                            Store (SCBS, SC00)
                            Store (SCBS, SC01)
                            If (LNot (LLess (SCLN, 0x0100)))
                            {
                                ShiftRight (SCLN, 0x01, SC0L)
                                Add (SC00, SC0L, SC10)
                                Add (SC01, SC0L, SC11)
                                Subtract (SCLN, SC0L, SC1L)
                            }
                            Else
                            {
                                Store (SCLN, SC0L)
                            }
                        }

                        If (ACBS)
                        {
                            CreateWordField (CRS, 0x9A, AC00)
                            CreateWordField (CRS, 0x9C, AC01)
                            CreateByteField (CRS, 0x9F, AC0L)
                            CreateWordField (CRS, 0xA2, AC10)
                            CreateWordField (CRS, 0xA4, AC11)
                            CreateByteField (CRS, 0xA7, AC1L)
                            Store (ACBS, AC00)
                            Store (ACBS, AC01)
                            If (LNot (LLess (ACLN, 0x0100)))
                            {
                                ShiftRight (ACLN, 0x01, AC0L)
                                Add (AC00, AC0L, AC10)
                                Add (AC01, AC0L, AC11)
                                Subtract (ACLN, AC0L, AC1L)
                            }
                            Else
                            {
                                Store (ACLN, AC0L)
                            }
                        }

                        Return (CRS)
                    }
                }

                Scope (\_SB.PCI0.SBRG)
                {
                    Device (ASOC)
                    {
                        Name (_HID, "ATK0110")
                        Name (_UID, 0x01010110)
                        Method (_STA, 0, NotSerialized)
                        {
                            Return (0x0F)
                        }
                    }
                }

                OperationRegion (\_SB.PCI0.SBRG.LPDC, PCI_Config, 0xA0, 0x06)
                Field (\_SB.PCI0.SBRG.LPDC, ByteAcc, NoLock, Preserve)
                {
                    S3F8,   1, 
                    S2F8,   1, 
                        ,   3, 
                    S2E8,   1, 
                        ,   1, 
                    S3E8,   1, 
                        ,   4, 
                    M300,   1, 
                        ,   2, 
                    M330,   1, 
                        ,   4, 
                    FDC0,   1, 
                    Offset (0x03), 
                    P378,   1, 
                    P278,   1, 
                    P3BC,   1, 
                    Offset (0x04), 
                    G200,   8, 
                    G208,   8
                }

                Method (RRIO, 4, NotSerialized)
                {
                    If (LOr (LEqual (Arg0, 0x00), LEqual (Arg0, 0x01)))
                    {
                        If (LEqual (Arg2, 0x03F8))
                        {
                            Store (Arg1, S3F8)
                        }

                        If (LEqual (Arg2, 0x02F8))
                        {
                            Store (Arg1, S2F8)
                        }

                        If (LEqual (Arg2, 0x03E8))
                        {
                            Store (Arg1, S3E8)
                        }

                        If (LEqual (Arg2, 0x02E8))
                        {
                            Store (Arg1, S2E8)
                        }
                    }

                    If (LEqual (Arg0, 0x02))
                    {
                        If (LEqual (Arg2, 0x0378))
                        {
                            Store (Arg1, P378)
                        }

                        If (LEqual (Arg2, 0x0278))
                        {
                            Store (Arg1, P278)
                        }

                        If (LEqual (Arg2, 0x03BC))
                        {
                            Store (Arg1, P3BC)
                        }
                    }

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

                    If (LEqual (Arg0, 0x05))
                    {
                        If (LEqual (Arg2, 0x0330))
                        {
                            Store (Arg1, M330)
                        }

                        If (LEqual (Arg2, 0x0300))
                        {
                            Store (Arg1, M300)
                        }
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        Store (Zero, Local0)
                        If (Arg1)
                        {
                            Store (0xFF, Local0)
                        }

                        If (LEqual (Arg2, 0x0200))
                        {
                            Store (Local0, G200)
                        }

                        If (LEqual (Arg2, 0x0208))
                        {
                            Store (Local0, G208)
                        }
                    }
                }

                Method (RDMA, 3, NotSerialized)
                {
                }

                Scope (\)
                {
                    OperationRegion (\RAMW, SystemMemory, Subtract (TOPM, 0x00010000), 0x00010000)
                    Field (\RAMW, ByteAcc, NoLock, Preserve)
                    {
                        PAR0,   32, 
                        PAR1,   32
                    }

                    OperationRegion (IOB2, SystemIO, 0x082E, 0x02)
                    Field (IOB2, ByteAcc, NoLock, Preserve)
                    {
                        SMIC,   8, 
                        SMIS,   8
                    }

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

                    Method (GNVS, 1, Serialized)
                    {
                        Store (Arg0, PAR0)
                        ISMI (0x70)
                        Return (PAR1)
                    }

                    Method (SNVS, 2, Serialized)
                    {
                        Store (Arg0, PAR0)
                        Store (Arg1, PAR1)
                        ISMI (0x71)
                    }
                }

                Scope (\)
                {
                    Field (\RAMW, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x08), 
                        ADSP,   32, 
                        FSBF,   16, 
                        FVCM,   8, 
                        AITU,   8, 
                        FIDV,   8, 
                        VIDV,   8, 
                        OCPI,   8, 
                        NOST,   8, 
                        NOS1,   8, 
                        DDRV,   8, 
                        CPUS,   1, 
                        CQFS,   3, 
                        CQFT,   4, 
                        AIDI,   8, 
                        OVID,   8, 
                        CCAQ,   8, 
                        MAXF,   8, 
                        MAXV,   8, 
                        CURF,   8, 
                        CURV,   8, 
                        PCEF,   8
                    }
                }

                OperationRegion (\_SB.PCI0.PCLK.MNCK, PCI_Config, 0x44, 0x04)
                Field (\_SB.PCI0.PCLK.MNCK, ByteAcc, NoLock, Preserve)
                {
                    MMNN,   16, 
                        ,   14, 
                    MNEN,   1, 
                    Offset (0x04)
                }

                OperationRegion (\_SB.PCI0.PCLK.SPRD, PCI_Config, 0x54, 0x04)
                Field (\_SB.PCI0.PCLK.SPRD, ByteAcc, NoLock, Preserve)
                {
                    SPRE,   1, 
                    Offset (0x04)
                }

                OperationRegion (QDRV, SystemIO, IOGB, 0x03)
                Field (QDRV, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x02), 
                        ,   1, 
                    QDDR,   4, 
                    Offset (0x03)
                }

                OperationRegion (DEB0, SystemIO, 0x1080, 0x02)
                Field (DEB0, ByteAcc, NoLock, Preserve)
                {
                    DB16,   16
                }

                Name (DDRT, Package (0x0A)
                {
                    0x0D, 
                    0x0F, 
                    0x0E, 
                    0x0D, 
                    0x0B, 
                    0x07, 
                    0x09, 
                    0x08, 
                    0x03, 
                    0x02
                })
                Scope (\_SB.PCI0.SBRG.ASOC)
                {
                    Name (MBIF, Package (0x08)
                    {
                        0x01, 
                        "A8N32-SLI", 
                        0x01, 
                        0x01, 
                        0x02, 
                        0x00, 
                        0x00, 
                        0x00
                    })
                    Method (ASIF, 0, NotSerialized)
                    {
                        Return (MBIF)
                    }

                    Name (OC01, Package (0x06)
                    {
                        0x01010000, 
                        "CPU FSB", 
                        0x4E20, 
                        0x9C40, 
                        0xC9, 
                        0x00010003
                    })
                    Name (OC02, Package (0x06)
                    {
                        0x01060001, 
                        "CPU Multiplier", 
                        0x04, 
                        0x19, 
                        0x16, 
                        0x00010000
                    })
                    Name (OC03, Package (0x06)
                    {
                        0x01060002, 
                        "FID VID Mode", 
                        0x00, 
                        0x01, 
                        0x01, 
                        0x00010000
                    })
                    Name (OC04, Package (0x06)
                    {
                        0x07010003, 
                        "PCI Express", 
                        0x2710, 
                        0x332C, 
                        0x65, 
                        0x00
                    })
                    Name (OC05, Package (0x06)
                    {
                        0x05050004, 
                        "OC Profile", 
                        0x00, 
                        0x04, 
                        0x05, 
                        0x00010001
                    })
                    Name (OC06, Package (0x06)
                    {
                        0x08050005, 
                        "Turbo NOS", 
                        0x00, 
                        0x04, 
                        0x05, 
                        0x00010000
                    })
                    Name (OC07, Package (0x06)
                    {
                        0x08060006, 
                        "NOS MODE", 
                        0x00, 
                        0x03, 
                        0x04, 
                        0x00
                    })
                    Name (OC08, Package (0x06)
                    {
                        0x04060003, 
                        "CPU Q-Fan Control", 
                        0x00, 
                        0x01, 
                        0x01, 
                        0x00010003
                    })
                    Name (OC09, Package (0x06)
                    {
                        0x01020008, 
                        "CPU VID", 
                        0x1F40, 
                        0x3D09, 
                        0x3D, 
                        0x00010000
                    })
                    Name (OC0A, Package (0x06)
                    {
                        0x02020009, 
                        "DRAM Voltage", 
                        0x0A28, 
                        0x0BB8, 
                        0x09, 
                        0x00010003
                    })
                    Name (OC0B, Package (0x06)
                    {
                        0x0906000C, 
                        "AI Overclock Tuner", 
                        0x00, 
                        0x04, 
                        0x05, 
                        0x00010003
                    })
                    Name (OC0C, Package (0x06)
                    {
                        0x0106000B, 
                        "Cool&Quiet Support", 
                        0x00, 
                        0x01, 
                        0x02, 
                        0x00010003
                    })
                    Name (OBUF, Package (0x0C)
                    {
                        OC01, 
                        OC02, 
                        OC03, 
                        OC04, 
                        OC05, 
                        OC06, 
                        OC07, 
                        OC08, 
                        OC09, 
                        OC0A, 
                        OC0B, 
                        OC0C
                    })
                    Name (OCVO, 0x00)
                    Method (OCIF, 0, NotSerialized)
                    {
                        Store (ShiftLeft (MAXV, 0x01), Local1)
                        Subtract (0x3D09, Multiply (Local1, 0x7D), Index (OC09, 0x03))
                        Subtract (0x3D, Local1, Index (OC09, 0x04))
                        Return (OBUF)
                    }

                    Name (TEM1, Package (0x11)
                    {
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00
                    })
                    Method (TEMP, 1, NotSerialized)
                    {
                        Store (FSBF, Index (TEM1, 0x00))
                        Store (FVCM, Index (TEM1, 0x01))
                        Store (AITU, Index (TEM1, 0x02))
                        Store (FIDV, Index (TEM1, 0x03))
                        Store (VIDV, Index (TEM1, 0x04))
                        Store (OCPI, Index (TEM1, 0x05))
                        Store (NOST, Index (TEM1, 0x06))
                        Store (NOS1, Index (TEM1, 0x07))
                        Store (DDRV, Index (TEM1, 0x08))
                        Store (CPUS, Index (TEM1, 0x09))
                        Store (CQFS, Index (TEM1, 0x0A))
                        Store (CQFT, Index (TEM1, 0x0B))
                        Store (AIDI, Index (TEM1, 0x0C))
                        Store (OVID, Index (TEM1, 0x0D))
                        Store (CCAQ, Index (TEM1, 0x0E))
                        Store (MAXF, Index (TEM1, 0x0F))
                        Store (MAXV, Index (TEM1, 0x10))
                        Return (TEM1)
                    }

                    Method (OCOP, 1, NotSerialized)
                    {
                        Store (DerefOf (Index (OC01, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (FSBF, Local0)
                            Multiply (Local0, 0x64, Local1)
                            Store (Local1, Index (CPUO, 0x01))
                            Subtract (Local0, 0xC8, Local2)
                            Store (Local2, Index (CPUO, 0x02))
                            Return (CPUO)
                        }

                        Store (DerefOf (Index (OC02, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (Add (ShiftRight (CURF, 0x01), 0x04), Index (CPUM, 0x01))
                            Store (Add (ShiftRight (CURF, 0x01), 0x04), Index (CPUM, 0x02))
                            If (LEqual (FVCM, 0x01))
                            {
                                Store (0x00010000, Index (OC02, 0x05))
                                Store (0x00, Index (CPUM, 0x03))
                            }
                            Else
                            {
                                Store (0x00010000, Index (OC02, 0x05))
                                Store (0x00, Index (CPUM, 0x03))
                            }

                            Store (Add (ShiftRight (MAXF, 0x01), 0x04), Index (OC02, 0x03))
                            Add (0x01, DerefOf (Index (OC02, 0x03)), Local0)
                            Store (DerefOf (Index (OC02, 0x02)), Local1)
                            Subtract (Local0, Local1, Index (OC02, 0x04))
                            Return (CPUM)
                        }

                        Store (DerefOf (Index (OC03, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (FVCM, Index (CPFV, 0x02))
                            If (LEqual (CCAQ, 0x00))
                            {
                                Store (0x00010000, Index (OC03, 0x05))
                                Store (0x00, Index (CPFV, 0x03))
                            }
                            Else
                            {
                                Store (0x00010003, Index (OC03, 0x05))
                                Store (0x01, Index (CPFV, 0x03))
                            }

                            Return (CPFV)
                        }

                        Store (DerefOf (Index (OC04, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Return (PCIV)
                        }

                        Store (DerefOf (Index (OC05, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (OCPI, Index (OCPR, 0x02))
                            If (LNot (LGreater (AITU, 0x03)))
                            {
                                Store (0x00010003, Index (OC05, 0x05))
                                Store (0x01, Index (OCPR, 0x03))
                            }
                            Else
                            {
                                Store (0x00010003, Index (OC05, 0x05))
                                Store (0x01, Index (OCPR, 0x03))
                            }

                            Return (OCPR)
                        }

                        Store (DerefOf (Index (OC06, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (AITU, 0x04))
                            {
                                Store (NOS1, Index (NOSP, 0x02))
                            }
                            Else
                            {
                                Store (0x00, Index (NOSP, 0x02))
                            }

                            Return (NOSP)
                        }

                        Store (DerefOf (Index (OC07, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (NOST, Index (NOSM, 0x02))
                            Return (NOSM)
                        }

                        Store (DerefOf (Index (OC08, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (CPUS, Index (FANB, 0x02))
                            Return (FANB)
                        }

                        Store (DerefOf (Index (OC09, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (Subtract (CURV, MAXV), Local2)
                            ShiftLeft (Local2, 0x01, Local2)
                            And (OVID, 0x01, Local3)
                            Or (Local2, Local3, Local2)
                            Store (Local2, Index (CPUV, 0x02))
                            Store (ShiftLeft (MAXV, 0x01), Local2)
                            Subtract (0x3D09, Multiply (Local2, 0x7D), Index (OC09, 0x03))
                            Subtract (0x3D, Local2, Index (OC09, 0x04))
                            Return (CPUV)
                        }

                        Store (DerefOf (Index (OC0A, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (DDRV, Index (DDVO, 0x02))
                            Return (DDVO)
                        }

                        Store (DerefOf (Index (OC0B, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (AITU, Index (AIOT, 0x02))
                            Return (AIOT)
                        }

                        Store (DerefOf (Index (OC0C, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (CCAQ, Index (ACAQ, 0x02))
                            Return (ACAQ)
                        }
                    }

                    Name (CPUO, Package (0x04)
                    {
                        0x01010000, 
                        0x4E20, 
                        0x00, 
                        0x01
                    })
                    Name (CPUM, Package (0x04)
                    {
                        0x01060001, 
                        0x00, 
                        0x00, 
                        0x00
                    })
                    Name (CPFV, Package (0x06)
                    {
                        0x01060002, 
                        0x00, 
                        0x00, 
                        0x00, 
                        "Auto", 
                        "Manual"
                    })
                    Name (PCIV, Package (0x04)
                    {
                        0x07010003, 
                        0x2710, 
                        0x64, 
                        0x00
                    })
                    Name (OCPR, Package (0x09)
                    {
                        0x05050004, 
                        0x00, 
                        0x00, 
                        0x00, 
                        "Overclock 1%", 
                        "Overclock 3%", 
                        "Overclock 5%", 
                        "Overclock 8%", 
                        "Overclock 10%"
                    })
                    Name (NOSP, Package (0x09)
                    {
                        0x08050005, 
                        0x00, 
                        0x00, 
                        0x01, 
                        "Overclock 1%", 
                        "Overclock 3%", 
                        "Overclock 5%", 
                        "Overclock 8%", 
                        "Overclock 10%"
                    })
                    Name (NOSM, Package (0x08)
                    {
                        0x08060006, 
                        0x00, 
                        0x00, 
                        0x00, 
                        "Auto", 
                        "Standard%", 
                        "Sensitive", 
                        "Heavy Load"
                    })
                    Name (FANB, Package (0x06)
                    {
                        0x04040007, 
                        0x00, 
                        0x00, 
                        0x01, 
                        "Disabled", 
                        "Enabled"
                    })
                    Name (CPUV, Package (0x04)
                    {
                        0x01020008, 
                        0x00, 
                        0x00, 
                        0x01
                    })
                    Name (DDVO, Package (0x0E)
                    {
                        0x02020009, 
                        0x00, 
                        0x00, 
                        0x01, 
                        "Auto", 
                        "2.60V", 
                        "2.65V", 
                        "2.70V", 
                        "2.75V", 
                        "2.80V", 
                        "2.85V", 
                        "2.90V", 
                        "2.95V", 
                        "3.00V"
                    })
                    Name (AIOT, Package (0x09)
                    {
                        0x0906000C, 
                        0x00, 
                        0x00, 
                        0x01, 
                        "Manual", 
                        "Auto", 
                        "Standard", 
                        "OverClock Profile", 
                        "AI NOS"
                    })
                    Name (ACAQ, Package (0x06)
                    {
                        0x0106000B, 
                        0x00, 
                        0x00, 
                        0x00, 
                        "Enabled", 
                        "Disabled"
                    })
                    Name (OCST, Package (0x0C)
                    {
                        Package (0x02)
                        {
                            0x01010000, 
                            0x01
                        }, 

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

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

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

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

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

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

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

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

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

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

                        Package (0x02)
                        {
                            0x0106000B, 
                            0x01
                        }
                    })
                    Method (PROC, 3, NotSerialized)
                    {
                        Store (DerefOf (Index (OC01, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (Arg1, Local2)
                            Add (Local2, 0xC8, Local2)
                            If (LEqual (Arg2, 0x00))
                            {
                                If (LNot (LGreater (AITU, 0x03)))
                                {
                                    If (LNot (LLess (FSBF, Local2)))
                                    {
                                        Subtract (FSBF, Local2, Local0)
                                    }
                                    Else
                                    {
                                        Subtract (Local2, FSBF, Local0)
                                    }

                                    If (LGreater (Local0, 0x0A))
                                    {
                                        Store (0x03, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                                        Return (0x03)
                                    }

                                    Store (0x01, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                                    Return (0x01)
                                }
                                Else
                                {
                                    Store (0x03, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                                    Return (0x03)
                                }
                            }

                            If (LNot (LLess (FSBF, Local2)))
                            {
                                Subtract (FSBF, Local2, Local0)
                            }
                            Else
                            {
                                Subtract (Local2, FSBF, Local0)
                            }

                            Store (Local2, FSBF)
                            If (LNot (LGreater (AITU, 0x03)))
                            {
                                Store (0x00, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x00, AITU)
                                Store (0x02, SMIS)
                                Store (0xAB, SMIC)
                                If (LGreater (Local0, 0x0A))
                                {
                                    Store (0x03, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                                    Return (0x03)
                                }

                                Store (0xAA, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x01, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                                Return (0x01)
                            }

                            Store (0x00, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x00, AITU)
                            Store (0x02, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x00)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC02, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Store (0x03, Index (DerefOf (Index (OCST, 0x01)), 0x01))
                                Return (0x03)
                            }

                            If (LEqual (CCQA, 0x00))
                            {
                                Store (0x01, CCAQ)
                                Store (0x0C, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x01, FVCM)
                                Store (0x01, SMIS)
                                Store (0xAB, SMIC)
                                Store (ShiftLeft (Subtract (Arg1, 0x04), 0x01), FIDV)
                                Store (0x03, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x01)), 0x01))
                                Return (0x03)
                            }

                            If (LEqual (FVCM, 0x00))
                            {
                                Store (0x01, FVCM)
                                Store (0x01, SMIS)
                                Store (0xAB, SMIC)
                                Store (ShiftLeft (Subtract (Arg1, 0x04), 0x01), FIDV)
                                Store (0x03, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x01)), 0x01))
                                Return (0x03)
                            }

                            Store (ShiftLeft (Subtract (Arg1, 0x04), 0x01), FIDV)
                            Store (0x03, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x01)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC03, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Store (0x03, Index (DerefOf (Index (OCST, 0x02)), 0x01))
                                Return (0x03)
                            }

                            If (LEqual (CCAQ, 0x00))
                            {
                                Store (0x01, CCAQ)
                                Store (0x0C, SMIS)
                                Store (0xAB, SMIC)
                                Store (Arg1, FVCM)
                                Store (0x01, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x02)), 0x01))
                                Return (0x03)
                            }

                            Store (Arg1, FVCM)
                            Store (0x01, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x02)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC04, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (0x03, Index (DerefOf (Index (OCST, 0x03)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC05, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                If (LNot (LGreater (AITU, 0x03)))
                                {
                                    Store (0x01, Index (DerefOf (Index (OCST, 0x04)), 0x01))
                                    Return (0x01)
                                }

                                Store (0x03, Index (DerefOf (Index (OCST, 0x04)), 0x01))
                                Return (0x03)
                            }

                            If (LNot (LGreater (AITU, 0x03)))
                            {
                                Store (0x03, AITU)
                                Store (0x02, SMIS)
                                Store (0xAB, SMIC)
                                Store (Arg1, OCPI)
                                Store (0x05, SMIS)
                                Store (0xAB, SMIC)
                                If (LEqual (Arg1, 0x00))
                                {
                                    Store (0xCA, FSBF)
                                    Store (0x00, SMIS)
                                    Store (0xAB, SMIC)
                                }

                                If (LEqual (Arg1, 0x01))
                                {
                                    Store (0xCE, FSBF)
                                    Store (0x00, SMIS)
                                    Store (0xAB, SMIC)
                                }

                                If (LEqual (Arg1, 0x02))
                                {
                                    Store (0xD2, FSBF)
                                    Store (0x00, SMIS)
                                    Store (0xAB, SMIC)
                                }

                                If (LEqual (Arg1, 0x03))
                                {
                                    Store (0xD8, FSBF)
                                    Store (0x00, SMIS)
                                    Store (0xAB, SMIC)
                                }

                                If (LEqual (Arg1, 0x04))
                                {
                                    Store (0xDC, FSBF)
                                    Store (0x00, SMIS)
                                    Store (0xAB, SMIC)
                                }

                                Store (0xAA, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x01, Index (DerefOf (Index (OCST, 0x04)), 0x01))
                                Return (0x01)
                            }

                            Store (0x03, AITU)
                            Store (0x02, SMIS)
                            Store (0xAB, SMIC)
                            Store (Arg1, OCPI)
                            Store (0x05, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x04)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC06, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                If (LNot (LGreater (AITU, 0x03)))
                                {
                                    Store (0x03, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                                    Return (0x03)
                                }

                                If (LEqual (Arg1, 0x00))
                                {
                                    Store (0x03, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                                    Return (0x03)
                                }

                                Store (0x01, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                                Return (0x01)
                            }

                            If (LNot (LGreater (AITU, 0x03)))
                            {
                                Store (0x04, AITU)
                                Store (0x02, SMIS)
                                Store (0xAB, SMIC)
                                Store (Arg1, NOS1)
                                Store (0x07, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                                Return (0x03)
                            }

                            If (LEqual (Arg1, 0x00))
                            {
                                Store (0x01, AITU)
                                Store (0x02, SMIS)
                                Store (0xAB, SMIC)
                                Store (Arg1, NOS1)
                                Store (0x07, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                                Return (0x03)
                            }

                            Store (Arg1, NOS1)
                            Store (0x07, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x01, Index (DerefOf (Index (OCST, 0x05)), 0x01))
                            Return (0x01)
                        }

                        Store (DerefOf (Index (OC07, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            Store (0x01, Index (DerefOf (Index (OCST, 0x06)), 0x01))
                            Return (0x01)
                        }

                        Store (DerefOf (Index (OC08, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Store (0x01, Index (DerefOf (Index (OCST, 0x07)), 0x01))
                                Return (0x01)
                            }

                            Store (Arg1, CPUS)
                            Store (0x09, SMIS)
                            Store (0xAB, SMIC)
                            Store (0xBB, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x01, Index (DerefOf (Index (OCST, 0x07)), 0x01))
                            Return (0x01)
                        }

                        Store (DerefOf (Index (OC09, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Store (0x03, Index (DerefOf (Index (OCST, 0x08)), 0x01))
                                Return (0x03)
                            }

                            Store (CURF, FIDV)
                            Store (0x03, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x01, CCAQ)
                            Store (0x0C, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x01, FVCM)
                            Store (0x01, SMIS)
                            Store (0xAB, SMIC)
                            Store (Add (Arg1, ShiftLeft (MAXV, 0x01)), OVID)
                            Store (0x0B, SMIS)
                            Store (0xAB, SMIC)
                            Store (ShiftRight (Add (Arg1, ShiftLeft (MAXV, 0x01)), 0x01), VIDV)
                            Store (0x04, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x08)), 0x01))
                            Return (0x03)
                        }

                        Store (DerefOf (Index (OC0A, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Store (0x01, Index (DerefOf (Index (OCST, 0x09)), 0x01))
                                Return (0x01)
                            }

                            If (LEqual (Arg1, DDRV))
                            {
                                Store (0x01, Index (DerefOf (Index (OCST, 0x09)), 0x01))
                                Return (0x01)
                            }

                            Store (Arg1, DDRV)
                            Store (0x08, SMIS)
                            Store (0xAB, SMIC)
                            Store (DerefOf (Index (DDRT, Arg1)), QDDR)
                            Store (0x01, Index (DerefOf (Index (OCST, 0x09)), 0x01))
                            Return (0x01)
                        }

                        Store (DerefOf (Index (OC0B, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                If (LNot (LEqual (Arg1, AITU)))
                                {
                                    Store (0x03, Index (DerefOf (Index (OCST, 0x0A)), 0x01))
                                    Return (0x03)
                                }

                                Store (0x01, Index (DerefOf (Index (OCST, 0x0A)), 0x01))
                                Return (0x01)
                            }

                            If (LNot (LEqual (Arg1, AITU)))
                            {
                                Store (Arg1, AITU)
                                Store (0x02, SMIS)
                                Store (0xAB, SMIC)
                                Store (0x03, Index (DerefOf (Index (OCST, 0x0A)), 0x01))
                                Return (0x03)
                            }

                            Store (Arg1, AITU)
                            Store (0x02, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x01, Index (DerefOf (Index (OCST, 0x0A)), 0x01))
                            Return (0x01)
                        }

                        Store (DerefOf (Index (OC0C, 0x00)), Local1)
                        If (LEqual (Arg0, Local1))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                If (LEqual (Arg1, CCAQ))
                                {
                                    Store (0x01, Index (DerefOf (Index (OCST, 0x0B)), 0x01))
                                    Return (0x01)
                                }

                                Store (0x03, Index (DerefOf (Index (OCST, 0x0B)), 0x01))
                                Return (0x03)
                            }

                            If (LEqual (Arg1, CCAQ))
                            {
                                Store (0x01, Index (DerefOf (Index (OCST, 0x0B)), 0x01))
                                Return (0x01)
                            }

                            Store (Arg1, CCAQ)
                            Store (0x09, SMIS)
                            Store (0xAB, SMIC)
                            Store (0x03, Index (DerefOf (Index (OCST, 0x0B)), 0x01))
                            Return (0x03)
                        }
                    }

                    Method (GETM, 1, NotSerialized)
                    {
                        Multiply (Add (Arg0, 0x01), 0x03E8, Local0)
                        Store (0xFFFF, Local6)
                        Store (0x10, Local1)
                        While (LNot (LGreater (Local1, 0x80)))
                        {
                            Store (0x10, Local2)
                            While (LNot (LGreater (Local2, 0x80)))
                            {
                                Store (Divide (Multiply (Local2, 0x0005E9AC), Multiply (Local1, 0x04), ), Local3)
                                Multiply (Local3, 0x02, Local3)
                                If (LGreater (Local3, Local0))
                                {
                                    Store (Subtract (Local3, Local0), Local3)
                                }
                                Else
                                {
                                    Store (Subtract (Local0, Local3), Local3)
                                }

                                If (LLess (Local3, Local6))
                                {
                                    Store (Local1, Local4)
                                    Store (Local2, Local5)
                                    Store (Local3, Local6)
                                }

                                Increment (Local2)
                            }

                            Increment (Local1)
                        }

                        ShiftLeft (Local5, 0x08, Local1)
                        Or (Local1, Local4, Local6)
                        And (Local6, 0xFFFF, Local6)
                        Return (Local6)
                    }
                }

                Device (\_SB.PCI0.PCIE)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x11)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly, 0xE0000000, 0x10000000)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x04, BAS1)
                        CreateDWordField (CRS, 0x08, LEN1)
                        Store (\PCIB, BAS1)
                        Store (\PCIL, LEN1)
                        Return (CRS)
                    }
                }

                Scope (\_PR)
                {
                    Processor (CPU1, 0x01, 0x00005010, 0x06)
                    {
                        Name (_PCT, Package (0x02)
                        {
                            ResourceTemplate ()
                            {
                                Register (FFixedHW, 0x00, 0x00, 0x0000000000000000)
                            }, 

                            ResourceTemplate ()
                            {
                                Register (FFixedHW, 0x00, 0x00, 0x0000000000000000)
                            }
                        })
                        Name (_PSS, Package (0x04)
                        {
                            Package (0x06)
                            {
                                0x00000898, 
                                0x000105B8, 
                                0x00000064, 
                                0x00000007, 
                                0xE020298E, 
                                0x0000018E
                            }, 

                            Package (0x06)
                            {
                                0x000007D0, 
                                0x0000DAC0, 
                                0x00000064, 
                                0x00000007, 
                                0xE0202A0C, 
                                0x0000020C
                            }, 

                            Package (0x06)
                            {
                                0x00000708, 
                                0x0000B3B0, 
                                0x00000064, 
                                0x00000007, 
                                0xE0202A8A, 
                                0x0000028A
                            }, 

                            Package (0x06)
                            {
                                0x000003E8, 
                                0x00004E20, 
                                0x00000064, 
                                0x00000007, 
                                0xE0202C82, 
                                0x00000482
                            }
                        })
                        Name (PSXG, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (PSXF, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (PSXE, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (PSXD, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (PSXC, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Name (PSXB, Buffer (0x18)
                        {
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                        })
                        Method (_PPC, 0, NotSerialized)
                        {
                            Return (0x00)
                        }
                    }

                    Processor (CPU2, 0x02, 0x00000000, 0x00)
                    {
                        Name (APCT, Package (0x02)
                        {
                            ResourceTemplate ()
                            {
                                Register (FFixedHW, 0x00, 0x00, 0x0000000000000000)
                            }, 

                            ResourceTemplate ()
                            {
                                Register (FFixedHW, 0x00, 0x00, 0x0000000000000000)
                            }
                        })
                        Name (APSS, Package (0x0A)
                        {
                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }, 

                            Package (0x06)
                            {
                                0x09999999, 
                                0x00099999, 
                                0x00999999, 
                                0x00999999, 
                                0x99999999, 
                                0x99999999
                            }
                        })
                        Method (APPC, 0, NotSerialized)
                        {
                            Return (0x00)
                        }
                    }
                }

                Device (OMSC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x00)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly, 0x00000000, 0x00000000)
                        Memory32Fixed (ReadOnly, 0x00000000, 0x00000000)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (APIC)
                        {
                            CreateDWordField (CRS, 0x08, ML01)
                            CreateDWordField (CRS, 0x04, MB01)
                            CreateDWordField (CRS, 0x14, ML02)
                            CreateDWordField (CRS, 0x10, MB02)
                            Store (0xFEC00000, MB01)
                            Store (0x1000, ML01)
                            Store (0xFEE00000, MB02)
                            Store (0x1000, ML02)
                        }

                        Return (CRS)
                    }
                }

                Device (\_SB.RMEM)
                {
                    Name (_HID, EisaId ("PNP0C01"))
                    Name (_UID, 0x01)
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite, 0x00000000, 0x000A0000)
                        Memory32Fixed (ReadOnly, 0x00000000, 0x00000000)
                        Memory32Fixed (ReadOnly, 0x000E0000, 0x00020000)
                        Memory32Fixed (ReadWrite, 0x00100000, 0x00000000)
                        Memory32Fixed (ReadOnly, 0x00000000, 0x00000000)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (CRS, 0x10, BAS1)
                        CreateDWordField (CRS, 0x14, LEN1)
                        CreateDWordField (CRS, 0x1C, BAS2)
                        CreateDWordField (CRS, 0x20, LEN2)
                        CreateDWordField (CRS, 0x2C, LEN3)
                        CreateDWordField (CRS, 0x34, BAS4)
                        CreateDWordField (CRS, 0x38, LEN4)
                        If (OSFL ()) {}
                        Else
                        {
                            If (MG1B)
                            {
                                If (LGreater (MG1B, 0x000C0000))
                                {
                                    Store (0x000C0000, BAS1)
                                    Subtract (MG1B, BAS1, LEN1)
                                }
                            }
                            Else
                            {
                                Store (0x000C0000, BAS1)
                                Store (0x00020000, LEN1)
                            }

                            If (Add (MG1B, MG1L, Local0))
                            {
                                Store (Local0, BAS2)
                                Subtract (0x00100000, BAS2, LEN2)
                            }
                        }

                        Subtract (MG2B, 0x00100000, LEN3)
                        Add (MG2B, MG2L, BAS4)
                        Subtract (0x00, BAS4, LEN4)
                        Return (CRS)
                    }
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, 0x0B03D041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (0x01, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
                        IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
                        IRQNoFlags () {1}
                    })
                }

                Method (PS2K._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x10, 0x04))
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F03"))
                    Name (_CID, 0x130FD041)
                    Method (_STA, 0, NotSerialized)
                    {
                        ShiftLeft (0x01, 0x0C, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

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

                Method (PS2M._PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x10, 0x04))
                }

                Device (UAR1)
                {
                    Name (_UID, 0x01)
                    Method (_HID, 0, NotSerialized)
                    {
                        Return (UHID (0x00))
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        Return (DSTA (0x00))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DCNT (0x00, 0x00)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (DCRS (0x00, 0x01))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        DSRS (Arg0, 0x00)
                    }

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

                    Name (CMPR, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08)
                            IRQNoFlags () {4}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x02F8, 0x02F8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03E8, 0x03E8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x02E8, 0x02E8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x02F8, 0x02F8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x03E8, 0x03E8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x02E8, 0x02E8, 0x01, 0x08)
                            IRQNoFlags () {3,4,5,6,7,10,11,12}
                            DMA (Compatibility, NotBusMaster, Transfer8) {0,1,2,3}
                        }
                        EndDependentFn ()
                    })
                }

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

                Device (SIOR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Method (_UID, 0, NotSerialized)
                    {
                        Return (SPIO)
                    }

                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x00)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        If (LAnd (LNot (LEqual (SPIO, 0x03F0)), LGreater (SPIO, 0xF0)))
                        {
                            CreateWordField (CRS, 0x02, GP10)
                            CreateWordField (CRS, 0x04, GP11)
                            CreateByteField (CRS, 0x07, GPL1)
                            Store (SPIO, GP10)
                            Store (SPIO, GP11)
                            Store (0x02, GPL1)
                        }

                        If (IOPB)
                        {
                            CreateWordField (CRS, 0x0A, GP20)
                            CreateWordField (CRS, 0x0C, GP21)
                            CreateByteField (CRS, 0x0F, GPL2)
                            Store (IOPB, GP20)
                            Store (IOPB, GP21)
                            Store (IOPL, GPL2)
                        }

                        If (IOEB)
                        {
                            CreateWordField (CRS, 0x12, GP30)
                            CreateWordField (CRS, 0x14, GP31)
                            CreateByteField (CRS, 0x17, GPL3)
                            Store (IOEB, GP30)
                            Store (IOEB, GP31)
                            Store (IOEL, GPL3)
                        }

                        If (IOGB)
                        {
                            CreateWordField (CRS, 0x1A, GP40)
                            CreateWordField (CRS, 0x1C, GP41)
                            CreateByteField (CRS, 0x1F, GPL4)
                            Store (IOGB, GP40)
                            Store (IOGB, GP41)
                            Store (IOGL, GPL4)
                        }

                        If (IODB)
                        {
                            CreateWordField (CRS, 0x22, GP50)
                            CreateWordField (CRS, 0x24, GP51)
                            CreateByteField (CRS, 0x27, GPL5)
                            Store (IODB, GP50)
                            Store (IODB, GP51)
                            Store (IODL, GPL5)
                        }

                        Return (CRS)
                    }
                }

                Name (DCAT, Package (0x16)
                {
                    0x01, 
                    0x02, 
                    0x03, 
                    0x00, 
                    0xFF, 
                    0x08, 
                    0xFF, 
                    0xFF, 
                    0x09, 
                    0xFF, 
                    0x05, 
                    0x04, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0x0A, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF, 
                    0xFF
                })
                Name (IKEY, Package (0x02)
                {
                    Package (0x04)
                    {
                        0x87, 
                        0x01, 
                        0x55, 
                        0x55
                    }, 

                    Package (0x04)
                    {
                        0x87, 
                        0x01, 
                        0x55, 
                        0xAA
                    }
                })
                Name (KBFG, 0x01)
                Name (MSFG, 0x01)
                Name (UR1F, 0x01)
                Method (ENFG, 1, NotSerialized)
                {
                    Store (0x00, Local1)
                    If (LEqual (SPIO, 0x2E))
                    {
                        Store (0x00, Local1)
                    }

                    If (LEqual (SPIO, 0x4E))
                    {
                        Store (0x01, Local1)
                    }

                    Store (0x00, Local0)
                    While (LNot (LEqual (Local0, 0x04)))
                    {
                        Store (DerefOf (Index (DerefOf (Index (IKEY, Local1)), Local0)), INDX)
                        Increment (Local0)
                    }

                    Store (Arg0, LDN)
                }

                Method (ENTR, 0, NotSerialized)
                {
                    Store (0x87, INDX)
                    Store (0x01, INDX)
                    Store (0x55, INDX)
                    If (LEqual (SPIO, 0x2E))
                    {
                        Store (0x55, INDX)
                    }
                    Else
                    {
                        Store (0xAA, INDX)
                    }
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0x02, INDX)
                    Store (0x02, DATA)
                }

                Method (LPTM, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    And (OPT0, 0x02, Local0)
                    EXFG ()
                    Return (Local0)
                }

                Method (UHID, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    And (OPT0, 0x70, Local0)
                    EXFG ()
                    If (Local0)
                    {
                        Return (0x1005D041)
                    }

                    Return (0x0105D041)
                }

                Method (ORF0, 1, NotSerialized)
                {
                    ENTR ()
                    Or (OPT0, Arg0, OPT0)
                    EXFG ()
                }

                Method (ORF1, 1, NotSerialized)
                {
                    ENTR ()
                    Or (OPT1, Arg0, OPT1)
                    EXFG ()
                }

                Method (ORF2, 1, NotSerialized)
                {
                    ENTR ()
                    Or (OPT2, Arg0, OPT2)
                    EXFG ()
                }

                Method (ANF0, 1, NotSerialized)
                {
                    ENTR ()
                    And (OPT0, Arg0, OPT0)
                    EXFG ()
                }

                Method (ANF2, 1, NotSerialized)
                {
                    ENTR ()
                    And (OPT2, Arg0, OPT2)
                    EXFG ()
                }

                Method (ANF4, 1, NotSerialized)
                {
                    ENTR ()
                    And (OPT4, Arg0, OPT4)
                    EXFG ()
                }

                Method (STF0, 1, NotSerialized)
                {
                    ENTR ()
                    Store (Arg0, OPT0)
                    EXFG ()
                }

                Method (STF1, 1, NotSerialized)
                {
                    ENTR ()
                    Store (Arg0, OPT1)
                    EXFG ()
                }

                Method (SIOS, 1, NotSerialized)
                {
                    Store ("SIOS", Debug)
                    Store (0x00, GP10)
                    If (LLess (Arg0, 0x05))
                    {
                        ENFG (0x04)
                        Store (0x01, ACTR)
                        EXFG ()
                        ANF4 (0xFC)
                        ORF1 (0x18)
                        If (KBFG)
                        {
                            ORF0 (0x08)
                        }
                        Else
                        {
                            ANF0 (0xF7)
                        }

                        If (MSFG)
                        {
                            ORF0 (0x10)
                        }
                        Else
                        {
                            ANF0 (0xEF)
                            ENFG (0x06)
                            Store (0x00, ACTR)
                            EXFG ()
                        }

                        ENFG (0x04)
                        ANF2 (0xF0)
                        ENFG (0x07)
                        And (OPF9, 0xFE, OPF9)
                        And (OPC0, 0xFE, OPC0)
                        And (OPC3, 0xFE, OPC3)
                        And (OP29, 0xEF, OP29)
                        EXFG ()
                    }
                    Else
                    {
                        ENFG (0x07)
                        And (OPC0, 0x00, OPC0)
                        Or (OPC0, 0x01, OPC0)
                        And (OPC3, 0x00, OPC3)
                        Or (OPC3, 0x01, OPC3)
                        Or (OPF9, 0x01, OPF9)
                        And (OP29, 0xEF, OP29)
                        EXFG ()
                    }
                }

                Method (SIOW, 1, NotSerialized)
                {
                    Store (0x01, GP10)
                    Store (0x01, GP40)
                    Store ("SIOW", Debug)
                    ENFG (0x04)
                    Store (0x00, ACTR)
                    EXFG ()
                    STF0 (0x00)
                    STF1 (0xFF)
                    ENFG (0x07)
                    Or (OP29, 0x10, OP29)
                    Or (OPC0, 0x01, OPC0)
                    Or (OPC3, 0x01, OPC3)
                    EXFG ()
                    ENFG (0x05)
                    Or (ACTR, 0x01, ACTR)
                    EXFG ()
                    ENFG (0x06)
                    Or (ACTR, 0x01, ACTR)
                    EXFG ()
                    ENFG (0x04)
                    Store (0x01, ACTR)
                    EXFG ()
                }

                Method (SIOH, 0, NotSerialized)
                {
                    Store ("SIOH", Debug)
                }

                OperationRegion (IOID, SystemIO, SPIO, 0x02)
                Field (IOID, ByteAcc, NoLock, Preserve)
                {
                    INDX,   8, 
                    DATA,   8
                }

                IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x07), 
                    LDN,    8, 
                    Offset (0x29), 
                    OP29,   8, 
                    Offset (0x30), 
                    ACTR,   8, 
                    Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    IOH2,   8, 
                    IOL2,   8, 
                    Offset (0x70), 
                    INTR,   8, 
                    Offset (0x74), 
                    DMCH,   8, 
                    Offset (0xC0), 
                    OPC0,   8, 
                    OPC1,   8, 
                    OPC2,   8, 
                    OPC3,   8, 
                    Offset (0xF0), 
                    OPT0,   8, 
                    OPT1,   8, 
                    OPT2,   8, 
                    OPT3,   8, 
                    OPT4,   8, 
                    Offset (0xF8), 
                    OPF8,   8, 
                    OPF9,   8, 
                    OPFA,   8, 
                    OPFB,   8
                }

                Method (PS2K._PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, KBFG)
                    }
                    Else
                    {
                        Store (0x00, KBFG)
                    }
                }

                Method (PS2M._PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, MSFG)
                    }
                    Else
                    {
                        Store (0x00, MSFG)
                    }
                }

                Method (CGLD, 1, NotSerialized)
                {
                    Return (DerefOf (Index (DCAT, Arg0)))
                }

                Method (DSTA, 1, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    Store (ACTR, Local0)
                    EXFG ()
                    If (LEqual (Local0, 0xFF))
                    {
                        Return (0x00)
                    }

                    And (Local0, 0x01, Local0)
                    Or (IOST, ShiftLeft (Local0, Arg0), IOST)
                    If (Local0)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        If (And (ShiftLeft (0x01, Arg0), IOST))
                        {
                            Return (0x0D)
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }
                }

                Method (DCNT, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    ShiftLeft (IOAH, 0x08, Local1)
                    Or (IOAL, Local1, Local1)
                    RRIO (Arg0, Arg1, Local1, 0x08)
                    If (LAnd (LLess (DMCH, 0x04), LNot (LEqual (And (DMCH, 0x03, Local1), 0x00))))
                    {
                        RDMA (Arg0, Arg1, Increment (Local1))
                    }

                    Store (Arg1, ACTR)
                    EXFG ()
                }

                Name (CRS1, ResourceTemplate ()
                {
                    IO (Decode16, 0x0000, 0x0000, 0x01, 0x00)
                    IRQNoFlags () {}
                    DMA (Compatibility, NotBusMaster, Transfer8) {}
                })
                CreateWordField (CRS1, 0x09, IRQM)
                CreateByteField (CRS1, 0x0C, DMAM)
                CreateWordField (CRS1, 0x02, IO11)
                CreateWordField (CRS1, 0x04, IO12)
                CreateByteField (CRS1, 0x07, LEN1)
                Name (CRS2, ResourceTemplate ()
                {
                    IO (Decode16, 0x0000, 0x0000, 0x01, 0x00)
                    IO (Decode16, 0x0000, 0x0000, 0x01, 0x00)
                    IRQNoFlags () {6}
                    DMA (Compatibility, NotBusMaster, Transfer8) {2}
                })
                CreateWordField (CRS2, 0x11, IRQE)
                CreateByteField (CRS2, 0x14, DMAE)
                CreateWordField (CRS2, 0x02, IO21)
                CreateWordField (CRS2, 0x04, IO22)
                CreateByteField (CRS2, 0x07, LEN2)
                CreateWordField (CRS2, 0x0A, IO31)
                CreateWordField (CRS2, 0x0C, IO32)
                CreateByteField (CRS2, 0x0F, LEN3)
                Method (DCRS, 2, NotSerialized)
                {
                    ENFG (CGLD (Arg0))
                    ShiftLeft (IOAH, 0x08, IO11)
                    Or (IOAL, IO11, IO11)
                    Store (IO11, IO12)
                    Subtract (FindSetRightBit (IO11), 0x01, Local0)
                    ShiftLeft (0x01, Local0, LEN1)
                    If (INTR)
                    {
                        ShiftLeft (0x01, INTR, IRQM)
                    }
                    Else
                    {
                        Store (0x00, IRQM)
                    }

                    If (LOr (LGreater (DMCH, 0x03), LEqual (Arg1, 0x00)))
                    {
                        Store (0x00, DMAM)
                    }
                    Else
                    {
                        And (DMCH, 0x03, Local1)
                        ShiftLeft (0x01, Local1, DMAM)
                    }

                    EXFG ()
                    Return (CRS1)
                }

                Method (DSRS, 2, NotSerialized)
                {
                    CreateWordField (Arg0, 0x09, IRQM)
                    CreateByteField (Arg0, 0x0C, DMAM)
                    CreateWordField (Arg0, 0x02, IO11)
                    ENFG (CGLD (Arg1))
                    And (IO11, 0xFF, IOAL)
                    ShiftRight (IO11, 0x08, IOAH)
                    If (IRQM)
                    {
                        FindSetRightBit (IRQM, Local0)
                        Subtract (Local0, 0x01, INTR)
                    }
                    Else
                    {
                        Store (0x00, INTR)
                    }

                    If (DMAM)
                    {
                        FindSetRightBit (DMAM, Local0)
                        Subtract (Local0, 0x01, DMCH)
                    }
                    Else
                    {
                        Store (0x04, DMCH)
                    }

                    EXFG ()
                    DCNT (Arg1, 0x01)
                }

                OperationRegion (GPIO, SystemIO, IO1B, 0x04)
                Field (GPIO, ByteAcc, NoLock, Preserve)
                {
                    GP10,   1, 
                    GP11,   1, 
                    GP12,   1, 
                    GP13,   1, 
                    GO14,   1, 
                    GO15,   1, 
                    GO16,   1, 
                    GO17,   1, 
                    GP20,   1, 
                    GP21,   1, 
                    GP22,   1, 
                    GP23,   1, 
                    GO24,   1, 
                    GO25,   1, 
                    GO26,   1, 
                    GO27,   1, 
                    GP30,   1, 
                    GP31,   1, 
                    GP32,   1, 
                    GP33,   1, 
                    GO34,   1, 
                    GO35,   1, 
                    GO36,   1, 
                    GO37,   1, 
                    GP40,   1, 
                    GP41,   1, 
                    GP42,   1, 
                    GP43,   1, 
                    GO44,   1, 
                    GO45,   1, 
                    GO46,   1, 
                    GO47,   1
                }
            }

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

            Device (USB0)
            {
                Name (_ADR, 0x000B0000)
                Name (_S1D, 0x01)
                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), 0x01), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

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

            Device (USB2)
            {
                Name (_ADR, 0x000B0001)
                Name (_S1D, 0x01)
                Method (_S3D, 0, NotSerialized)
                {
                    If (LOr (LEqual (OSFL (), 0x01), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

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

            Device (NMAC)
            {
                Name (_ADR, 0x00130000)
                Name (_PRW, Package (0x02)
                {
                    0x0B, 
                    0x05
                })
                Scope (\_GPE)
                {
                    Method (_L0B, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.NMAC, 0x02)
                        Notify (\_SB.PWRB, 0x02)
                    }
                }
            }

            Device (IDE0)
            {
                Name (_ADR, 0x000F0000)
                Name (PTS0, 0x00)
                Name (SID0, 0x00)
                Name (SID1, 0x00)
                Name (SID2, 0x00)
                Name (SID3, 0x00)
                Name (SID4, 0x00)
                Name (SID5, 0x00)
                OperationRegion (IRQM, SystemIO, 0x21, 0x01)
                Field (IRQM, ByteAcc, NoLock, Preserve)
                {
                    IR0M,   1
                }

                Name (REGF, 0x01)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                OperationRegion (A090, PCI_Config, 0x50, 0x18)
                Field (A090, DWordAcc, NoLock, Preserve)
                {
                    ID20,   16, 
                    Offset (0x08), 
                    IDTS,   16, 
                    IDTP,   16, 
                    ID22,   32, 
                    UMSS,   16, 
                    UMSP,   16
                }

                Name (TIM0, Package (0x07)
                {
                    Package (0x05)
                    {
                        0x3C, 
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x05)
                    {
                        0x11, 
                        0x20, 
                        0x22, 
                        0x47, 
                        0xA8
                    }, 

                    Package (0x07)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x2D, 
                        0x1E, 
                        0x14, 
                        0x0F
                    }, 

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

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

                    Package (0x08)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x00, 
                        0x03, 
                        0x04, 
                        0x05, 
                        0x06
                    }, 

                    Package (0x07)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x04, 
                        0x05, 
                        0x06, 
                        0x07
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, 0x00, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x58, 0x0C)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    SSPT,   8, 
                    SMPT,   8, 
                    PSPT,   8, 
                    PMPT,   8, 
                    SSAS,   2, 
                    SMAS,   2, 
                    PSAS,   2, 
                    PMAS,   2, 
                    Offset (0x06), 
                    SDDR,   4, 
                    SDDA,   4, 
                    PDDR,   4, 
                    PDDA,   4, 
                    SSUT,   3, 
                        ,   3, 
                    SSUE,   2, 
                    SMUT,   3, 
                        ,   3, 
                    SMUE,   2, 
                    PSUT,   3, 
                        ,   3, 
                    PSUE,   2, 
                    PMUT,   3, 
                        ,   3, 
                    PMUE,   2
                }

                Name (GMPT, 0x00)
                Name (GMUE, 0x00)
                Name (GMUT, 0x00)
                Name (GSPT, 0x00)
                Name (GSUE, 0x00)
                Name (GSUT, 0x00)
                Device (CHN0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store ("GTM_CHN0", Debug)
                        Return (GTM (PMPT, PMUE, PMUT, PSPT, PSUE, PSUT))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store ("STM_CHN0", Debug)
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        Store (PMPT, GMPT)
                        Store (PMUE, GMUE)
                        Store (PMUT, GMUT)
                        Store (PSPT, GSPT)
                        Store (PSUE, GSUE)
                        Store (PSUT, GSUT)
                        STM ()
                        Store (GMPT, PMPT)
                        Store (GMUE, PMUE)
                        Store (GMUT, PMUT)
                        Store (GSPT, PSPT)
                        Store (GSUE, PSUE)
                        Store (GSUT, PSUT)
                        Store (GTF (0x00, Arg1), ATA0)
                        Store (GTF (0x01, Arg2), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("_GTF_CHN0_DRV0", Debug)
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("_GTF_CHN0_DRV1", Debug)
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store ("GTM_CHN1", Debug)
                        Return (GTM (SMPT, SMUE, SMUT, SSPT, SSUE, SSUT))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0)
                        Store (SMPT, GMPT)
                        Store (SMUE, GMUE)
                        Store (SMUT, GMUT)
                        Store (SSPT, GSPT)
                        Store (SSUE, GSUE)
                        Store (SSUT, GSUT)
                        STM ()
                        Store (GMPT, SMPT)
                        Store (GMUE, SMUE)
                        Store (GMUT, SMUT)
                        Store (GSPT, SSPT)
                        Store (GSUE, SSUE)
                        Store (GSUT, SSUT)
                        Store (GTF (0x00, Arg1), ATA2)
                        Store (GTF (0x01, Arg2), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("_GTF_CHN1_DRV0", Debug)
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store ("_GTF_CHN1_DRV1", Debug)
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (DRMP, 0, NotSerialized)
                {
                    ShiftRight (CPB0, 0x04, Local1)
                    And (Local1, 0x0F, Local0)
                    Return (Local0)
                }

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

                    If (LEqual (PTS0, 0x01))
                    {
                        If (OSFL ())
                        {
                            Store (0x01, IR0M)
                        }
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg0, MTR, 0x00, 0x00), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 0x00, 0x00), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (Arg1)
                    {
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x05)), Arg2)), Local5)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local5)), DMA0)
                        Or (CHNF, 0x01, CHNF)
                    }

                    If (Arg4)
                    {
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x05)), Arg5)), Local5)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Store (TMD0, Debug)
                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF) {}
                    Else
                    {
                        Return (0x00)
                    }

                    If (PTS0)
                    {
                        Store (SID0, ID20)
                        Store (SID1, IDTS)
                        Store (SID2, IDTP)
                        Store (SID3, ID22)
                        Store (SID4, UMSS)
                        Store (SID5, UMSP)
                    }
                    Else
                    {
                        Store (ID20, SID0)
                        Store (IDTS, SID1)
                        Store (IDTP, SID2)
                        Store (ID22, SID3)
                        Store (UMSS, SID4)
                        Store (UMSP, SID5)
                    }

                    Store (0x00, PTS0)
                    Store (0x00, GMUE)
                    Store (0x00, GMUT)
                    Store (0x00, GSUE)
                    Store (0x00, GSUT)
                    If (And (CHNF, 0x01))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x02)), MLE, DMA0, MTR, 0x00, 0x00), Local0)
                        If (LGreater (Local0, 0x06))
                        {
                            Store (0x06, Local0)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), GMUT)
                        Or (GMUE, 0x03, GMUE)
                    }
                    Else
                    {
                        If (Or (LEqual (PIO0, Ones), LEqual (PIO0, 0x00)))
                        {
                            If (And (LLess (DMA0, Ones), LGreater (DMA0, 0x00)))
                            {
                                Store (DMA0, PIO0)
                            }
                        }
                    }

                    If (And (CHNF, 0x04))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x02)), MLE, DMA1, MTR, 0x00, 0x00), Local0)
                        If (LGreater (Local0, 0x06))
                        {
                            Store (0x06, Local0)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), GSUT)
                        Or (GSUE, 0x03, GSUE)
                    }
                    Else
                    {
                        If (Or (LEqual (PIO1, Ones), LEqual (PIO1, 0x00)))
                        {
                            If (And (LLess (DMA1, Ones), LGreater (DMA1, 0x00)))
                            {
                                Store (DMA1, PIO1)
                            }
                        }
                    }

                    And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO0, MTR, 0x00, 0x00), 0x07, Local0)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x01)), Local0)), Local1)
                    Store (Local1, GMPT)
                    And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO1, MTR, 0x00, 0x00), 0x07, Local0)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x01)), Local0)), Local1)
                    Store (Local1, GSPT)
                    Return (0x00)
                }

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

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

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

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

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x02)), MLE, DMAT, MTR, 0x00, 0x00), Local1)
                        If (LGreater (Local1, 0x06))
                        {
                            Store (0x06, Local1)
                        }

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

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

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

                    Store ("ATAB_GTF", Debug)
                    Store (ATAB, Debug)
                    Return (ATAB)
                }

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

            Device (ATA0)
            {
                Name (_ADR, 0x00100000)
                Device (PRI0)
                {
                    Name (_ADR, 0x00)
                    Name (SPTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SPTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SPTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (SEC0)
                {
                    Name (_ADR, 0x01)
                    Name (SSTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SSTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SSTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }

                Method (DRMP, 0, NotSerialized)
                {
                    Store (0x0C, Local0)
                    If (LEqual (_ADR, 0x00100000))
                    {
                        Store (0x08, Local0)
                    }

                    ShiftRight (CPB0, Local0, Local1)
                    And (Local1, 0x0F, Local0)
                    Return (Local0)
                }
            }

            Device (ATA1)
            {
                Name (_ADR, 0x00110000)
                Device (PRI0)
                {
                    Name (_ADR, 0x00)
                    Name (SPTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SPTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SPTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }

                Device (SEC0)
                {
                    Name (_ADR, 0x01)
                    Name (SSTM, Buffer (0x14)
                    {
                        0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
                        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
                        0x13, 0x00, 0x00, 0x00
                    })
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (SSTM)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, SSTM)
                    }

                    Device (MAST)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local0)
                            Return (Local0)
                        }
                    }
                }

                Method (DRMP, 0, NotSerialized)
                {
                    Store (0x0C, Local0)
                    If (LEqual (_ADR, 0x00100000))
                    {
                        Store (0x08, Local0)
                    }

                    ShiftRight (CPB0, Local0, Local1)
                    And (Local1, 0x0F, Local0)
                    Return (Local0)
                }
            }

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

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

                    Return (PR01)
                }
            }

            Device (MC97)
            {
                Name (_ADR, 0x000D0001)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x07, 0x04))
                }
            }

            Device (PCE0)
            {
                Name (_ADR, 0x00020000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR02)
                }
            }

            Device (PCE1)
            {
                Name (_ADR, 0x00030000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR03)
                }
            }

            Device (PCE2)
            {
                Name (_ADR, 0x00040000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR04)
                }
            }

            Device (PCE3)
            {
                Name (_ADR, 0x00170000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR05)
                }
            }

            Device (PCE4)
            {
                Name (_ADR, 0x00160000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR06)
                }
            }

            Device (PCE5)
            {
                Name (_ADR, 0x00150000)
                Method (_PRW, 0, NotSerialized)
                {
                    Return (GPRW (0x11, 0x04))
                }

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

                    Return (PR07)
                }
            }
        }

        Scope (\_GPE)
        {
            Method (_L10, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.SIOH ()
                Notify (\_SB.PWRB, 0x02)
            }

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

            Method (_L09, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.NSMB, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

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

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

            Method (_L00, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.PB2P, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L07, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.MC97, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }

            Method (_L11, 0, NotSerialized)
            {
                Notify (\_SB.PCI0.PCE0, 0x02)
                Notify (\_SB.PCI0.PCE1, 0x02)
                Notify (\_SB.PCI0.PCE2, 0x02)
                Notify (\_SB.PCI0.PCE3, 0x02)
                Notify (\_SB.PCI0.PCE4, 0x02)
                Notify (\_SB.PCI0.PCE5, 0x02)
                Notify (\_SB.PWRB, 0x02)
            }
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_UID, 0xAA)
            Name (_STA, 0x0B)
            Method (_PRW, 0, NotSerialized)
            {
                Return (GPRW (0x03, 0x04))
            }
        }
    }

    OperationRegion (\_SB.PCI0.SBRG.PIMC, PCI_Config, 0x7C, 0x0C)
    Field (\_SB.PCI0.SBRG.PIMC, ByteAcc, NoLock, Preserve)
    {
        PIRA,   4, 
        PIRB,   4, 
        PIRC,   4, 
        PIRD,   4, 
            ,   4, 
        PIRF,   4, 
        PIRG,   4, 
        Offset (0x05), 
        PIRM,   4, 
        PIU2,   4, 
        Offset (0x07), 
        SIID,   4, 
        PIID,   4, 
        PIU0,   4, 
        Offset (0x09), 
        PILN,   4, 
        Offset (0x0A), 
        PAUI,   4, 
        PIMO,   4, 
        PR0E,   4, 
        PR0F,   4
    }

    Scope (\_SB)
    {
        Name (BUFA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared) {15}
        })
        CreateWordField (BUFA, 0x01, ICRS)
        Method (LSTA, 1, NotSerialized)
        {
            If (Arg0)
            {
                Return (0x0B)
            }
            Else
            {
                Return (0x09)
            }
        }

        Method (LPRS, 2, NotSerialized)
        {
            If (PICM)
            {
                Return (Arg1)
            }
            Else
            {
                Return (Arg0)
            }
        }

        Method (LCRS, 1, NotSerialized)
        {
            If (PICM)
            {
                Name (BUFB, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared)
                    {
                        0x00000011,
                    }
                })
                CreateByteField (BUFB, 0x05, AIRQ)
                Store (Arg0, AIRQ)
                If (LEqual (Arg0, 0x01))
                {
                    Store (0x11, AIRQ)
                }

                If (LEqual (Arg0, 0x02))
                {
                    Store (0x12, AIRQ)
                }

                If (LEqual (Arg0, 0x08))
                {
                    Store (0x10, AIRQ)
                }

                If (LEqual (Arg0, 0x0D))
                {
                    Store (0x13, AIRQ)
                }

                Return (BUFB)
            }
            Else
            {
                ShiftLeft (0x01, Arg0, ICRS)
                Return (BUFA)
            }
        }

        Method (LCRO, 1, NotSerialized)
        {
            If (PICM)
            {
                Name (BUFB, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared)
                    {
                        0x00000014,
                    }
                })
                CreateByteField (BUFB, 0x05, AIRQ)
                Store (Arg0, AIRQ)
                If (LEqual (Arg0, 0x01))
                {
                    Store (0x17, AIRQ)
                }

                If (LEqual (Arg0, 0x02))
                {
                    Store (0x16, AIRQ)
                }

                If (LEqual (Arg0, 0x08))
                {
                    Store (0x14, AIRQ)
                }

                If (LEqual (Arg0, 0x0D))
                {
                    Store (0x15, AIRQ)
                }

                Return (BUFB)
            }
            Else
            {
                ShiftLeft (0x01, Arg0, ICRS)
                Return (BUFA)
            }
        }

        Method (LSRS, 1, NotSerialized)
        {
            If (PICM)
            {
                CreateByteField (Arg0, 0x05, SAIR)
                Store (SAIR, Local0)
                If (LEqual (Local0, 0x10))
                {
                    Store (0x08, Local0)
                }

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

                If (LEqual (Local0, 0x12))
                {
                    Store (0x02, Local0)
                }

                If (LEqual (Local0, 0x13))
                {
                    Store (0x0D, Local0)
                }

                Return (Local0)
            }
            Else
            {
                CreateWordField (Arg0, 0x01, ISRS)
                FindSetRightBit (ISRS, Local0)
                Return (Decrement (Local0))
            }
        }

        Method (LSRO, 1, NotSerialized)
        {
            If (PICM)
            {
                CreateByteField (Arg0, 0x05, SAIR)
                Store (SAIR, Local0)
                If (LEqual (Local0, 0x14))
                {
                    Store (0x08, Local0)
                }

                If (LEqual (Local0, 0x15))
                {
                    Store (0x0D, Local0)
                }

                If (LEqual (Local0, 0x16))
                {
                    Store (0x02, Local0)
                }

                If (LEqual (Local0, 0x17))
                {
                    Store (0x01, Local0)
                }

                Return (Local0)
            }
            Else
            {
                CreateWordField (Arg0, 0x01, ISRS)
                FindSetRightBit (ISRS, Local0)
                Return (Decrement (Local0))
            }
        }

        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x01)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIRA))
            }

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

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRS (PIRA))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRS (Arg0), PIRA)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIRB))
            }

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

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRS (PIRB))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRS (Arg0), PIRB)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIRC))
            }

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

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRS (PIRC))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRS (Arg0), PIRC)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIRD))
            }

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

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRS (PIRD))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRS (Arg0), PIRD)
            }
        }

        Device (LUB0)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x05)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIU0))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSB0, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIU0)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PIU0))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PIU0)
            }
        }

        Device (LUB2)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x07)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIU2))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSB2, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIU2)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PIU2))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PIU2)
            }
        }

        Device (LMAC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x08)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PILN))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSAC, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PILN)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PILN))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PILN)
            }
        }

        Device (LACI)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x09)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PAUI))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSCI, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PAUI)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PAUI))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PAUI)
            }
        }

        Device (LMC9)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0A)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIMO))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSC9, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIMO)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PIMO))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PIMO)
            }
        }

        Device (LSMB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0B)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIRM))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSMB, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIRM)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PIRM))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PIRM)
            }
        }

        Device (LSA0)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0C)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PIID))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSA0, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PIID)
                Store (0x00, PIRG)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (PIID))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), Local0)
                Store (Local0, PIID)
                Store (Local0, PIRG)
            }
        }

        Device (LSA1)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0D)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (SIID))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSA1, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, SIID)
                Store (0x00, PIRF)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (LCRO (SIID))
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), Local0)
                Store (Local0, SIID)
                Store (Local0, PIRF)
            }
        }

        Device (LATA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0E)
            Method (_STA, 0, NotSerialized)
            {
                Return (LSTA (PR0E))
            }

            Method (_PRS, 0, NotSerialized)
            {
                Return (LPRS (RSTA, RSII))
            }

            Method (_DIS, 0, NotSerialized)
            {
                Store (0x00, PR0E)
                Store (0x00, PR0F)
            }

            Method (_CRS, 0, NotSerialized)
            {
                If (OSFL ())
                {
                    Return (0x00)
                }
                Else
                {
                    Return (LCRO (PR0E))
                }
            }

            Method (_SRS, 1, NotSerialized)
            {
                Store (LSRO (Arg0), PR0E)
                Store (LSRO (Arg0), PR0F)
            }
        }
    }

    Scope (\_SB)
    {
        Name (XCPD, 0x00)
        Name (XNPT, 0x01)
        Name (XCAP, 0x02)
        Name (XDCP, 0x04)
        Name (XDCT, 0x08)
        Name (XDST, 0x0A)
        Name (XLCP, 0x0C)
        Name (XLCT, 0x10)
        Name (XLST, 0x12)
        Name (XSCP, 0x14)
        Name (XSCT, 0x18)
        Name (XSST, 0x1A)
        Name (XRCT, 0x1C)
        Mutex (MUTE, 0x00)
        Method (RBPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x01)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RWPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (RDPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Release (MUTE)
            Return (XCFG)
        }

        Method (WBPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x0FFF)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x01)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WWPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (WDPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Store (Arg1, XCFG)
            Release (MUTE)
        }

        Method (RWDP, 3, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, \PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            And (XCFG, Arg2, Local1)
            Or (Local1, Arg1, XCFG)
            Release (MUTE)
        }

        Method (RPME, 1, NotSerialized)
        {
            Add (Arg0, 0x84, Local0)
            Store (\_SB.RDPE (Local0), Local1)
            If (LEqual (Local1, 0xFFFFFFFF))
            {
                Return (0x00)
            }
            Else
            {
                If (LAnd (Local1, 0x00010000))
                {
                    \_SB.WDPE (Local0, And (Local1, 0x00010000))
                    Return (0x01)
                }

                Return (0x00)
            }
        }
    }

    Scope (\_SB.PCI0.SBRG.SIOR)
    {
        Device (IT87)
        {
            Name (_HID, EisaId ("PNP0C02"))
            Name (_UID, 0x00)
            Method (HWV0, 0, NotSerialized)
            {
                Return (Multiply (VIV0, 0x10))
            }

            Method (HWV1, 0, NotSerialized)
            {
                Return (Multiply (VIV1, 0x10))
            }

            Method (HWV2, 0, NotSerialized)
            {
                Return (Multiply (VIV2, 0x10))
            }

            Method (HWV3, 0, NotSerialized)
            {
                Return (Multiply (VIV3, 0x10))
            }

            Method (HWV4, 0, NotSerialized)
            {
                Return (Multiply (VIV4, 0x10))
            }

            Method (HWV5, 0, NotSerialized)
            {
                Return (Multiply (VIV5, 0x10))
            }

            Method (HWV6, 0, NotSerialized)
            {
                Return (Multiply (VIV6, 0x10))
            }

            Method (HWV7, 0, NotSerialized)
            {
                Return (Multiply (VIV7, 0x10))
            }

            Method (HWT1, 0, NotSerialized)
            {
                Store (TPI1, Local0)
                If (LGreater (Local0, 0x80))
                {
                    Subtract (0x0100, Local0, Local0)
                }

                Return (Multiply (Local0, 0x0A))
            }

            Method (HWT2, 0, NotSerialized)
            {
                Store (TPI2, Local0)
                If (LGreater (Local0, 0x80))
                {
                    Subtract (0x0100, Local0, Local0)
                }

                Return (Multiply (Local0, 0x0A))
            }

            Method (HWT3, 0, NotSerialized)
            {
                Store (TPI3, Local0)
                If (LGreater (Local0, 0x80))
                {
                    Subtract (0x0100, Local0, Local0)
                }

                Return (Multiply (Local0, 0x0A))
            }

            Method (HWF1, 0, NotSerialized)
            {
                And (ETDE, 0x01, Local0)
                While (0x01)
                {
                    ShiftLeft (0x01, FTD1, Local1)
                    If (LEqual (Local0, 0x01))
                    {
                        Add (Multiply (EFN1, 0x0100), FTC1, Local2)
                    }
                    Else
                    {
                        Store (FTC1, Local2)
                    }

                    If (LEqual (Local0, 0x01))
                    {
                        If (LNot (LLess (Local2, 0xF000)))
                        {
                            If (LNot (LEqual (Local1, 0x80)))
                            {
                                Add (FTD1, 0x01, FTD1)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x1000)))
                            {
                                If (LNot (LEqual (Local1, 0x01)))
                                {
                                    Subtract (FTD1, 0x01, FTD1)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                    Else
                    {
                        If (LNot (LLess (Local2, 0xF0)))
                        {
                            If (LNot (LEqual (Local1, 0x80)))
                            {
                                Add (FTD1, 0x01, FTD1)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x32)))
                            {
                                If (LNot (LEqual (Local1, 0x01)))
                                {
                                    Subtract (FTD1, 0x01, FTD1)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                }
            }

            Method (HWF2, 0, NotSerialized)
            {
                And (ETDE, 0x02, Local0)
                While (0x01)
                {
                    ShiftLeft (0x01, FTD2, Local1)
                    If (LEqual (Local0, 0x02))
                    {
                        Add (Multiply (EFN2, 0x0100), FTC2, Local2)
                    }
                    Else
                    {
                        Store (FTC2, Local2)
                    }

                    If (LEqual (Local0, 0x02))
                    {
                        If (LNot (LLess (Local2, 0xF000)))
                        {
                            If (LNot (LEqual (Local1, 0x80)))
                            {
                                Add (FTD2, 0x01, FTD2)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x1000)))
                            {
                                If (LNot (LEqual (Local1, 0x01)))
                                {
                                    Subtract (FTD2, 0x01, FTD2)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                    Else
                    {
                        If (LNot (LLess (Local2, 0xF0)))
                        {
                            If (LNot (LEqual (Local1, 0x80)))
                            {
                                Add (FTD2, 0x01, FTD2)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x32)))
                            {
                                If (LNot (LEqual (Local1, 0x01)))
                                {
                                    Subtract (FTD2, 0x01, FTD2)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                }
            }

            Method (HWF3, 0, NotSerialized)
            {
                And (ETDE, 0x04, Local0)
                While (0x01)
                {
                    If (LEqual (FTD3, 0x01))
                    {
                        Store (0x08, Local1)
                    }
                    Else
                    {
                        Store (0x02, Local1)
                    }

                    If (LEqual (Local0, 0x04))
                    {
                        Add (Multiply (EFN3, 0x0100), FTC3, Local2)
                    }
                    Else
                    {
                        Store (FTC3, Local2)
                    }

                    If (LEqual (Local0, 0x04))
                    {
                        If (LNot (LLess (Local2, 0xF000)))
                        {
                            If (LNot (LEqual (Local1, 0x08)))
                            {
                                Add (FTD3, 0x01, FTD3)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x1000)))
                            {
                                If (LNot (LEqual (Local1, 0x00)))
                                {
                                    Subtract (FTD3, 0x01, FTD3)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                    Else
                    {
                        If (LNot (LLess (Local2, 0xF0)))
                        {
                            If (LNot (LEqual (Local1, 0x08)))
                            {
                                Add (FTD3, 0x01, FTD3)
                                Sleep (0x64)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            If (LNot (LGreater (Local2, 0x10)))
                            {
                                If (LNot (LEqual (Local1, 0x00)))
                                {
                                    Subtract (FTD3, 0x01, FTD3)
                                    Sleep (0x64)
                                }
                                Else
                                {
                                    Return (0xFFFF)
                                }
                            }
                            Else
                            {
                                Divide (0x00149970, Multiply (Local1, Local2), , Local1)
                                Return (Local1)
                            }
                        }
                    }
                }
            }

            OperationRegion (ECRE, SystemIO, IOEB, 0x20)
            Field (ECRE, ByteAcc, NoLock, Preserve)
            {
                Offset (0x05), 
                HIDX,   8, 
                HDAT,   8
            }

            IndexField (HIDX, HDAT, ByteAcc, NoLock, Preserve)
            {
                Offset (0x0B), 
                FTD1,   3, 
                FTD2,   3, 
                FTD3,   1, 
                Offset (0x0C), 
                ETDE,   8, 
                FTC1,   8, 
                FTC2,   8, 
                FTC3,   8, 
                Offset (0x18), 
                EFN1,   8, 
                EFN2,   8, 
                EFN3,   8, 
                Offset (0x20), 
                VIV0,   8, 
                VIV1,   8, 
                VIV2,   8, 
                VIV3,   8, 
                VIV4,   8, 
                VIV5,   8, 
                VIV6,   8, 
                VIV7,   8, 
                Offset (0x29), 
                TPI1,   8, 
                TPI2,   8, 
                TPI3,   8
            }
        }
    }

    Scope (\)
    {
        Field (\RAMW, ByteAcc, NoLock, Preserve)
        {
            Offset (0x20), 
            CPUQ,   8, 
            CPVL,   16, 
            CPVH,   16, 
            CPVC,   1
        }
    }

    Scope (\_SB.PCI0.SBRG.ASOC)
    {
        Name (CORV, Package (0x05)
        {
            0x06020000, 
            "Vcore Voltage", 
            0x0320, 
            0x0708, 
            0x01
        })
        Name (V3VV, Package (0x05)
        {
            0x06020001, 
            " +3.3 Voltage", 
            0x0B9A, 
            0x0E2E, 
            0x01
        })
        Name (V5VV, Package (0x05)
        {
            0x06020002, 
            " +5 Voltage", 
            0x1194, 
            0x157C, 
            0x01
        })
        Name (VV12, Package (0x05)
        {
            0x06020003, 
            " +12 Voltage", 
            0x27D8, 
            0x35E8, 
            0x01
        })
        Name (VPAR, Package (0x04)
        {
            Package (0x03)
            {
                0x00, 
                0x01, 
                0x00
            }, 

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

            Package (0x03)
            {
                0x22, 
                0x32, 
                0x00
            }, 

            Package (0x03)
            {
                0x0F, 
                0x05, 
                0x00
            }
        })
        Name (VBUF, Package (0x05)
        {
            0x04, 
            CORV, 
            V3VV, 
            V5VV, 
            VV12
        })
        Method (VGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                Return (^^SIOR.IT87.HWV0 ())
            }

            If (LEqual (Arg0, 0x01))
            {
                Return (^^SIOR.IT87.HWV2 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.IT87.HWV3 ())
            }

            If (LEqual (Arg0, 0x03))
            {
                Return (^^SIOR.IT87.HWV4 ())
            }
        }

        Name (CPUT, Package (0x05)
        {
            0x06030000, 
            "CPU Temperature", 
            0x0258, 
            0x03B6, 
            0x00010001
        })
        Name (MBTP, Package (0x05)
        {
            0x06030001, 
            "MB Temperature", 
            0x01C2, 
            0x03B6, 
            0x00010001
        })
        Name (TBUF, Package (0x03)
        {
            0x02, 
            CPUT, 
            MBTP
        })
        Method (TGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                Return (^^SIOR.IT87.HWT1 ())
            }

            If (LEqual (Arg0, 0x01))
            {
                Return (^^SIOR.IT87.HWT2 ())
            }
        }

        Name (CPUF, Package (0x05)
        {
            0x06040000, 
            "CPU FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (CHA1, Package (0x05)
        {
            0x06040001, 
            "CHASSIS FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (PWRF, Package (0x05)
        {
            0x06040002, 
            "POWER FAN Speed", 
            0x0320, 
            0x1C20, 
            0x00010001
        })
        Name (FBUF, Package (0x04)
        {
            0x03, 
            CPUF, 
            CHA1, 
            PWRF
        })
        Method (FGET, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                Return (^^SIOR.IT87.HWF1 ())
            }

            If (LEqual (Arg0, 0x01))
            {
                Return (^^SIOR.IT87.HWF2 ())
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (^^SIOR.IT87.HWF3 ())
            }
        }

        Name (QBUF, Package (0x01)
        {
            0x00
        })
        Method (VSIF, 0, NotSerialized)
        {
            Return (VBUF)
        }

        Method (RVLT, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (VGET (Local0), Local1)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x00)), Local2)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x01)), Local3)
            Store (DerefOf (Index (DerefOf (Index (VPAR, Local0)), 0x02)), Local4)
            Multiply (Local1, Add (Local2, Local3), Local5)
            Divide (Local5, Local3, , Local5)
            Add (Local5, Local4, Local5)
            Return (Local5)
        }

        Method (SVLT, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, 0x00)), 0xFFFF, Local0)
            Store (DerefOf (Index (VBUF, 0x00)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (0x00)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, 0x01)), Index (DerefOf (Index (VBUF, Local0)), 0x01))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (VBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (VBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (VBUF, Local0)), 0x04))
            Return (0x01)
        }

        Method (TSIF, 0, NotSerialized)
        {
            Return (TBUF)
        }

        Method (RTMP, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (TGET (Local0), Local1)
            Return (Local1)
        }

        Method (STMP, 1, NotSerialized)
        {
            Store (And (DerefOf (Index (Arg0, 0x00)), 0xFFFF), Local0)
            Store (DerefOf (Index (TBUF, 0x00)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (0x00)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, 0x01)), Index (DerefOf (Index (TBUF, Local0)), 0x01))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (TBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (TBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (TBUF, Local0)), 0x04))
            Return (0x01)
        }

        Method (FSIF, 0, NotSerialized)
        {
            Return (FBUF)
        }

        Method (RFAN, 1, NotSerialized)
        {
            And (Arg0, 0xFFFF, Local0)
            Store (FGET (Local0), Local1)
            Return (Local1)
        }

        Method (SFAN, 1, NotSerialized)
        {
            And (DerefOf (Index (Arg0, 0x00)), 0xFFFF, Local0)
            Store (DerefOf (Index (FBUF, 0x00)), Local1)
            If (LNot (LLess (Local0, Local1)))
            {
                Return (0x00)
            }

            Increment (Local0)
            Store (DerefOf (Index (Arg0, 0x01)), Index (DerefOf (Index (FBUF, Local0)), 0x01))
            Store (DerefOf (Index (Arg0, 0x02)), Index (DerefOf (Index (FBUF, Local0)), 0x02))
            Store (DerefOf (Index (Arg0, 0x03)), Index (DerefOf (Index (FBUF, Local0)), 0x03))
            Store (DerefOf (Index (Arg0, 0x04)), Index (DerefOf (Index (FBUF, Local0)), 0x04))
            Return (0x01)
        }

        Method (QFIF, 0, NotSerialized)
        {
            If (LEqual (CPUQ, 0x00))
            {
                And (DerefOf (Index (QCFN, 0x05)), 0xFFFDFFFF, Local0)
                Store (Local0, Index (QCFN, 0x05))
            }
            Else
            {
                Or (DerefOf (Index (QCFN, 0x05)), 0x00020000, Local0)
                Store (Local0, Index (QCFN, 0x05))
            }

            Return (QBUF)
        }

        Method (GCQV, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x00))
            {
                Return (CPVL)
            }

            If (LEqual (Arg0, 0x01))
            {
                Return (CPVH)
            }

            If (LEqual (Arg0, 0x02))
            {
                Return (CPVC)
            }

            Return (0x00)
        }

        Method (QFST, 1, NotSerialized)
        {
            If (LEqual (Arg0, DerefOf (Index (QCFN, 0x00))))
            {
                Return (CQST)
            }

            Return (0x00)
        }
    }

    Scope (\_SB)
    {
        Scope (PCI0)
        {
            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,
                    0x0000,
                    0x00FF,
                    0x0000,
                    0x0100)
                IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,
                    0x0000,
                    0x0CF7,
                    0x0000,
                    0x0CF8)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,
                    0x0D00,
                    0xFFFF,
                    0x0000,
                    0xF300)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x000A0000,
                    0x000BFFFF,
                    0x00000000,
                    0x00020000)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x000C0000,
                    0x000DFFFF,
                    0x00000000,
                    0x00020000)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x00000000,
                    0x00000000,
                    0x00000000,
                    0x00000000)
            })
            CreateDWordField (CRS, 0x5C, MIN5)
            CreateDWordField (CRS, 0x60, MAX5)
            CreateDWordField (CRS, 0x68, LEN5)
            CreateDWordField (CRS, 0x76, MIN6)
            CreateDWordField (CRS, 0x7A, MAX6)
            CreateDWordField (CRS, 0x82, LEN6)
            Method (_CRS, 0, NotSerialized)
            {
                Store (MG1L, Local0)
                If (Local0)
                {
                    Store (MG1B, MIN5)
                    Store (MG1L, LEN5)
                    Add (MIN5, Decrement (Local0), MAX5)
                }

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

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

        Store (ASSB, WSSB)
        Store (AOTB, WOTB)
        Store (AAXB, WAXB)
        Store (Arg0, ASSB)
        Store (OSFL (), AOTB)
        Store (Zero, AAXB)
    }

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

        If (DerefOf (Index (WAKP, 0x00)))
        {
            Store (0x00, Index (WAKP, 0x01))
        }
        Else
        {
            Store (Arg0, Index (WAKP, 0x01))
        }

        Return (WAKP)
    }

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    If (SS1)
    {
        Name (\_S1, Package (0x04)
        {
            0x01, 
            0x00, 
            0x00, 
            0x00
        })
    }

    If (SS3)
    {
        Name (\_S3, Package (0x04)
        {
            0x05, 
            0x00, 
            0x00, 
            0x00
        })
    }

    If (SS4)
    {
        Name (\_S4, Package (0x04)
        {
            0x06, 
            0x00, 
            0x00, 
            0x00
        })
    }

    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.PCI0.SBRG.SIOS (Arg0)
            \_SB.PCI0.NB2N.NPTS (Arg0)
            \_SB.PCI0.SBRG.SPTS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        \_SB.PCI0.SBRG.SIOW (Arg0)
        \_SB.PCI0.NB2N.NWAK (Arg0)
        \_SB.PCI0.SBRG.SWAK (Arg0)
    }
}



More information about the freebsd-stable mailing list